From a93d721405ab08a677fc30dc78b9a3f9498adcd8 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Thu, 25 Jul 2024 07:35:11 +0100 Subject: [PATCH 01/31] Buffer fix --- .../SourceGenerators.csproj | 2 +- .../Components/Devices/MIDI/MIDI_InputDevice.cs | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ProjectObsidian.SourceGenerators/SourceGenerators.csproj b/ProjectObsidian.SourceGenerators/SourceGenerators.csproj index b8f50eb..7243b3d 100644 --- a/ProjectObsidian.SourceGenerators/SourceGenerators.csproj +++ b/ProjectObsidian.SourceGenerators/SourceGenerators.csproj @@ -4,6 +4,6 @@ latest - + \ No newline at end of file diff --git a/ProjectObsidian/Components/Devices/MIDI/MIDI_InputDevice.cs b/ProjectObsidian/Components/Devices/MIDI/MIDI_InputDevice.cs index c8c7cec..fb3e8e2 100644 --- a/ProjectObsidian/Components/Devices/MIDI/MIDI_InputDevice.cs +++ b/ProjectObsidian/Components/Devices/MIDI/MIDI_InputDevice.cs @@ -6,6 +6,7 @@ using Commons.Music.Midi; using Obsidian.Elements; using Obsidian; +using System; namespace Components.Devices.MIDI; @@ -56,7 +57,7 @@ public class MIDI_InputDevice : Component public event MIDI_SystemRealtimeEventHandler Reset; - private const bool DEBUG = false; + private const bool DEBUG = true; private struct TimestampedMidiEvent { @@ -325,6 +326,8 @@ private async void OnMessageReceived(object sender, MidiReceivedEventArgs args) if (DEBUG) UniLog.Log($"*** New midi message"); if (DEBUG) UniLog.Log($"* Received {args.Length} bytes"); if (DEBUG) UniLog.Log($"* Timestamp: {args.Timestamp}"); + var msNow = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + if (DEBUG) UniLog.Log($"* DateTime ms: {msNow}"); var events = MidiEvent.Convert(args.Data, args.Start, args.Length); @@ -412,14 +415,14 @@ private async void OnMessageReceived(object sender, MidiReceivedEventArgs args) // buffer CC messages because consecutive ones may need to be combined // also buffer Program messages - _eventBuffer.Add(new TimestampedMidiEvent(e, args.Timestamp)); + _eventBuffer.Add(new TimestampedMidiEvent(e, msNow)); _bufferedMessagesToHandle += 1; } - if (events.Count() > 0 && args.Timestamp - _lastMessageBufferStartTime > MESSAGE_BUFFER_TIME_MILLISECONDS) + if (events.Count() > 0 && msNow - _lastMessageBufferStartTime > MESSAGE_BUFFER_TIME_MILLISECONDS) { - _lastMessageBufferStartTime = args.Timestamp; - if (DEBUG) UniLog.Log("* New message batch created: " + args.Timestamp.ToString()); + _lastMessageBufferStartTime = msNow; + if (DEBUG) UniLog.Log("* New message batch created: " + msNow.ToString()); await Task.Delay((int)MESSAGE_BUFFER_TIME_MILLISECONDS); FlushMessageBuffer(); } From dcd9a2811a5977204b6f5ce89778b41529e21c3e Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 27 Sep 2025 12:25:22 +0100 Subject: [PATCH 02/31] Attempt Linux fixes --- ProjectObsidian/Components/Devices/MIDI/MIDI_InputDevice.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ProjectObsidian/Components/Devices/MIDI/MIDI_InputDevice.cs b/ProjectObsidian/Components/Devices/MIDI/MIDI_InputDevice.cs index fb3e8e2..c2140cc 100644 --- a/ProjectObsidian/Components/Devices/MIDI/MIDI_InputDevice.cs +++ b/ProjectObsidian/Components/Devices/MIDI/MIDI_InputDevice.cs @@ -321,6 +321,8 @@ private void FlushMessageBuffer() _bufferedMessagesToHandle = 0; } + private byte _lastStatusByte; + private async void OnMessageReceived(object sender, MidiReceivedEventArgs args) { if (DEBUG) UniLog.Log($"*** New midi message"); @@ -331,6 +333,8 @@ private async void OnMessageReceived(object sender, MidiReceivedEventArgs args) var events = MidiEvent.Convert(args.Data, args.Start, args.Length); + if (DEBUG) UniLog.Log($"* Number of events: {events.Count()}"); + if (args.Length == 1) { // system realtime message, do not buffer these, execute immediately @@ -380,6 +384,7 @@ private async void OnMessageReceived(object sender, MidiReceivedEventArgs args) { var str = e.ToString(); if (DEBUG) UniLog.Log("* " + str); + if (DEBUG) UniLog.Log("* Status byte: " + e.StatusByte.ToString()); switch (e.EventType) { From 074c92ba678dea085c9e0c6dace3fd9fdbd2febd Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 27 Sep 2025 12:27:05 +0100 Subject: [PATCH 03/31] ignore .vscode --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e30e459..a016231 100644 --- a/.gitignore +++ b/.gitignore @@ -352,4 +352,6 @@ MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ -.idea \ No newline at end of file +.idea + +.vscode/ From 4f13278d76d5af45ddd5dfbb4be23a9e09ac7983 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 27 Sep 2025 12:49:41 +0100 Subject: [PATCH 04/31] Add source gen submodule --- ProjectObsidian.SourceGenerators | 1 + 1 file changed, 1 insertion(+) create mode 160000 ProjectObsidian.SourceGenerators diff --git a/ProjectObsidian.SourceGenerators b/ProjectObsidian.SourceGenerators new file mode 160000 index 0000000..b1494c8 --- /dev/null +++ b/ProjectObsidian.SourceGenerators @@ -0,0 +1 @@ +Subproject commit b1494c859321e7462b2b70e96c7e0ad7947dc84c From 56bc5046638c7ba7386a3cfacb92c2476fb75a64 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 27 Sep 2025 13:57:13 +0100 Subject: [PATCH 05/31] Restore linux fixes and add alsa-lib --- ProjectObsidian/Elements/MIDI.cs | 16 +- lib/Project Obsidian Licenses.txt | 506 +++++++++++++++++++++++++++++- lib/libasound.so | Bin 0 -> 948856 bytes 3 files changed, 516 insertions(+), 6 deletions(-) create mode 100755 lib/libasound.so diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index ac71c29..18364bd 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -74,7 +74,7 @@ public class MidiInputConnection private int _bufferedMessagesToHandle = 0; - private const bool DEBUG = false; + private const bool DEBUG = true; public void Initialize() { @@ -193,8 +193,13 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) if (DEBUG) UniLog.Log($"* Received {args.Length} bytes"); if (DEBUG) UniLog.Log($"* Timestamp: {args.Timestamp}"); + var msNow = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + if (DEBUG) UniLog.Log($"* DateTime ms: {msNow}"); + var events = MidiEvent.Convert(args.Data, args.Start, args.Length); + if (DEBUG) UniLog.Log($"* Number of events: {events.Count()}"); + if (args.Length == 1) { // system realtime message, do not buffer these, execute immediately @@ -203,6 +208,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) { var str = e.ToString(); if (DEBUG) UniLog.Log("* " + str); + if (DEBUG) UniLog.Log("* Status byte: " + e.StatusByte.ToString()); switch (e.StatusByte) { case MidiEvent.MidiClock: @@ -279,14 +285,14 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) // buffer CC messages because consecutive ones may need to be combined // also buffer Program messages - _eventBuffer.Add(new TimestampedMidiEvent(e, args.Timestamp)); + _eventBuffer.Add(new TimestampedMidiEvent(e, msNow)); _bufferedMessagesToHandle += 1; } - if (events.Count() > 0 && args.Timestamp - _lastMessageBufferStartTime > MESSAGE_BUFFER_TIME_MILLISECONDS) + if (events.Count() > 0 && msNow - _lastMessageBufferStartTime > MESSAGE_BUFFER_TIME_MILLISECONDS) { - _lastMessageBufferStartTime = args.Timestamp; - if (DEBUG) UniLog.Log("* New message batch created: " + args.Timestamp.ToString()); + _lastMessageBufferStartTime = msNow; + if (DEBUG) UniLog.Log("* New message batch created: " + msNow.ToString()); await Task.Delay((int)MESSAGE_BUFFER_TIME_MILLISECONDS); FlushMessageBuffer(); } diff --git a/lib/Project Obsidian Licenses.txt b/lib/Project Obsidian Licenses.txt index 56477a4..fbc5666 100644 --- a/lib/Project Obsidian Licenses.txt +++ b/lib/Project Obsidian Licenses.txt @@ -84,6 +84,446 @@ THE SOFTWARE. --- +alsa-lib: + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. Project Obsidian: GNU GENERAL PUBLIC LICENSE @@ -759,4 +1199,68 @@ into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. \ No newline at end of file +. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/lib/libasound.so b/lib/libasound.so new file mode 100755 index 0000000000000000000000000000000000000000..7ccd5d1737ad18e1edbf86e60ca7d0bf022e35c1 GIT binary patch literal 948856 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
G`g~(`hv=2 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 literal 0 HcmV?d00001 From e87f121c552709ccf61206623b4191f18ac3de5f Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 27 Sep 2025 16:49:13 +0100 Subject: [PATCH 06/31] Added running status --- ProjectObsidian/Elements/MIDI.cs | 162 +++++++++++++++++-------------- 1 file changed, 87 insertions(+), 75 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 211f4f3..abbfd65 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -8,17 +8,21 @@ using Elements.Core; using FrooxEngine; using Elements.Data; +using System.Threading; +using System.Runtime.InteropServices; namespace Obsidian.Elements; -public struct TimestampedMidiEvent +public struct BufferedMidiEvent { + public byte runningStatus; public MidiEvent midiEvent; public long timestamp; - public TimestampedMidiEvent(MidiEvent _midiEvent, long _timestamp) + public BufferedMidiEvent(MidiEvent _midiEvent, long _timestamp, byte _runningStatus) { midiEvent = _midiEvent; timestamp = _timestamp; + runningStatus = _runningStatus; } } @@ -65,14 +69,15 @@ public class MidiInputConnection public List Listeners = new(); - // I am using this like a Queue so it could possibly be turned into a Queue instead... - private List _eventBuffer = new(); + private List _eventBuffer = new(); - private const long MESSAGE_BUFFER_TIME_MILLISECONDS = 3; + private const long BUFFER_TIME_MILLISECONDS = 3; - private long _lastMessageBufferStartTime = 0; + private long _lastEventBufferStartTime = 0; - private int _bufferedMessagesToHandle = 0; + private int _bufferedEventsToHandle = 0; + + private byte runningStatus; private const bool DEBUG = true; @@ -80,8 +85,8 @@ public void Initialize() { Input = null; _eventBuffer.Clear(); - _lastMessageBufferStartTime = 0; - _bufferedMessagesToHandle = 0; + _lastEventBufferStartTime = 0; + _bufferedEventsToHandle = 0; Listeners.Clear(); } @@ -100,7 +105,7 @@ private bool IsCCFineMessage() if (_eventBuffer.Count == 0) return false; long timestamp = _eventBuffer[0].timestamp; if (_eventBuffer.Count >= 2 - && _eventBuffer[0].midiEvent.EventType == MidiEvent.CC && _eventBuffer[1].midiEvent.EventType == MidiEvent.CC + && _eventBuffer[0].runningStatus == MidiEvent.CC && _eventBuffer[1].runningStatus == MidiEvent.CC && _eventBuffer[0].midiEvent.Msb == _eventBuffer[1].midiEvent.Msb - 32) { return true; @@ -121,7 +126,6 @@ private void FlushMessageBuffer() while (_eventBuffer.Count > 0) { - while (IsCCFineMessage()) { var e1 = _eventBuffer[0].midiEvent; @@ -132,14 +136,14 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log($"CC fine. Value: " + finalValue.ToString()); Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e1.Channel, e1.Msb, finalValue, _coarse: false))); _eventBuffer.RemoveRange(0, 2); - _bufferedMessagesToHandle -= 2; + _bufferedEventsToHandle -= 2; } if (_eventBuffer.Count == 0) break; var e = _eventBuffer[0].midiEvent; if (DEBUG) UniLog.Log(e.ToString()); - switch (e.EventType) + switch (_eventBuffer[0].runningStatus) { case MidiEvent.CC: if (DEBUG) UniLog.Log("CC"); @@ -174,86 +178,90 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log("UnhandledEvent: TuneRequest"); break; default: + if (DEBUG) UniLog.Log($"UnhandledEvent default! {_eventBuffer[0].runningStatus}"); break; } _eventBuffer.RemoveAt(0); - _bufferedMessagesToHandle -= 1; + _bufferedEventsToHandle -= 1; } if (DEBUG) UniLog.Log("Finished flushing message buffer from start time: " + batchStartTime.ToString()); - if (_bufferedMessagesToHandle != 0) + if (_bufferedEventsToHandle != 0) { - // Just in case some messages got lost somehow - UniLog.Warning("Did not handle all buffered messages! " + _bufferedMessagesToHandle.ToString()); + // Just in case + throw new Exception("Did not handle all events in the buffer! " + _bufferedEventsToHandle.ToString()); } - _bufferedMessagesToHandle = 0; + _bufferedEventsToHandle = 0; } public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) { if (DEBUG) UniLog.Log($"*** New midi message"); if (DEBUG) UniLog.Log($"* Received {args.Length} bytes"); - if (DEBUG) UniLog.Log($"* Timestamp: {args.Timestamp}"); - var msNow = DateTimeOffset.Now.ToUnixTimeMilliseconds(); - if (DEBUG) UniLog.Log($"* DateTime ms: {msNow}"); + long timestamp = args.Timestamp; + if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && timestamp == 0) + { + timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + } + + if (DEBUG) UniLog.Log($"* Timestamp: {timestamp}"); var events = MidiEvent.Convert(args.Data, args.Start, args.Length); if (DEBUG) UniLog.Log($"* Number of events: {events.Count()}"); - if (args.Length == 1) - { - // system realtime message, do not buffer these, execute immediately - if (DEBUG) UniLog.Log($"* System realtime message"); - foreach (var e in events) - { - var str = e.ToString(); - if (DEBUG) UniLog.Log("* " + str); - if (DEBUG) UniLog.Log("* Status byte: " + e.StatusByte.ToString()); - switch (e.StatusByte) - { - case MidiEvent.MidiClock: - if (DEBUG) UniLog.Log("* MidiClock"); - Listeners.ForEach(l => l.TriggerMidiClock(new MIDI_SystemRealtimeEventData())); - break; - case MidiEvent.MidiTick: - if (DEBUG) UniLog.Log("* MidiTick"); - Listeners.ForEach(l => l.TriggerMidiTick(new MIDI_SystemRealtimeEventData())); - break; - case MidiEvent.MidiStart: - if (DEBUG) UniLog.Log("* MidiStart"); - Listeners.ForEach(l => l.TriggerMidiStart(new MIDI_SystemRealtimeEventData())); - break; - case MidiEvent.MidiStop: - if (DEBUG) UniLog.Log("* MidiStop"); - Listeners.ForEach(l => l.TriggerMidiStop(new MIDI_SystemRealtimeEventData())); - break; - case MidiEvent.MidiContinue: - if (DEBUG) UniLog.Log("* MidiContinue"); - Listeners.ForEach(l => l.TriggerMidiContinue(new MIDI_SystemRealtimeEventData())); - break; - case MidiEvent.ActiveSense: - if (DEBUG) UniLog.Log("* ActiveSense"); - Listeners.ForEach(l => l.TriggerActiveSense(new MIDI_SystemRealtimeEventData())); - break; - case MidiEvent.Reset: - // Same as Meta - if (DEBUG) UniLog.Log("* Reset"); - Listeners.ForEach(l => l.TriggerReset(new MIDI_SystemRealtimeEventData())); - break; - } - } - return; - } - - // other types of messages: channel message (voice or channel mode), system common message, system exclusive message foreach (var e in events) { var str = e.ToString(); if (DEBUG) UniLog.Log("* " + str); - switch (e.EventType) + byte realStatusByte; + if (e.StatusByte >= 128) { + if (DEBUG) UniLog.Log("* New event type"); + runningStatus = e.StatusByte; + } + else + { + if (DEBUG) UniLog.Log("* Is running status"); + } + + realStatusByte = runningStatus; + + switch (realStatusByte) + { + // System realtime + case MidiEvent.MidiClock: + if (DEBUG) UniLog.Log("* MidiClock"); + Listeners.ForEach(l => l.TriggerMidiClock(new MIDI_SystemRealtimeEventData())); + return; + case MidiEvent.MidiTick: + if (DEBUG) UniLog.Log("* MidiTick"); + Listeners.ForEach(l => l.TriggerMidiTick(new MIDI_SystemRealtimeEventData())); + return; + case MidiEvent.MidiStart: + if (DEBUG) UniLog.Log("* MidiStart"); + Listeners.ForEach(l => l.TriggerMidiStart(new MIDI_SystemRealtimeEventData())); + return; + case MidiEvent.MidiStop: + if (DEBUG) UniLog.Log("* MidiStop"); + Listeners.ForEach(l => l.TriggerMidiStop(new MIDI_SystemRealtimeEventData())); + return; + case MidiEvent.MidiContinue: + if (DEBUG) UniLog.Log("* MidiContinue"); + Listeners.ForEach(l => l.TriggerMidiContinue(new MIDI_SystemRealtimeEventData())); + return; + case MidiEvent.ActiveSense: + if (DEBUG) UniLog.Log("* ActiveSense"); + Listeners.ForEach(l => l.TriggerActiveSense(new MIDI_SystemRealtimeEventData())); + return; + case MidiEvent.Reset: + // Same as Meta + if (DEBUG) UniLog.Log("* Reset"); + Listeners.ForEach(l => l.TriggerReset(new MIDI_SystemRealtimeEventData())); + return; + + // other types of messages: channel message (voice or channel mode), system common message, system exclusive message case MidiEvent.NoteOn: if (DEBUG) UniLog.Log("* NoteOn"); if (e.Lsb == 0) @@ -286,16 +294,20 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) // buffer CC messages because consecutive ones may need to be combined // also buffer Program messages - _eventBuffer.Add(new TimestampedMidiEvent(e, msNow)); - _bufferedMessagesToHandle += 1; + lock (_eventBuffer) + { + _eventBuffer.Add(new BufferedMidiEvent(e, timestamp, realStatusByte)); + _bufferedEventsToHandle += 1; + } } - if (events.Count() > 0 && msNow - _lastMessageBufferStartTime > MESSAGE_BUFFER_TIME_MILLISECONDS) + if (events.Count() > 0 && timestamp - _lastEventBufferStartTime > BUFFER_TIME_MILLISECONDS) { - _lastMessageBufferStartTime = msNow; - if (DEBUG) UniLog.Log("* New message batch created: " + msNow.ToString()); - await Task.Delay((int)MESSAGE_BUFFER_TIME_MILLISECONDS); - FlushMessageBuffer(); + _lastEventBufferStartTime = timestamp; + if (DEBUG) UniLog.Log("* New message batch created: " + timestamp.ToString()); + await Task.Delay((int)BUFFER_TIME_MILLISECONDS); + lock (_eventBuffer) + FlushMessageBuffer(); } } } From 52e1ac4220cc36a75a5f7dacd2d31837dcb68802 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 27 Sep 2025 17:07:43 +0100 Subject: [PATCH 07/31] Check fixed data size --- ProjectObsidian/Elements/MIDI.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index abbfd65..021473c 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -215,20 +215,28 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) var str = e.ToString(); if (DEBUG) UniLog.Log("* " + str); - byte realStatusByte; + byte actualEventType; if (e.StatusByte >= 128) { if (DEBUG) UniLog.Log("* New event type"); - runningStatus = e.StatusByte; + if (MidiEvent.FixedDataSize(e.StatusByte) == 0) + { + runningStatus = e.StatusByte; + } + else + { + runningStatus = e.EventType; + } } else { if (DEBUG) UniLog.Log("* Is running status"); } - realStatusByte = runningStatus; + actualEventType = runningStatus; + if (DEBUG) UniLog.Log($"* Actual event type: {string.Format("hex: {0:X02}", actualEventType)}, dec: {actualEventType}"); - switch (realStatusByte) + switch (actualEventType) { // System realtime case MidiEvent.MidiClock: @@ -296,7 +304,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) // also buffer Program messages lock (_eventBuffer) { - _eventBuffer.Add(new BufferedMidiEvent(e, timestamp, realStatusByte)); + _eventBuffer.Add(new BufferedMidiEvent(e, timestamp, actualEventType)); _bufferedEventsToHandle += 1; } } From 8cd4c3a22cf6825b7de4b3c65e027bbef0d5df92 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 27 Sep 2025 19:25:41 +0100 Subject: [PATCH 08/31] Use better struct for running status events --- ProjectObsidian/Elements/MIDI.cs | 156 +++++++++++++++++++++++-------- 1 file changed, 118 insertions(+), 38 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 021473c..a4cfff9 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -10,19 +10,62 @@ using Elements.Data; using System.Threading; using System.Runtime.InteropServices; +using Microsoft.VisualBasic; namespace Obsidian.Elements; -public struct BufferedMidiEvent +public struct TimestampedMyMidiEvent { - public byte runningStatus; - public MidiEvent midiEvent; + public MyMidiEvent myMidiEvent; public long timestamp; - public BufferedMidiEvent(MidiEvent _midiEvent, long _timestamp, byte _runningStatus) + public TimestampedMyMidiEvent(MyMidiEvent _myMidiEvent, long _timestamp) { - midiEvent = _midiEvent; + myMidiEvent = _myMidiEvent; timestamp = _timestamp; - runningStatus = _runningStatus; + } +} + +public struct MyMidiEvent +{ + public bool isRunningStatus; + public byte actualEventType; + public byte msb; + public byte lsb; + public byte channel => (byte)(actualEventType & 0xF); + public byte[] extraData; + public int extraDataLength; + public int extraDataOffset; + public MyMidiEvent(byte _actualEventType, byte _msb, byte _lsb, bool _isRunningStatus) + { + actualEventType = _actualEventType; + isRunningStatus = _isRunningStatus; + msb = _msb; + lsb = _lsb; + } + public MyMidiEvent(byte _actualEventType, byte _msb, byte _lsb, byte[] _extraData, int _extraDataOffset, int _extraDataLength) + { + actualEventType = _actualEventType; + msb = _msb; + lsb = _lsb; + extraData = _extraData; + extraDataOffset = _extraDataOffset; + extraDataLength = _extraDataLength; + } + public override string ToString() + { + object[] obj = new object[4] { actualEventType, msb, lsb, null }; + object obj2; + if (extraData == null) + { + obj2 = ""; + } + else + { + obj2 = "[data:" + extraDataLength + "]"; + } + + obj[3] = obj2; + return string.Format("{0:X02}:{1:X02}:{2:X02}{3}", obj); } } @@ -69,7 +112,7 @@ public class MidiInputConnection public List Listeners = new(); - private List _eventBuffer = new(); + private List _eventBuffer = new(); private const long BUFFER_TIME_MILLISECONDS = 3; @@ -103,10 +146,10 @@ private ushort CombineBytes(byte First, byte Second) private bool IsCCFineMessage() { if (_eventBuffer.Count == 0) return false; - long timestamp = _eventBuffer[0].timestamp; + //long timestamp = _eventBuffer[0].timestamp; if (_eventBuffer.Count >= 2 - && _eventBuffer[0].runningStatus == MidiEvent.CC && _eventBuffer[1].runningStatus == MidiEvent.CC - && _eventBuffer[0].midiEvent.Msb == _eventBuffer[1].midiEvent.Msb - 32) + && _eventBuffer[0].myMidiEvent.actualEventType == MidiEvent.CC && _eventBuffer[1].myMidiEvent.actualEventType == MidiEvent.CC + && _eventBuffer[0].myMidiEvent.msb == _eventBuffer[1].myMidiEvent.msb - 32) { return true; } @@ -128,31 +171,31 @@ private void FlushMessageBuffer() { while (IsCCFineMessage()) { - var e1 = _eventBuffer[0].midiEvent; + var e1 = _eventBuffer[0]; if (DEBUG) UniLog.Log(e1.ToString()); - var e2 = _eventBuffer[1].midiEvent; + var e2 = _eventBuffer[1]; if (DEBUG) UniLog.Log(e2.ToString()); - var finalValue = CombineBytes(e2.Lsb, e1.Lsb); + var finalValue = CombineBytes(e2.myMidiEvent.lsb, e1.myMidiEvent.lsb); if (DEBUG) UniLog.Log($"CC fine. Value: " + finalValue.ToString()); - Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e1.Channel, e1.Msb, finalValue, _coarse: false))); + Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e1.myMidiEvent.channel, e1.myMidiEvent.msb, finalValue, _coarse: false))); _eventBuffer.RemoveRange(0, 2); _bufferedEventsToHandle -= 2; } if (_eventBuffer.Count == 0) break; - var e = _eventBuffer[0].midiEvent; + var e = _eventBuffer[0]; if (DEBUG) UniLog.Log(e.ToString()); - switch (_eventBuffer[0].runningStatus) + switch (_eventBuffer[0].myMidiEvent.actualEventType) { case MidiEvent.CC: if (DEBUG) UniLog.Log("CC"); - Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e.Channel, e.Msb, e.Lsb, _coarse: true))); + Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e.myMidiEvent.channel, e.myMidiEvent.msb, e.myMidiEvent.lsb, _coarse: true))); break; // Program events are buffered because they can be sent after a CC fine message for Bank Select, one of my devices sends consecutively: CC (Bank Select) -> CC (Bank Select Lsb) -> Program for some buttons case MidiEvent.Program: if (DEBUG) UniLog.Log("Program"); - Listeners.ForEach(l => l.TriggerProgram(new MIDI_ProgramEventData(e.Channel, e.Msb))); + Listeners.ForEach(l => l.TriggerProgram(new MIDI_ProgramEventData(e.myMidiEvent.channel, e.myMidiEvent.msb))); break; // Unhandled events: @@ -178,7 +221,7 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log("UnhandledEvent: TuneRequest"); break; default: - if (DEBUG) UniLog.Log($"UnhandledEvent default! {_eventBuffer[0].runningStatus}"); + if (DEBUG) UniLog.Log($"UnhandledEvent default! {_eventBuffer[0].myMidiEvent.actualEventType}"); break; } _eventBuffer.RemoveAt(0); @@ -193,10 +236,54 @@ private void FlushMessageBuffer() _bufferedEventsToHandle = 0; } + private IEnumerable ConvertWithRunningStatus(byte[] bytes, int index, int size) + { + int i = index; + int end = index + size; + byte status = runningStatus; + while (i < end) + { + if (bytes[i] >= 128) + { + // End of running status + status = bytes[i]; + if (status == 240) + { + yield return new MyMidiEvent(240, 0, 0, bytes, index, size); + i += size; + continue; + } + var z = MidiEvent.FixedDataSize(status); + if (end < i + z) + { + throw new Exception($"Received data was incomplete to build MIDI status message for '{status:X}' status."); + } + yield return new MyMidiEvent(status, (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0), false); + i += z + 1; + } + else + { + // Running status + var z = MidiEvent.FixedDataSize(status); + if (end < i + z) + { + throw new Exception($"Received data was incomplete to build MIDI status message for '{status:X}' status."); + } + yield return new MyMidiEvent(status, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0), true); + i += z; + } + } + } + public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) { if (DEBUG) UniLog.Log($"*** New midi message"); if (DEBUG) UniLog.Log($"* Received {args.Length} bytes"); + if (DEBUG) UniLog.Log($"* Start: {args.Start}"); + + if (DEBUG) UniLog.Log($"* {string.Join(",", args.Data.Skip(args.Start).Take(args.Length).Select(b => string.Format("{0:X}", b)))}"); + + UniLog.FlushEveryMessage = true; long timestamp = args.Timestamp; if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && timestamp == 0) @@ -206,7 +293,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) if (DEBUG) UniLog.Log($"* Timestamp: {timestamp}"); - var events = MidiEvent.Convert(args.Data, args.Start, args.Length); + var events = ConvertWithRunningStatus(args.Data, args.Start, args.Length); if (DEBUG) UniLog.Log($"* Number of events: {events.Count()}"); @@ -216,17 +303,10 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) if (DEBUG) UniLog.Log("* " + str); byte actualEventType; - if (e.StatusByte >= 128) + if (!e.isRunningStatus) { if (DEBUG) UniLog.Log("* New event type"); - if (MidiEvent.FixedDataSize(e.StatusByte) == 0) - { - runningStatus = e.StatusByte; - } - else - { - runningStatus = e.EventType; - } + runningStatus = e.actualEventType; } else { @@ -234,7 +314,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) } actualEventType = runningStatus; - if (DEBUG) UniLog.Log($"* Actual event type: {string.Format("hex: {0:X02}", actualEventType)}, dec: {actualEventType}"); + if (DEBUG) UniLog.Log($"* Actual event type: {string.Format("{0:X02}", actualEventType)}, dec: {actualEventType}"); switch (actualEventType) { @@ -272,29 +352,29 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) // other types of messages: channel message (voice or channel mode), system common message, system exclusive message case MidiEvent.NoteOn: if (DEBUG) UniLog.Log("* NoteOn"); - if (e.Lsb == 0) + if (e.lsb == 0) { if (DEBUG) UniLog.Log("* Zero velocity, so it's actually a NoteOff"); - Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.Channel, e.Msb, e.Lsb))); + Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channel, e.msb, e.lsb))); return; } - Listeners.ForEach(l => l.TriggerNoteOn(new MIDI_NoteEventData(e.Channel, e.Msb, e.Lsb))); + Listeners.ForEach(l => l.TriggerNoteOn(new MIDI_NoteEventData(e.channel, e.msb, e.lsb))); return; case MidiEvent.NoteOff: if (DEBUG) UniLog.Log("* NoteOff"); - Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.Channel, e.Msb, e.Lsb))); + Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channel, e.msb, e.lsb))); return; case MidiEvent.CAf: if (DEBUG) UniLog.Log("* CAf"); - Listeners.ForEach(l => l.TriggerChannelAftertouch(new MIDI_ChannelAftertouchEventData(e.Channel, e.Msb))); + Listeners.ForEach(l => l.TriggerChannelAftertouch(new MIDI_ChannelAftertouchEventData(e.channel, e.msb))); return; case MidiEvent.Pitch: if (DEBUG) UniLog.Log("* Pitch"); - Listeners.ForEach(l => l.TriggerPitchWheel(new MIDI_PitchWheelEventData(e.Channel, CombineBytes(e.Msb, e.Lsb)))); + Listeners.ForEach(l => l.TriggerPitchWheel(new MIDI_PitchWheelEventData(e.channel, CombineBytes(e.msb, e.lsb)))); return; case MidiEvent.PAf: if (DEBUG) UniLog.Log("* PAf"); - Listeners.ForEach(l => l.TriggerPolyphonicAftertouch(new MIDI_PolyphonicAftertouchEventData(e.Channel, e.Msb, e.Lsb))); + Listeners.ForEach(l => l.TriggerPolyphonicAftertouch(new MIDI_PolyphonicAftertouchEventData(e.channel, e.msb, e.lsb))); return; default: break; @@ -304,7 +384,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) // also buffer Program messages lock (_eventBuffer) { - _eventBuffer.Add(new BufferedMidiEvent(e, timestamp, actualEventType)); + _eventBuffer.Add(new TimestampedMyMidiEvent(e, timestamp)); _bufferedEventsToHandle += 1; } } From 1e035e626facfb28e4dd8d8b38984386de453011 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 27 Sep 2025 20:03:13 +0100 Subject: [PATCH 09/31] More fixups --- ProjectObsidian/Elements/MIDI.cs | 84 +++++++++++++++++--------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index a4cfff9..b797485 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -23,6 +23,10 @@ public TimestampedMyMidiEvent(MyMidiEvent _myMidiEvent, long _timestamp) myMidiEvent = _myMidiEvent; timestamp = _timestamp; } + public override string ToString() + { + return $"{timestamp}, {myMidiEvent}"; + } } public struct MyMidiEvent @@ -118,8 +122,6 @@ public class MidiInputConnection private long _lastEventBufferStartTime = 0; - private int _bufferedEventsToHandle = 0; - private byte runningStatus; private const bool DEBUG = true; @@ -129,7 +131,6 @@ public void Initialize() Input = null; _eventBuffer.Clear(); _lastEventBufferStartTime = 0; - _bufferedEventsToHandle = 0; Listeners.Clear(); } @@ -146,7 +147,6 @@ private ushort CombineBytes(byte First, byte Second) private bool IsCCFineMessage() { if (_eventBuffer.Count == 0) return false; - //long timestamp = _eventBuffer[0].timestamp; if (_eventBuffer.Count >= 2 && _eventBuffer[0].myMidiEvent.actualEventType == MidiEvent.CC && _eventBuffer[1].myMidiEvent.actualEventType == MidiEvent.CC && _eventBuffer[0].myMidiEvent.msb == _eventBuffer[1].myMidiEvent.msb - 32) @@ -179,7 +179,6 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log($"CC fine. Value: " + finalValue.ToString()); Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e1.myMidiEvent.channel, e1.myMidiEvent.msb, finalValue, _coarse: false))); _eventBuffer.RemoveRange(0, 2); - _bufferedEventsToHandle -= 2; } if (_eventBuffer.Count == 0) break; @@ -192,6 +191,7 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log("CC"); Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e.myMidiEvent.channel, e.myMidiEvent.msb, e.myMidiEvent.lsb, _coarse: true))); break; + // Program events are buffered because they can be sent after a CC fine message for Bank Select, one of my devices sends consecutively: CC (Bank Select) -> CC (Bank Select Lsb) -> Program for some buttons case MidiEvent.Program: if (DEBUG) UniLog.Log("Program"); @@ -221,19 +221,12 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log("UnhandledEvent: TuneRequest"); break; default: - if (DEBUG) UniLog.Log($"UnhandledEvent default! {_eventBuffer[0].myMidiEvent.actualEventType}"); + if (DEBUG) UniLog.Log($"Unrecognized event type! {_eventBuffer[0].myMidiEvent.actualEventType}"); break; } _eventBuffer.RemoveAt(0); - _bufferedEventsToHandle -= 1; } if (DEBUG) UniLog.Log("Finished flushing message buffer from start time: " + batchStartTime.ToString()); - if (_bufferedEventsToHandle != 0) - { - // Just in case - throw new Exception("Did not handle all events in the buffer! " + _bufferedEventsToHandle.ToString()); - } - _bufferedEventsToHandle = 0; } private IEnumerable ConvertWithRunningStatus(byte[] bytes, int index, int size) @@ -246,7 +239,18 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde if (bytes[i] >= 128) { // End of running status - status = bytes[i]; + if (MidiEvent.FixedDataSize(bytes[i]) == 0) + { + status = bytes[i]; + } + else + { + byte b = bytes[i]; + if (b == 240 || b == 247 || b == byte.MaxValue) + status = b; + else + status = (byte)(b & 0xF0); + } if (status == 240) { yield return new MyMidiEvent(240, 0, 0, bytes, index, size); @@ -302,7 +306,6 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) var str = e.ToString(); if (DEBUG) UniLog.Log("* " + str); - byte actualEventType; if (!e.isRunningStatus) { if (DEBUG) UniLog.Log("* New event type"); @@ -313,41 +316,39 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) if (DEBUG) UniLog.Log("* Is running status"); } - actualEventType = runningStatus; - if (DEBUG) UniLog.Log($"* Actual event type: {string.Format("{0:X02}", actualEventType)}, dec: {actualEventType}"); - - switch (actualEventType) + bool shouldBuffer = false; + switch (runningStatus) { // System realtime case MidiEvent.MidiClock: if (DEBUG) UniLog.Log("* MidiClock"); Listeners.ForEach(l => l.TriggerMidiClock(new MIDI_SystemRealtimeEventData())); - return; + break; case MidiEvent.MidiTick: if (DEBUG) UniLog.Log("* MidiTick"); Listeners.ForEach(l => l.TriggerMidiTick(new MIDI_SystemRealtimeEventData())); - return; + break; case MidiEvent.MidiStart: if (DEBUG) UniLog.Log("* MidiStart"); Listeners.ForEach(l => l.TriggerMidiStart(new MIDI_SystemRealtimeEventData())); - return; + break; case MidiEvent.MidiStop: if (DEBUG) UniLog.Log("* MidiStop"); Listeners.ForEach(l => l.TriggerMidiStop(new MIDI_SystemRealtimeEventData())); - return; + break; case MidiEvent.MidiContinue: if (DEBUG) UniLog.Log("* MidiContinue"); Listeners.ForEach(l => l.TriggerMidiContinue(new MIDI_SystemRealtimeEventData())); - return; + break; case MidiEvent.ActiveSense: if (DEBUG) UniLog.Log("* ActiveSense"); Listeners.ForEach(l => l.TriggerActiveSense(new MIDI_SystemRealtimeEventData())); - return; + break; case MidiEvent.Reset: // Same as Meta if (DEBUG) UniLog.Log("* Reset"); Listeners.ForEach(l => l.TriggerReset(new MIDI_SystemRealtimeEventData())); - return; + break; // other types of messages: channel message (voice or channel mode), system common message, system exclusive message case MidiEvent.NoteOn: @@ -356,40 +357,47 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) { if (DEBUG) UniLog.Log("* Zero velocity, so it's actually a NoteOff"); Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channel, e.msb, e.lsb))); - return; + break; } Listeners.ForEach(l => l.TriggerNoteOn(new MIDI_NoteEventData(e.channel, e.msb, e.lsb))); - return; + break; case MidiEvent.NoteOff: if (DEBUG) UniLog.Log("* NoteOff"); Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channel, e.msb, e.lsb))); - return; + break; case MidiEvent.CAf: if (DEBUG) UniLog.Log("* CAf"); Listeners.ForEach(l => l.TriggerChannelAftertouch(new MIDI_ChannelAftertouchEventData(e.channel, e.msb))); - return; + break; case MidiEvent.Pitch: if (DEBUG) UniLog.Log("* Pitch"); Listeners.ForEach(l => l.TriggerPitchWheel(new MIDI_PitchWheelEventData(e.channel, CombineBytes(e.msb, e.lsb)))); - return; + break; case MidiEvent.PAf: if (DEBUG) UniLog.Log("* PAf"); Listeners.ForEach(l => l.TriggerPolyphonicAftertouch(new MIDI_PolyphonicAftertouchEventData(e.channel, e.msb, e.lsb))); - return; + break; default: + shouldBuffer = true; break; } - // buffer CC messages because consecutive ones may need to be combined - // also buffer Program messages - lock (_eventBuffer) + if (shouldBuffer) { - _eventBuffer.Add(new TimestampedMyMidiEvent(e, timestamp)); - _bufferedEventsToHandle += 1; + // buffer CC messages because consecutive ones may need to be combined + // also buffer Program messages + lock (_eventBuffer) + { + _eventBuffer.Add(new TimestampedMyMidiEvent(e, timestamp)); + } } } - if (events.Count() > 0 && timestamp - _lastEventBufferStartTime > BUFFER_TIME_MILLISECONDS) + int count; + lock (_eventBuffer) + count = _eventBuffer.Count; + + if (count > 0 && timestamp - _lastEventBufferStartTime > BUFFER_TIME_MILLISECONDS) { _lastEventBufferStartTime = timestamp; if (DEBUG) UniLog.Log("* New message batch created: " + timestamp.ToString()); From 04d132a18257e8733dc299483eecc670b4f4b866 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 27 Sep 2025 20:13:56 +0100 Subject: [PATCH 10/31] Polish and rename some stuff --- ProjectObsidian/Elements/MIDI.cs | 75 +++++++++++++++----------------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index b797485..84c9e59 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -1,31 +1,26 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; using Commons.Music.Midi; -using Obsidian.Components.Devices.MIDI; using Elements.Core; -using FrooxEngine; using Elements.Data; -using System.Threading; using System.Runtime.InteropServices; -using Microsoft.VisualBasic; namespace Obsidian.Elements; public struct TimestampedMyMidiEvent { - public MyMidiEvent myMidiEvent; + public MyMidiEvent evt; public long timestamp; - public TimestampedMyMidiEvent(MyMidiEvent _myMidiEvent, long _timestamp) + public TimestampedMyMidiEvent(MyMidiEvent _evt, long _timestamp) { - myMidiEvent = _myMidiEvent; + evt = _evt; timestamp = _timestamp; } public override string ToString() { - return $"{timestamp}, {myMidiEvent}"; + return $"{timestamp}, {evt}"; } } @@ -33,31 +28,31 @@ public struct MyMidiEvent { public bool isRunningStatus; public byte actualEventType; - public byte msb; - public byte lsb; - public byte channel => (byte)(actualEventType & 0xF); + public byte dataByte1; + public byte dataByte2; + public byte channel => (byte)(actualEventType & 0x0F); public byte[] extraData; public int extraDataLength; public int extraDataOffset; - public MyMidiEvent(byte _actualEventType, byte _msb, byte _lsb, bool _isRunningStatus) + public MyMidiEvent(byte _actualEventType, byte _dataByte1, byte _dataByte2, bool _isRunningStatus) { actualEventType = _actualEventType; isRunningStatus = _isRunningStatus; - msb = _msb; - lsb = _lsb; + dataByte1 = _dataByte1; + dataByte2 = _dataByte2; } - public MyMidiEvent(byte _actualEventType, byte _msb, byte _lsb, byte[] _extraData, int _extraDataOffset, int _extraDataLength) + public MyMidiEvent(byte _actualEventType, byte _dataByte1, byte _dataByte2, byte[] _extraData, int _extraDataOffset, int _extraDataLength) { actualEventType = _actualEventType; - msb = _msb; - lsb = _lsb; + dataByte1 = _dataByte1; + dataByte2 = _dataByte2; extraData = _extraData; extraDataOffset = _extraDataOffset; extraDataLength = _extraDataLength; } public override string ToString() { - object[] obj = new object[4] { actualEventType, msb, lsb, null }; + object[] obj = new object[4] { actualEventType, dataByte1, dataByte2, null }; object obj2; if (extraData == null) { @@ -146,10 +141,9 @@ private ushort CombineBytes(byte First, byte Second) private bool IsCCFineMessage() { - if (_eventBuffer.Count == 0) return false; - if (_eventBuffer.Count >= 2 - && _eventBuffer[0].myMidiEvent.actualEventType == MidiEvent.CC && _eventBuffer[1].myMidiEvent.actualEventType == MidiEvent.CC - && _eventBuffer[0].myMidiEvent.msb == _eventBuffer[1].myMidiEvent.msb - 32) + if (_eventBuffer.Count < 2) return false; + if (_eventBuffer[0].evt.actualEventType == MidiEvent.CC && _eventBuffer[1].evt.actualEventType == MidiEvent.CC + && _eventBuffer[0].evt.dataByte1 == _eventBuffer[1].evt.dataByte1 - 32) { return true; } @@ -169,15 +163,16 @@ private void FlushMessageBuffer() while (_eventBuffer.Count > 0) { + // 14bit CC while (IsCCFineMessage()) { var e1 = _eventBuffer[0]; if (DEBUG) UniLog.Log(e1.ToString()); var e2 = _eventBuffer[1]; if (DEBUG) UniLog.Log(e2.ToString()); - var finalValue = CombineBytes(e2.myMidiEvent.lsb, e1.myMidiEvent.lsb); + var finalValue = CombineBytes(e2.evt.dataByte2, e1.evt.dataByte2); if (DEBUG) UniLog.Log($"CC fine. Value: " + finalValue.ToString()); - Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e1.myMidiEvent.channel, e1.myMidiEvent.msb, finalValue, _coarse: false))); + Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e1.evt.channel, e1.evt.dataByte1, finalValue, _coarse: false))); _eventBuffer.RemoveRange(0, 2); } @@ -185,17 +180,17 @@ private void FlushMessageBuffer() var e = _eventBuffer[0]; if (DEBUG) UniLog.Log(e.ToString()); - switch (_eventBuffer[0].myMidiEvent.actualEventType) + switch (_eventBuffer[0].evt.actualEventType) { case MidiEvent.CC: if (DEBUG) UniLog.Log("CC"); - Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e.myMidiEvent.channel, e.myMidiEvent.msb, e.myMidiEvent.lsb, _coarse: true))); + Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e.evt.channel, e.evt.dataByte1, e.evt.dataByte2, _coarse: true))); break; // Program events are buffered because they can be sent after a CC fine message for Bank Select, one of my devices sends consecutively: CC (Bank Select) -> CC (Bank Select Lsb) -> Program for some buttons case MidiEvent.Program: if (DEBUG) UniLog.Log("Program"); - Listeners.ForEach(l => l.TriggerProgram(new MIDI_ProgramEventData(e.myMidiEvent.channel, e.myMidiEvent.msb))); + Listeners.ForEach(l => l.TriggerProgram(new MIDI_ProgramEventData(e.evt.channel, e.evt.dataByte1))); break; // Unhandled events: @@ -221,7 +216,7 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log("UnhandledEvent: TuneRequest"); break; default: - if (DEBUG) UniLog.Log($"Unrecognized event type! {_eventBuffer[0].myMidiEvent.actualEventType}"); + if (DEBUG) UniLog.Log($"Unrecognized event type! {_eventBuffer[0].evt.actualEventType}"); break; } _eventBuffer.RemoveAt(0); @@ -246,7 +241,7 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde else { byte b = bytes[i]; - if (b == 240 || b == 247 || b == byte.MaxValue) + if (b == MidiEvent.SysEx1 || b == MidiEvent.SysEx2 || b == MidiEvent.Meta) status = b; else status = (byte)(b & 0xF0); @@ -260,7 +255,7 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde var z = MidiEvent.FixedDataSize(status); if (end < i + z) { - throw new Exception($"Received data was incomplete to build MIDI status message for '{status:X}' status."); + throw new Exception($"Received data was incomplete to build MIDI non-running status message for '{status:X}' status."); } yield return new MyMidiEvent(status, (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0), false); i += z + 1; @@ -271,7 +266,7 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde var z = MidiEvent.FixedDataSize(status); if (end < i + z) { - throw new Exception($"Received data was incomplete to build MIDI status message for '{status:X}' status."); + throw new Exception($"Received data was incomplete to build MIDI running status message for '{status:X}' status."); } yield return new MyMidiEvent(status, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0), true); i += z; @@ -290,7 +285,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) UniLog.FlushEveryMessage = true; long timestamp = args.Timestamp; - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && timestamp == 0) + if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) // Timestamp is always zero on Linux { timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); } @@ -353,29 +348,29 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) // other types of messages: channel message (voice or channel mode), system common message, system exclusive message case MidiEvent.NoteOn: if (DEBUG) UniLog.Log("* NoteOn"); - if (e.lsb == 0) + if (e.dataByte2 == 0) { if (DEBUG) UniLog.Log("* Zero velocity, so it's actually a NoteOff"); - Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channel, e.msb, e.lsb))); + Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channel, e.dataByte1, e.dataByte2))); break; } - Listeners.ForEach(l => l.TriggerNoteOn(new MIDI_NoteEventData(e.channel, e.msb, e.lsb))); + Listeners.ForEach(l => l.TriggerNoteOn(new MIDI_NoteEventData(e.channel, e.dataByte1, e.dataByte2))); break; case MidiEvent.NoteOff: if (DEBUG) UniLog.Log("* NoteOff"); - Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channel, e.msb, e.lsb))); + Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channel, e.dataByte1, e.dataByte2))); break; case MidiEvent.CAf: if (DEBUG) UniLog.Log("* CAf"); - Listeners.ForEach(l => l.TriggerChannelAftertouch(new MIDI_ChannelAftertouchEventData(e.channel, e.msb))); + Listeners.ForEach(l => l.TriggerChannelAftertouch(new MIDI_ChannelAftertouchEventData(e.channel, e.dataByte1))); break; case MidiEvent.Pitch: if (DEBUG) UniLog.Log("* Pitch"); - Listeners.ForEach(l => l.TriggerPitchWheel(new MIDI_PitchWheelEventData(e.channel, CombineBytes(e.msb, e.lsb)))); + Listeners.ForEach(l => l.TriggerPitchWheel(new MIDI_PitchWheelEventData(e.channel, CombineBytes(e.dataByte1, e.dataByte2)))); break; case MidiEvent.PAf: if (DEBUG) UniLog.Log("* PAf"); - Listeners.ForEach(l => l.TriggerPolyphonicAftertouch(new MIDI_PolyphonicAftertouchEventData(e.channel, e.msb, e.lsb))); + Listeners.ForEach(l => l.TriggerPolyphonicAftertouch(new MIDI_PolyphonicAftertouchEventData(e.channel, e.dataByte1, e.dataByte2))); break; default: shouldBuffer = true; From d5ad950328d4f6d48d6b61f8647953a89f8259f2 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sat, 27 Sep 2025 21:09:09 +0100 Subject: [PATCH 11/31] Fixed lost data from status byte? --- ProjectObsidian/Elements/MIDI.cs | 46 +++++++++++++++++--------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 84c9e59..07b25a4 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -6,6 +6,7 @@ using Elements.Core; using Elements.Data; using System.Runtime.InteropServices; +using CoreMidi; namespace Obsidian.Elements; @@ -28,31 +29,31 @@ public struct MyMidiEvent { public bool isRunningStatus; public byte actualEventType; + public byte statusByte; public byte dataByte1; public byte dataByte2; - public byte channel => (byte)(actualEventType & 0x0F); + public byte channel => (byte)(statusByte & 0x0F); public byte[] extraData; public int extraDataLength; public int extraDataOffset; - public MyMidiEvent(byte _actualEventType, byte _dataByte1, byte _dataByte2, bool _isRunningStatus) + public MyMidiEvent(byte _actualEventType, byte _statusByte, byte _dataByte1, byte _dataByte2, bool _isRunningStatus) { actualEventType = _actualEventType; isRunningStatus = _isRunningStatus; dataByte1 = _dataByte1; dataByte2 = _dataByte2; + statusByte = _statusByte; } - public MyMidiEvent(byte _actualEventType, byte _dataByte1, byte _dataByte2, byte[] _extraData, int _extraDataOffset, int _extraDataLength) + public MyMidiEvent(byte[] _extraData, int _extraDataOffset, int _extraDataLength) { - actualEventType = _actualEventType; - dataByte1 = _dataByte1; - dataByte2 = _dataByte2; + actualEventType = MidiEvent.SysEx1; extraData = _extraData; extraDataOffset = _extraDataOffset; extraDataLength = _extraDataLength; } public override string ToString() { - object[] obj = new object[4] { actualEventType, dataByte1, dataByte2, null }; + object[] obj = new object[4] { statusByte, dataByte1, dataByte2, null }; object obj2; if (extraData == null) { @@ -142,7 +143,7 @@ private ushort CombineBytes(byte First, byte Second) private bool IsCCFineMessage() { if (_eventBuffer.Count < 2) return false; - if (_eventBuffer[0].evt.actualEventType == MidiEvent.CC && _eventBuffer[1].evt.actualEventType == MidiEvent.CC + if (_eventBuffer[0].evt.statusByte == MidiEvent.CC && _eventBuffer[1].evt.actualEventType == MidiEvent.CC && _eventBuffer[0].evt.dataByte1 == _eventBuffer[1].evt.dataByte1 - 32) { return true; @@ -216,6 +217,7 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log("UnhandledEvent: TuneRequest"); break; default: + // This should never happen if (DEBUG) UniLog.Log($"Unrecognized event type! {_eventBuffer[0].evt.actualEventType}"); break; } @@ -228,7 +230,7 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde { int i = index; int end = index + size; - byte status = runningStatus; + byte actualEventType = runningStatus; while (i < end) { if (bytes[i] >= 128) @@ -236,39 +238,39 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde // End of running status if (MidiEvent.FixedDataSize(bytes[i]) == 0) { - status = bytes[i]; + actualEventType = bytes[i]; } else { byte b = bytes[i]; if (b == MidiEvent.SysEx1 || b == MidiEvent.SysEx2 || b == MidiEvent.Meta) - status = b; + actualEventType = b; else - status = (byte)(b & 0xF0); + actualEventType = (byte)(b & 0xF0); } - if (status == 240) + if (actualEventType == MidiEvent.SysEx1) { - yield return new MyMidiEvent(240, 0, 0, bytes, index, size); + yield return new MyMidiEvent(bytes, index, size); i += size; continue; } - var z = MidiEvent.FixedDataSize(status); + var z = MidiEvent.FixedDataSize(actualEventType); if (end < i + z) { - throw new Exception($"Received data was incomplete to build MIDI non-running status message for '{status:X}' status."); + throw new Exception($"Received data was incomplete to build MIDI non-running status message for '{actualEventType:X}' status."); } - yield return new MyMidiEvent(status, (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0), false); + yield return new MyMidiEvent(actualEventType, bytes[i], (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0), false); i += z + 1; } else { // Running status - var z = MidiEvent.FixedDataSize(status); + var z = MidiEvent.FixedDataSize(actualEventType); if (end < i + z) { - throw new Exception($"Received data was incomplete to build MIDI running status message for '{status:X}' status."); + throw new Exception($"Received data was incomplete to build MIDI running status message for '{actualEventType:X}' status."); } - yield return new MyMidiEvent(status, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0), true); + yield return new MyMidiEvent(actualEventType, actualEventType, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0), true); i += z; } } @@ -280,12 +282,12 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) if (DEBUG) UniLog.Log($"* Received {args.Length} bytes"); if (DEBUG) UniLog.Log($"* Start: {args.Start}"); - if (DEBUG) UniLog.Log($"* {string.Join(",", args.Data.Skip(args.Start).Take(args.Length).Select(b => string.Format("{0:X}", b)))}"); + if (DEBUG) UniLog.Log($"* Raw bytes: {string.Join(",", args.Data.Skip(args.Start).Take(args.Length).Select(b => string.Format("{0:X}", b)))}"); UniLog.FlushEveryMessage = true; long timestamp = args.Timestamp; - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) // Timestamp is always zero on Linux + if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) // Timestamp is always zero on Linux with the Alsa Midi API { timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); } From 36995c9d3cf3488a887e850d5e2ea6acf23afd26 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 07:42:02 +0100 Subject: [PATCH 12/31] Make actual event type into a property --- ProjectObsidian/Elements/MIDI.cs | 56 ++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 07b25a4..b7cb5b6 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -28,7 +28,14 @@ public override string ToString() public struct MyMidiEvent { public bool isRunningStatus; - public byte actualEventType; + public byte actualEventType + { + get + { + if (MidiEvent.FixedDataSize(statusByte) == 0) return statusByte; + return (byte)(statusByte & 0xF0); + } + } public byte statusByte; public byte dataByte1; public byte dataByte2; @@ -36,9 +43,9 @@ public struct MyMidiEvent public byte[] extraData; public int extraDataLength; public int extraDataOffset; - public MyMidiEvent(byte _actualEventType, byte _statusByte, byte _dataByte1, byte _dataByte2, bool _isRunningStatus) + public MyMidiEvent(byte _statusByte, byte _dataByte1, byte _dataByte2, bool _isRunningStatus) { - actualEventType = _actualEventType; + //actualEventType = _actualEventType; isRunningStatus = _isRunningStatus; dataByte1 = _dataByte1; dataByte2 = _dataByte2; @@ -46,7 +53,7 @@ public MyMidiEvent(byte _actualEventType, byte _statusByte, byte _dataByte1, byt } public MyMidiEvent(byte[] _extraData, int _extraDataOffset, int _extraDataLength) { - actualEventType = MidiEvent.SysEx1; + //actualEventType = MidiEvent.SysEx1; extraData = _extraData; extraDataOffset = _extraDataOffset; extraDataLength = _extraDataLength; @@ -230,47 +237,48 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde { int i = index; int end = index + size; - byte actualEventType = runningStatus; + byte statusByte = runningStatus; while (i < end) { if (bytes[i] >= 128) { // End of running status - if (MidiEvent.FixedDataSize(bytes[i]) == 0) - { - actualEventType = bytes[i]; - } - else - { - byte b = bytes[i]; - if (b == MidiEvent.SysEx1 || b == MidiEvent.SysEx2 || b == MidiEvent.Meta) - actualEventType = b; - else - actualEventType = (byte)(b & 0xF0); - } - if (actualEventType == MidiEvent.SysEx1) + statusByte = bytes[i]; + //if (MidiEvent.FixedDataSize(bytes[i]) == 0) + //{ + // actualEventType = bytes[i]; + //} + //else + //{ + // byte b = bytes[i]; + // if (b == MidiEvent.SysEx1 || b == MidiEvent.SysEx2 || b == MidiEvent.Meta) + // actualEventType = b; + // else + // actualEventType = (byte)(b & 0xF0); + //} + if (statusByte == MidiEvent.SysEx1) { yield return new MyMidiEvent(bytes, index, size); i += size; continue; } - var z = MidiEvent.FixedDataSize(actualEventType); + var z = MidiEvent.FixedDataSize(statusByte); if (end < i + z) { - throw new Exception($"Received data was incomplete to build MIDI non-running status message for '{actualEventType:X}' status."); + throw new Exception($"Received data was incomplete to build MIDI non-running status message for '{statusByte:X}' status."); } - yield return new MyMidiEvent(actualEventType, bytes[i], (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0), false); + yield return new MyMidiEvent(statusByte, (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0), false); i += z + 1; } else { // Running status - var z = MidiEvent.FixedDataSize(actualEventType); + var z = MidiEvent.FixedDataSize(statusByte); if (end < i + z) { - throw new Exception($"Received data was incomplete to build MIDI running status message for '{actualEventType:X}' status."); + throw new Exception($"Received data was incomplete to build MIDI running status message for '{statusByte:X}' status."); } - yield return new MyMidiEvent(actualEventType, actualEventType, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0), true); + yield return new MyMidiEvent(statusByte, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0), true); i += z; } } From 91232eb18b48a317215cb06e50aa7db489b19daa Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 08:19:26 +0100 Subject: [PATCH 13/31] Final fixes hopefully --- ProjectObsidian/Elements/MIDI.cs | 47 +++++++++++--------------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index b7cb5b6..e02f083 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -1,12 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.InteropServices; using System.Threading.Tasks; using Commons.Music.Midi; using Elements.Core; using Elements.Data; -using System.Runtime.InteropServices; -using CoreMidi; namespace Obsidian.Elements; @@ -39,13 +38,12 @@ public byte actualEventType public byte statusByte; public byte dataByte1; public byte dataByte2; - public byte channel => (byte)(statusByte & 0x0F); + public byte channelIndex => (byte)(statusByte & 0x0F); public byte[] extraData; public int extraDataLength; public int extraDataOffset; public MyMidiEvent(byte _statusByte, byte _dataByte1, byte _dataByte2, bool _isRunningStatus) { - //actualEventType = _actualEventType; isRunningStatus = _isRunningStatus; dataByte1 = _dataByte1; dataByte2 = _dataByte2; @@ -53,14 +51,13 @@ public MyMidiEvent(byte _statusByte, byte _dataByte1, byte _dataByte2, bool _isR } public MyMidiEvent(byte[] _extraData, int _extraDataOffset, int _extraDataLength) { - //actualEventType = MidiEvent.SysEx1; + statusByte = MidiEvent.SysEx1; extraData = _extraData; extraDataOffset = _extraDataOffset; extraDataLength = _extraDataLength; } public override string ToString() { - object[] obj = new object[4] { statusByte, dataByte1, dataByte2, null }; object obj2; if (extraData == null) { @@ -70,9 +67,7 @@ public override string ToString() { obj2 = "[data:" + extraDataLength + "]"; } - - obj[3] = obj2; - return string.Format("{0:X02}:{1:X02}:{2:X02}{3}", obj); + return $"(Type:{actualEventType:X02} Channel:{channelIndex:X02}) {statusByte:X02}:{dataByte1:X02}:{dataByte2:X02}{obj2}"; } } @@ -150,7 +145,7 @@ private ushort CombineBytes(byte First, byte Second) private bool IsCCFineMessage() { if (_eventBuffer.Count < 2) return false; - if (_eventBuffer[0].evt.statusByte == MidiEvent.CC && _eventBuffer[1].evt.actualEventType == MidiEvent.CC + if (_eventBuffer[0].evt.actualEventType == MidiEvent.CC && _eventBuffer[1].evt.actualEventType == MidiEvent.CC && _eventBuffer[0].evt.dataByte1 == _eventBuffer[1].evt.dataByte1 - 32) { return true; @@ -180,7 +175,7 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log(e2.ToString()); var finalValue = CombineBytes(e2.evt.dataByte2, e1.evt.dataByte2); if (DEBUG) UniLog.Log($"CC fine. Value: " + finalValue.ToString()); - Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e1.evt.channel, e1.evt.dataByte1, finalValue, _coarse: false))); + Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e1.evt.channelIndex, e1.evt.dataByte1, finalValue, _coarse: false))); _eventBuffer.RemoveRange(0, 2); } @@ -192,13 +187,13 @@ private void FlushMessageBuffer() { case MidiEvent.CC: if (DEBUG) UniLog.Log("CC"); - Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e.evt.channel, e.evt.dataByte1, e.evt.dataByte2, _coarse: true))); + Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e.evt.channelIndex, e.evt.dataByte1, e.evt.dataByte2, _coarse: true))); break; // Program events are buffered because they can be sent after a CC fine message for Bank Select, one of my devices sends consecutively: CC (Bank Select) -> CC (Bank Select Lsb) -> Program for some buttons case MidiEvent.Program: if (DEBUG) UniLog.Log("Program"); - Listeners.ForEach(l => l.TriggerProgram(new MIDI_ProgramEventData(e.evt.channel, e.evt.dataByte1))); + Listeners.ForEach(l => l.TriggerProgram(new MIDI_ProgramEventData(e.evt.channelIndex, e.evt.dataByte1))); break; // Unhandled events: @@ -244,20 +239,10 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde { // End of running status statusByte = bytes[i]; - //if (MidiEvent.FixedDataSize(bytes[i]) == 0) - //{ - // actualEventType = bytes[i]; - //} - //else - //{ - // byte b = bytes[i]; - // if (b == MidiEvent.SysEx1 || b == MidiEvent.SysEx2 || b == MidiEvent.Meta) - // actualEventType = b; - // else - // actualEventType = (byte)(b & 0xF0); - //} if (statusByte == MidiEvent.SysEx1) { + // It should look for the EndSysEx value (247) in the rest of the bytes from this point + // but we don't expose SysEx in game right now anyway so it doesn't really matter right now yield return new MyMidiEvent(bytes, index, size); i += size; continue; @@ -361,26 +346,26 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) if (e.dataByte2 == 0) { if (DEBUG) UniLog.Log("* Zero velocity, so it's actually a NoteOff"); - Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channel, e.dataByte1, e.dataByte2))); + Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channelIndex, e.dataByte1, e.dataByte2))); break; } - Listeners.ForEach(l => l.TriggerNoteOn(new MIDI_NoteEventData(e.channel, e.dataByte1, e.dataByte2))); + Listeners.ForEach(l => l.TriggerNoteOn(new MIDI_NoteEventData(e.channelIndex, e.dataByte1, e.dataByte2))); break; case MidiEvent.NoteOff: if (DEBUG) UniLog.Log("* NoteOff"); - Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channel, e.dataByte1, e.dataByte2))); + Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channelIndex, e.dataByte1, e.dataByte2))); break; case MidiEvent.CAf: if (DEBUG) UniLog.Log("* CAf"); - Listeners.ForEach(l => l.TriggerChannelAftertouch(new MIDI_ChannelAftertouchEventData(e.channel, e.dataByte1))); + Listeners.ForEach(l => l.TriggerChannelAftertouch(new MIDI_ChannelAftertouchEventData(e.channelIndex, e.dataByte1))); break; case MidiEvent.Pitch: if (DEBUG) UniLog.Log("* Pitch"); - Listeners.ForEach(l => l.TriggerPitchWheel(new MIDI_PitchWheelEventData(e.channel, CombineBytes(e.dataByte1, e.dataByte2)))); + Listeners.ForEach(l => l.TriggerPitchWheel(new MIDI_PitchWheelEventData(e.channelIndex, CombineBytes(e.dataByte1, e.dataByte2)))); break; case MidiEvent.PAf: if (DEBUG) UniLog.Log("* PAf"); - Listeners.ForEach(l => l.TriggerPolyphonicAftertouch(new MIDI_PolyphonicAftertouchEventData(e.channel, e.dataByte1, e.dataByte2))); + Listeners.ForEach(l => l.TriggerPolyphonicAftertouch(new MIDI_PolyphonicAftertouchEventData(e.channelIndex, e.dataByte1, e.dataByte2))); break; default: shouldBuffer = true; From a55809f2fec5c50d91b592632654acaa18eef3bb Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 08:26:50 +0100 Subject: [PATCH 14/31] Add some comments --- ProjectObsidian/Elements/MIDI.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index e02f083..8d32ee0 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -26,7 +26,7 @@ public override string ToString() public struct MyMidiEvent { - public bool isRunningStatus; + public bool isRunningStatus; // this means that the message came in WITHOUT a status byte, so it should use the last one that was received public byte actualEventType { get @@ -35,7 +35,7 @@ public byte actualEventType return (byte)(statusByte & 0xF0); } } - public byte statusByte; + public byte statusByte; // could be the running status byte if this is a running status message public byte dataByte1; public byte dataByte2; public byte channelIndex => (byte)(statusByte & 0x0F); From d755a82b57fdb777652187044ac86984cbcaabf2 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 08:53:51 +0100 Subject: [PATCH 15/31] Fix running status not storing channel info --- ProjectObsidian/Elements/MIDI.cs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 8d32ee0..a811044 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -27,14 +27,7 @@ public override string ToString() public struct MyMidiEvent { public bool isRunningStatus; // this means that the message came in WITHOUT a status byte, so it should use the last one that was received - public byte actualEventType - { - get - { - if (MidiEvent.FixedDataSize(statusByte) == 0) return statusByte; - return (byte)(statusByte & 0xF0); - } - } + public byte actualEventType => ActualEventType(statusByte); public byte statusByte; // could be the running status byte if this is a running status message public byte dataByte1; public byte dataByte2; @@ -69,6 +62,11 @@ public override string ToString() } return $"(Type:{actualEventType:X02} Channel:{channelIndex:X02}) {statusByte:X02}:{dataByte1:X02}:{dataByte2:X02}{obj2}"; } + public static byte ActualEventType(byte _statusByte) + { + if (MidiEvent.FixedDataSize(_statusByte) == 0) return _statusByte; + return (byte)(_statusByte & 0xF0); + } } public interface IMidiInputListener @@ -299,7 +297,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) if (!e.isRunningStatus) { if (DEBUG) UniLog.Log("* New event type"); - runningStatus = e.actualEventType; + runningStatus = e.statusByte; } else { @@ -307,7 +305,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) } bool shouldBuffer = false; - switch (runningStatus) + switch (MyMidiEvent.ActualEventType(runningStatus)) { // System realtime case MidiEvent.MidiClock: From 48162bd2c97cffcf65de7c0c07e5fa8bf15d810a Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 08:02:29 +0100 Subject: [PATCH 16/31] refresh devices on settings enumeration --- ProjectObsidian/Settings/MIDI_Settings.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/ProjectObsidian/Settings/MIDI_Settings.cs b/ProjectObsidian/Settings/MIDI_Settings.cs index eed8f5c..69f7272 100644 --- a/ProjectObsidian/Settings/MIDI_Settings.cs +++ b/ProjectObsidian/Settings/MIDI_Settings.cs @@ -60,6 +60,7 @@ public void Remove() private DataFeedItem DeviceToItem(ISyncMember item) { + RefreshDeviceLists(); MIDI_Device device = (MIDI_Device)item; DataFeedGroup dataFeedGroup = new DataFeedGroup(); List list = new List(); From 5669d57c863f6bffea5294b6aa2d5d89c2cd1ea2 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 09:13:23 +0100 Subject: [PATCH 17/31] fix refresh devices and make locale refresh when buttons are pressed --- ProjectObsidian/Settings/LocaleHelper.cs | 9 ++++++--- ProjectObsidian/Settings/MIDI_Settings.cs | 4 +++- ProjectObsidian/Settings/PluginSettings.cs | 2 ++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ProjectObsidian/Settings/LocaleHelper.cs b/ProjectObsidian/Settings/LocaleHelper.cs index 4f2ec4f..960ce5e 100644 --- a/ProjectObsidian/Settings/LocaleHelper.cs +++ b/ProjectObsidian/Settings/LocaleHelper.cs @@ -10,10 +10,13 @@ public static class SettingsLocaleHelper private static StaticLocaleProvider localeProvider; private static string lastOverrideLocale; private const string overrideLocaleString = "somethingRandomJustToMakeItChange"; - public static void Update(LocaleData _localeData) + internal static LocaleData _lastLocaleData; + public static void Update(LocaleData _localeData=null) { - UpdateDelayed(_localeData); - Settings.RegisterValueChanges(localeSettings => UpdateDelayed(_localeData)); + var data = _localeData ?? _lastLocaleData; + _lastLocaleData = data; + UpdateDelayed(data); + Settings.RegisterValueChanges(localeSettings => UpdateDelayed(data)); } private static void UpdateDelayed(LocaleData _localeData) diff --git a/ProjectObsidian/Settings/MIDI_Settings.cs b/ProjectObsidian/Settings/MIDI_Settings.cs index 69f7272..e402c86 100644 --- a/ProjectObsidian/Settings/MIDI_Settings.cs +++ b/ProjectObsidian/Settings/MIDI_Settings.cs @@ -60,7 +60,8 @@ public void Remove() private DataFeedItem DeviceToItem(ISyncMember item) { - RefreshDeviceLists(); + RunSynchronously(RefreshDeviceLists); + RunSynchronously(() => SettingsLocaleHelper.Update()); MIDI_Device device = (MIDI_Device)item; DataFeedGroup dataFeedGroup = new DataFeedGroup(); List list = new List(); @@ -99,6 +100,7 @@ protected override void OnStart() [SyncMethod(typeof(Action), new string[] { })] public void RefreshDeviceLists() { + RunSynchronously(() => SettingsLocaleHelper.Update()); UniLog.Log("Refreshing MIDI device lists!"); foreach(var device in InputDevices.Concat(OutputDevices)) { diff --git a/ProjectObsidian/Settings/PluginSettings.cs b/ProjectObsidian/Settings/PluginSettings.cs index 9231945..20c680b 100644 --- a/ProjectObsidian/Settings/PluginSettings.cs +++ b/ProjectObsidian/Settings/PluginSettings.cs @@ -93,6 +93,8 @@ private AssemblyTypeRegistry GetObsidianRegistry() [SyncMethod(typeof(Action), new string[] { })] public void TogglePluginLoaded() { + RunSynchronously(() => SettingsLocaleHelper.Update()); + UniLog.Log("Toggling plugin loaded"); if (GetObsidianRegistry() is AssemblyTypeRegistry obsidianRegistry) From 1326143b685f313b896b6d7c25b766a08cb47af2 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 09:14:45 +0100 Subject: [PATCH 18/31] Change name of refresh locale button --- ProjectObsidian/Settings/PluginSettings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProjectObsidian/Settings/PluginSettings.cs b/ProjectObsidian/Settings/PluginSettings.cs index 20c680b..e18f352 100644 --- a/ProjectObsidian/Settings/PluginSettings.cs +++ b/ProjectObsidian/Settings/PluginSettings.cs @@ -49,7 +49,7 @@ protected override void OnStart() _localeData.Messages.Add("Settings.PluginSettings", "Plugin Settings"); _localeData.Messages.Add("Settings.PluginSettings.PluginLoaded", "Plugin Loaded"); _localeData.Messages.Add("Settings.PluginSettings.TogglePluginLoaded", "Toggle loading the plugin for new sessions"); - _localeData.Messages.Add("Settings.PluginSettings.RefreshLocale", "Refresh Locale"); + _localeData.Messages.Add("Settings.PluginSettings.RefreshLocale", "(Debug) Refresh Locale"); _localeData.Messages.Add("Settings.MIDI_Settings", "MIDI Settings"); _localeData.Messages.Add("Settings.MIDI_Settings.RefreshDeviceLists", "Refresh Devices"); From 968a47765580b8f117868452d9aa7ba4235e291e Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 09:31:47 +0100 Subject: [PATCH 19/31] Improvements --- ProjectObsidian/Elements/MIDI.cs | 70 ++++++++++++++++---------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index a811044..905c5ca 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -26,18 +26,23 @@ public override string ToString() public struct MyMidiEvent { - public bool isRunningStatus; // this means that the message came in WITHOUT a status byte, so it should use the last one that was received - public byte actualEventType => ActualEventType(statusByte); - public byte statusByte; // could be the running status byte if this is a running status message + public byte eventType + { + get + { + if (MidiEvent.FixedDataSize(statusByte) == 0) return statusByte; + return (byte)(statusByte & 0xF0); + } + } + private byte statusByte; // the running status byte public byte dataByte1; public byte dataByte2; public byte channelIndex => (byte)(statusByte & 0x0F); public byte[] extraData; public int extraDataLength; public int extraDataOffset; - public MyMidiEvent(byte _statusByte, byte _dataByte1, byte _dataByte2, bool _isRunningStatus) + public MyMidiEvent(byte _statusByte, byte _dataByte1, byte _dataByte2) { - isRunningStatus = _isRunningStatus; dataByte1 = _dataByte1; dataByte2 = _dataByte2; statusByte = _statusByte; @@ -60,12 +65,7 @@ public override string ToString() { obj2 = "[data:" + extraDataLength + "]"; } - return $"(Type:{actualEventType:X02} Channel:{channelIndex:X02}) {statusByte:X02}:{dataByte1:X02}:{dataByte2:X02}{obj2}"; - } - public static byte ActualEventType(byte _statusByte) - { - if (MidiEvent.FixedDataSize(_statusByte) == 0) return _statusByte; - return (byte)(_statusByte & 0xF0); + return $"(Type:{eventType:X02} Channel:{channelIndex:X02}) {statusByte:X02}:{dataByte1:X02}:{dataByte2:X02}{obj2}"; } } @@ -143,7 +143,7 @@ private ushort CombineBytes(byte First, byte Second) private bool IsCCFineMessage() { if (_eventBuffer.Count < 2) return false; - if (_eventBuffer[0].evt.actualEventType == MidiEvent.CC && _eventBuffer[1].evt.actualEventType == MidiEvent.CC + if (_eventBuffer[0].evt.eventType == MidiEvent.CC && _eventBuffer[1].evt.eventType == MidiEvent.CC && _eventBuffer[0].evt.dataByte1 == _eventBuffer[1].evt.dataByte1 - 32) { return true; @@ -181,7 +181,7 @@ private void FlushMessageBuffer() var e = _eventBuffer[0]; if (DEBUG) UniLog.Log(e.ToString()); - switch (_eventBuffer[0].evt.actualEventType) + switch (_eventBuffer[0].evt.eventType) { case MidiEvent.CC: if (DEBUG) UniLog.Log("CC"); @@ -218,7 +218,7 @@ private void FlushMessageBuffer() break; default: // This should never happen - if (DEBUG) UniLog.Log($"Unrecognized event type! {_eventBuffer[0].evt.actualEventType}"); + if (DEBUG) UniLog.Log($"Unrecognized event type! {_eventBuffer[0].evt.eventType}"); break; } _eventBuffer.RemoveAt(0); @@ -230,14 +230,14 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde { int i = index; int end = index + size; - byte statusByte = runningStatus; + //byte statusByte = runningStatus; while (i < end) { if (bytes[i] >= 128) { - // End of running status - statusByte = bytes[i]; - if (statusByte == MidiEvent.SysEx1) + // New status byte + runningStatus = bytes[i]; + if (runningStatus == MidiEvent.SysEx1) { // It should look for the EndSysEx value (247) in the rest of the bytes from this point // but we don't expose SysEx in game right now anyway so it doesn't really matter right now @@ -245,23 +245,23 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde i += size; continue; } - var z = MidiEvent.FixedDataSize(statusByte); + var z = MidiEvent.FixedDataSize(runningStatus); if (end < i + z) { - throw new Exception($"Received data was incomplete to build MIDI non-running status message for '{statusByte:X}' status."); + throw new Exception($"Received data was incomplete to build MIDI non-running status message for '{runningStatus:X}' status."); } - yield return new MyMidiEvent(statusByte, (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0), false); + yield return new MyMidiEvent(runningStatus, (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0)); i += z + 1; } else { - // Running status - var z = MidiEvent.FixedDataSize(statusByte); + // Is using running status + var z = MidiEvent.FixedDataSize(runningStatus); if (end < i + z) { - throw new Exception($"Received data was incomplete to build MIDI running status message for '{statusByte:X}' status."); + throw new Exception($"Received data was incomplete to build MIDI running status message for '{runningStatus:X}' status."); } - yield return new MyMidiEvent(statusByte, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0), true); + yield return new MyMidiEvent(runningStatus, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0)); i += z; } } @@ -294,18 +294,18 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) var str = e.ToString(); if (DEBUG) UniLog.Log("* " + str); - if (!e.isRunningStatus) - { - if (DEBUG) UniLog.Log("* New event type"); - runningStatus = e.statusByte; - } - else - { - if (DEBUG) UniLog.Log("* Is running status"); - } + //if (e.isRunningStatus) + //{ + // if (DEBUG) UniLog.Log("* Is running status"); + //} + //else + //{ + // if (DEBUG) UniLog.Log("* New event type"); + // //runningStatus = e.statusByte; + //} bool shouldBuffer = false; - switch (MyMidiEvent.ActualEventType(runningStatus)) + switch (e.eventType) { // System realtime case MidiEvent.MidiClock: From c634e93554f77ace2a72d43afafe182bb4b262d1 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 10:19:16 +0100 Subject: [PATCH 20/31] Fix data length check --- ProjectObsidian/Elements/MIDI.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 905c5ca..9e31047 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -257,7 +257,7 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde { // Is using running status var z = MidiEvent.FixedDataSize(runningStatus); - if (end < i + z) + if (end < i + z - 1) { throw new Exception($"Received data was incomplete to build MIDI running status message for '{runningStatus:X}' status."); } From fdb49e8a35722c9ec7434f93ea5c25cf35ba4ccf Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 12:01:29 +0100 Subject: [PATCH 21/31] Remove call to events.Count which fixes events being created twice --- ProjectObsidian/Elements/MIDI.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 9e31047..802c72b 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -230,15 +230,19 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde { int i = index; int end = index + size; + //if (DEBUG) UniLog.Log("* In convert method"); //byte statusByte = runningStatus; while (i < end) { + //if (DEBUG) UniLog.Log($"* i: {i}"); if (bytes[i] >= 128) { // New status byte + if (DEBUG) UniLog.Log($"* New running status byte: {bytes[i]:X02}"); runningStatus = bytes[i]; if (runningStatus == MidiEvent.SysEx1) { + //if (DEBUG) UniLog.Log($"* is SysEx"); // It should look for the EndSysEx value (247) in the rest of the bytes from this point // but we don't expose SysEx in game right now anyway so it doesn't really matter right now yield return new MyMidiEvent(bytes, index, size); @@ -246,22 +250,27 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde continue; } var z = MidiEvent.FixedDataSize(runningStatus); + //if (DEBUG) UniLog.Log($"* Fixed data size: {z}"); if (end < i + z) { throw new Exception($"Received data was incomplete to build MIDI non-running status message for '{runningStatus:X}' status."); } - yield return new MyMidiEvent(runningStatus, (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0)); + var evt = new MyMidiEvent(runningStatus, (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0)); + yield return evt; i += z + 1; } else { // Is using running status + if (DEBUG) UniLog.Log($"* Is running status: {runningStatus}"); var z = MidiEvent.FixedDataSize(runningStatus); + //if (DEBUG) UniLog.Log($"* Fixed data size: {z}"); if (end < i + z - 1) { throw new Exception($"Received data was incomplete to build MIDI running status message for '{runningStatus:X}' status."); } - yield return new MyMidiEvent(runningStatus, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0)); + var evt = new MyMidiEvent(runningStatus, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0)); + yield return evt; i += z; } } @@ -287,7 +296,8 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) var events = ConvertWithRunningStatus(args.Data, args.Start, args.Length); - if (DEBUG) UniLog.Log($"* Number of events: {events.Count()}"); + // DO NOT CALL events.Count() IT BREAKS THE RUNNING STATUS ON LINUX + //if (DEBUG) UniLog.Log($"* Number of converted events: {events.Count()}"); foreach (var e in events) { From fcc0ae3bdaa86668d21b5bdba38b5d6af1d4bc42 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 12:05:05 +0100 Subject: [PATCH 22/31] Push latest --- ProjectObsidian/Elements/MIDI.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 802c72b..37dce5f 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -230,11 +230,8 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde { int i = index; int end = index + size; - //if (DEBUG) UniLog.Log("* In convert method"); - //byte statusByte = runningStatus; while (i < end) { - //if (DEBUG) UniLog.Log($"* i: {i}"); if (bytes[i] >= 128) { // New status byte @@ -242,7 +239,7 @@ private IEnumerable ConvertWithRunningStatus(byte[] bytes, int inde runningStatus = bytes[i]; if (runningStatus == MidiEvent.SysEx1) { - //if (DEBUG) UniLog.Log($"* is SysEx"); + if (DEBUG) UniLog.Log($"* is SysEx"); // It should look for the EndSysEx value (247) in the rest of the bytes from this point // but we don't expose SysEx in game right now anyway so it doesn't really matter right now yield return new MyMidiEvent(bytes, index, size); From 3db05c6ab0514fa254637f10476234e4ffd9823e Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 14:36:58 +0100 Subject: [PATCH 23/31] Update managed-midi to latest source, this includes my fix for running status so we don't need to do it ourselves anymore --- ProjectObsidian/Elements/MIDI.cs | 186 ++++++++++++------------------- lib/Commons.Music.Midi.dll | Bin 938496 -> 938496 bytes 2 files changed, 72 insertions(+), 114 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 37dce5f..07b111a 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -9,11 +9,11 @@ namespace Obsidian.Elements; -public struct TimestampedMyMidiEvent +public struct TimestampedMidiEvent { - public MyMidiEvent evt; + public MidiEvent evt; public long timestamp; - public TimestampedMyMidiEvent(MyMidiEvent _evt, long _timestamp) + public TimestampedMidiEvent(MidiEvent _evt, long _timestamp) { evt = _evt; timestamp = _timestamp; @@ -24,51 +24,6 @@ public override string ToString() } } -public struct MyMidiEvent -{ - public byte eventType - { - get - { - if (MidiEvent.FixedDataSize(statusByte) == 0) return statusByte; - return (byte)(statusByte & 0xF0); - } - } - private byte statusByte; // the running status byte - public byte dataByte1; - public byte dataByte2; - public byte channelIndex => (byte)(statusByte & 0x0F); - public byte[] extraData; - public int extraDataLength; - public int extraDataOffset; - public MyMidiEvent(byte _statusByte, byte _dataByte1, byte _dataByte2) - { - dataByte1 = _dataByte1; - dataByte2 = _dataByte2; - statusByte = _statusByte; - } - public MyMidiEvent(byte[] _extraData, int _extraDataOffset, int _extraDataLength) - { - statusByte = MidiEvent.SysEx1; - extraData = _extraData; - extraDataOffset = _extraDataOffset; - extraDataLength = _extraDataLength; - } - public override string ToString() - { - object obj2; - if (extraData == null) - { - obj2 = ""; - } - else - { - obj2 = "[data:" + extraDataLength + "]"; - } - return $"(Type:{eventType:X02} Channel:{channelIndex:X02}) {statusByte:X02}:{dataByte1:X02}:{dataByte2:X02}{obj2}"; - } -} - public interface IMidiInputListener { public event MIDI_NoteEventHandler NoteOn; @@ -112,13 +67,13 @@ public class MidiInputConnection public List Listeners = new(); - private List _eventBuffer = new(); + private List _eventBuffer = new(); private const long BUFFER_TIME_MILLISECONDS = 3; private long _lastEventBufferStartTime = 0; - private byte runningStatus; + //private byte runningStatus; private const bool DEBUG = true; @@ -143,8 +98,8 @@ private ushort CombineBytes(byte First, byte Second) private bool IsCCFineMessage() { if (_eventBuffer.Count < 2) return false; - if (_eventBuffer[0].evt.eventType == MidiEvent.CC && _eventBuffer[1].evt.eventType == MidiEvent.CC - && _eventBuffer[0].evt.dataByte1 == _eventBuffer[1].evt.dataByte1 - 32) + if (_eventBuffer[0].evt.EventType == MidiEvent.CC && _eventBuffer[1].evt.EventType == MidiEvent.CC + && _eventBuffer[0].evt.Msb == _eventBuffer[1].evt.Msb - 32) { return true; } @@ -171,9 +126,9 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log(e1.ToString()); var e2 = _eventBuffer[1]; if (DEBUG) UniLog.Log(e2.ToString()); - var finalValue = CombineBytes(e2.evt.dataByte2, e1.evt.dataByte2); + var finalValue = CombineBytes(e2.evt.Lsb, e1.evt.Lsb); if (DEBUG) UniLog.Log($"CC fine. Value: " + finalValue.ToString()); - Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e1.evt.channelIndex, e1.evt.dataByte1, finalValue, _coarse: false))); + Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e1.evt.Channel, e1.evt.Msb, finalValue, _coarse: false))); _eventBuffer.RemoveRange(0, 2); } @@ -181,17 +136,17 @@ private void FlushMessageBuffer() var e = _eventBuffer[0]; if (DEBUG) UniLog.Log(e.ToString()); - switch (_eventBuffer[0].evt.eventType) + switch (_eventBuffer[0].evt.EventType) { case MidiEvent.CC: if (DEBUG) UniLog.Log("CC"); - Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e.evt.channelIndex, e.evt.dataByte1, e.evt.dataByte2, _coarse: true))); + Listeners.ForEach(l => l.TriggerControl(new MIDI_CC_EventData(e.evt.Channel, e.evt.Msb, e.evt.Lsb, _coarse: true))); break; // Program events are buffered because they can be sent after a CC fine message for Bank Select, one of my devices sends consecutively: CC (Bank Select) -> CC (Bank Select Lsb) -> Program for some buttons case MidiEvent.Program: if (DEBUG) UniLog.Log("Program"); - Listeners.ForEach(l => l.TriggerProgram(new MIDI_ProgramEventData(e.evt.channelIndex, e.evt.dataByte1))); + Listeners.ForEach(l => l.TriggerProgram(new MIDI_ProgramEventData(e.evt.Channel, e.evt.Msb))); break; // Unhandled events: @@ -218,7 +173,7 @@ private void FlushMessageBuffer() break; default: // This should never happen - if (DEBUG) UniLog.Log($"Unrecognized event type! {_eventBuffer[0].evt.eventType}"); + if (DEBUG) UniLog.Log($"Unrecognized event type! {_eventBuffer[0].evt.EventType}"); break; } _eventBuffer.RemoveAt(0); @@ -226,52 +181,52 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log("Finished flushing message buffer from start time: " + batchStartTime.ToString()); } - private IEnumerable ConvertWithRunningStatus(byte[] bytes, int index, int size) - { - int i = index; - int end = index + size; - while (i < end) - { - if (bytes[i] >= 128) - { - // New status byte - if (DEBUG) UniLog.Log($"* New running status byte: {bytes[i]:X02}"); - runningStatus = bytes[i]; - if (runningStatus == MidiEvent.SysEx1) - { - if (DEBUG) UniLog.Log($"* is SysEx"); - // It should look for the EndSysEx value (247) in the rest of the bytes from this point - // but we don't expose SysEx in game right now anyway so it doesn't really matter right now - yield return new MyMidiEvent(bytes, index, size); - i += size; - continue; - } - var z = MidiEvent.FixedDataSize(runningStatus); - //if (DEBUG) UniLog.Log($"* Fixed data size: {z}"); - if (end < i + z) - { - throw new Exception($"Received data was incomplete to build MIDI non-running status message for '{runningStatus:X}' status."); - } - var evt = new MyMidiEvent(runningStatus, (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0)); - yield return evt; - i += z + 1; - } - else - { - // Is using running status - if (DEBUG) UniLog.Log($"* Is running status: {runningStatus}"); - var z = MidiEvent.FixedDataSize(runningStatus); - //if (DEBUG) UniLog.Log($"* Fixed data size: {z}"); - if (end < i + z - 1) - { - throw new Exception($"Received data was incomplete to build MIDI running status message for '{runningStatus:X}' status."); - } - var evt = new MyMidiEvent(runningStatus, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0)); - yield return evt; - i += z; - } - } - } + //private IEnumerable ConvertWithRunningStatus(byte[] bytes, int index, int size) + //{ + // int i = index; + // int end = index + size; + // while (i < end) + // { + // if (bytes[i] >= 128) + // { + // // New status byte + // if (DEBUG) UniLog.Log($"* New running status byte: {bytes[i]:X02}"); + // runningStatus = bytes[i]; + // if (runningStatus == MidiEvent.SysEx1) + // { + // if (DEBUG) UniLog.Log($"* is SysEx"); + // // It should look for the EndSysEx value (247) in the rest of the bytes from this point + // // but we don't expose SysEx in game right now anyway so it doesn't really matter right now + // yield return new MyMidiEvent(bytes, index, size); + // i += size; + // continue; + // } + // var z = MidiEvent.FixedDataSize(runningStatus); + // //if (DEBUG) UniLog.Log($"* Fixed data size: {z}"); + // if (end < i + z) + // { + // throw new Exception($"Received data was incomplete to build MIDI non-running status message for '{runningStatus:X}' status."); + // } + // var evt = new MyMidiEvent(runningStatus, (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0)); + // yield return evt; + // i += z + 1; + // } + // else + // { + // // Is using running status + // if (DEBUG) UniLog.Log($"* Is running status: {runningStatus}"); + // var z = MidiEvent.FixedDataSize(runningStatus); + // //if (DEBUG) UniLog.Log($"* Fixed data size: {z}"); + // if (end < i + z - 1) + // { + // throw new Exception($"Received data was incomplete to build MIDI running status message for '{runningStatus:X}' status."); + // } + // var evt = new MyMidiEvent(runningStatus, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0)); + // yield return evt; + // i += z; + // } + // } + //} public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) { @@ -291,7 +246,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) if (DEBUG) UniLog.Log($"* Timestamp: {timestamp}"); - var events = ConvertWithRunningStatus(args.Data, args.Start, args.Length); + var events = MidiEvent.Convert(args.Data, args.Start, args.Length); // DO NOT CALL events.Count() IT BREAKS THE RUNNING STATUS ON LINUX //if (DEBUG) UniLog.Log($"* Number of converted events: {events.Count()}"); @@ -301,6 +256,9 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) var str = e.ToString(); if (DEBUG) UniLog.Log("* " + str); + // Msb is dataByte1 + // Lsb is dataByte2 + //if (e.isRunningStatus) //{ // if (DEBUG) UniLog.Log("* Is running status"); @@ -312,7 +270,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) //} bool shouldBuffer = false; - switch (e.eventType) + switch (e.EventType) { // System realtime case MidiEvent.MidiClock: @@ -348,29 +306,29 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) // other types of messages: channel message (voice or channel mode), system common message, system exclusive message case MidiEvent.NoteOn: if (DEBUG) UniLog.Log("* NoteOn"); - if (e.dataByte2 == 0) + if (e.Lsb == 0) { if (DEBUG) UniLog.Log("* Zero velocity, so it's actually a NoteOff"); - Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channelIndex, e.dataByte1, e.dataByte2))); + Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.Channel, e.Msb, e.Lsb))); break; } - Listeners.ForEach(l => l.TriggerNoteOn(new MIDI_NoteEventData(e.channelIndex, e.dataByte1, e.dataByte2))); + Listeners.ForEach(l => l.TriggerNoteOn(new MIDI_NoteEventData(e.Channel, e.Msb, e.Lsb))); break; case MidiEvent.NoteOff: if (DEBUG) UniLog.Log("* NoteOff"); - Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.channelIndex, e.dataByte1, e.dataByte2))); + Listeners.ForEach(l => l.TriggerNoteOff(new MIDI_NoteEventData(e.Channel, e.Msb, e.Lsb))); break; case MidiEvent.CAf: if (DEBUG) UniLog.Log("* CAf"); - Listeners.ForEach(l => l.TriggerChannelAftertouch(new MIDI_ChannelAftertouchEventData(e.channelIndex, e.dataByte1))); + Listeners.ForEach(l => l.TriggerChannelAftertouch(new MIDI_ChannelAftertouchEventData(e.Channel, e.Msb))); break; case MidiEvent.Pitch: if (DEBUG) UniLog.Log("* Pitch"); - Listeners.ForEach(l => l.TriggerPitchWheel(new MIDI_PitchWheelEventData(e.channelIndex, CombineBytes(e.dataByte1, e.dataByte2)))); + Listeners.ForEach(l => l.TriggerPitchWheel(new MIDI_PitchWheelEventData(e.Channel, CombineBytes(e.Msb, e.Lsb)))); break; case MidiEvent.PAf: if (DEBUG) UniLog.Log("* PAf"); - Listeners.ForEach(l => l.TriggerPolyphonicAftertouch(new MIDI_PolyphonicAftertouchEventData(e.channelIndex, e.dataByte1, e.dataByte2))); + Listeners.ForEach(l => l.TriggerPolyphonicAftertouch(new MIDI_PolyphonicAftertouchEventData(e.Channel, e.Msb, e.Lsb))); break; default: shouldBuffer = true; @@ -383,7 +341,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) // also buffer Program messages lock (_eventBuffer) { - _eventBuffer.Add(new TimestampedMyMidiEvent(e, timestamp)); + _eventBuffer.Add(new TimestampedMidiEvent(e, timestamp)); } } } diff --git a/lib/Commons.Music.Midi.dll b/lib/Commons.Music.Midi.dll index 34e1733c428f57850a273425b86b3441cf867add..f86222f2da2a1f1fa8508d03ed06474ee86f9dba 100644 GIT binary patch delta 22427 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 From aaa3c78f77301354936ee84ff1337183d100239c Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 16:35:06 +0100 Subject: [PATCH 24/31] Fix for event types --- ProjectObsidian/Elements/MIDI.cs | 71 +++++--------------------------- 1 file changed, 11 insertions(+), 60 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 07b111a..3c5d5b5 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -98,7 +98,7 @@ private ushort CombineBytes(byte First, byte Second) private bool IsCCFineMessage() { if (_eventBuffer.Count < 2) return false; - if (_eventBuffer[0].evt.EventType == MidiEvent.CC && _eventBuffer[1].evt.EventType == MidiEvent.CC + if (ActualEventType(_eventBuffer[0].evt.StatusByte) == MidiEvent.CC && ActualEventType(_eventBuffer[1].evt.StatusByte) == MidiEvent.CC && _eventBuffer[0].evt.Msb == _eventBuffer[1].evt.Msb - 32) { return true; @@ -136,7 +136,7 @@ private void FlushMessageBuffer() var e = _eventBuffer[0]; if (DEBUG) UniLog.Log(e.ToString()); - switch (_eventBuffer[0].evt.EventType) + switch (ActualEventType(_eventBuffer[0].evt.StatusByte)) { case MidiEvent.CC: if (DEBUG) UniLog.Log("CC"); @@ -181,52 +181,14 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log("Finished flushing message buffer from start time: " + batchStartTime.ToString()); } - //private IEnumerable ConvertWithRunningStatus(byte[] bytes, int index, int size) - //{ - // int i = index; - // int end = index + size; - // while (i < end) - // { - // if (bytes[i] >= 128) - // { - // // New status byte - // if (DEBUG) UniLog.Log($"* New running status byte: {bytes[i]:X02}"); - // runningStatus = bytes[i]; - // if (runningStatus == MidiEvent.SysEx1) - // { - // if (DEBUG) UniLog.Log($"* is SysEx"); - // // It should look for the EndSysEx value (247) in the rest of the bytes from this point - // // but we don't expose SysEx in game right now anyway so it doesn't really matter right now - // yield return new MyMidiEvent(bytes, index, size); - // i += size; - // continue; - // } - // var z = MidiEvent.FixedDataSize(runningStatus); - // //if (DEBUG) UniLog.Log($"* Fixed data size: {z}"); - // if (end < i + z) - // { - // throw new Exception($"Received data was incomplete to build MIDI non-running status message for '{runningStatus:X}' status."); - // } - // var evt = new MyMidiEvent(runningStatus, (byte)((z > 0) ? bytes[i + 1] : 0), (byte)((z > 1) ? bytes[i + 2] : 0)); - // yield return evt; - // i += z + 1; - // } - // else - // { - // // Is using running status - // if (DEBUG) UniLog.Log($"* Is running status: {runningStatus}"); - // var z = MidiEvent.FixedDataSize(runningStatus); - // //if (DEBUG) UniLog.Log($"* Fixed data size: {z}"); - // if (end < i + z - 1) - // { - // throw new Exception($"Received data was incomplete to build MIDI running status message for '{runningStatus:X}' status."); - // } - // var evt = new MyMidiEvent(runningStatus, bytes[i], (byte)((z > 1) ? bytes[i + 1] : 0)); - // yield return evt; - // i += z; - // } - // } - //} + private static byte ActualEventType(byte b) + { + if (MidiEvent.FixedDataSize(b) == 0) + { + return b; + } + return (byte)(b & 0xF0); + } public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) { @@ -249,7 +211,6 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) var events = MidiEvent.Convert(args.Data, args.Start, args.Length); // DO NOT CALL events.Count() IT BREAKS THE RUNNING STATUS ON LINUX - //if (DEBUG) UniLog.Log($"* Number of converted events: {events.Count()}"); foreach (var e in events) { @@ -259,18 +220,8 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) // Msb is dataByte1 // Lsb is dataByte2 - //if (e.isRunningStatus) - //{ - // if (DEBUG) UniLog.Log("* Is running status"); - //} - //else - //{ - // if (DEBUG) UniLog.Log("* New event type"); - // //runningStatus = e.statusByte; - //} - bool shouldBuffer = false; - switch (e.EventType) + switch (ActualEventType(e.StatusByte)) { // System realtime case MidiEvent.MidiClock: From 3441aca8336e26708372fb18e82f898d1350336c Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 18:45:15 +0100 Subject: [PATCH 25/31] Update managed-midi which now has another of my fixes --- ProjectObsidian/Elements/MIDI.cs | 15 +++------------ lib/Commons.Music.Midi.dll | Bin 938496 -> 938496 bytes 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 3c5d5b5..e3c06ac 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -98,7 +98,7 @@ private ushort CombineBytes(byte First, byte Second) private bool IsCCFineMessage() { if (_eventBuffer.Count < 2) return false; - if (ActualEventType(_eventBuffer[0].evt.StatusByte) == MidiEvent.CC && ActualEventType(_eventBuffer[1].evt.StatusByte) == MidiEvent.CC + if (_eventBuffer[0].evt.EventType == MidiEvent.CC && _eventBuffer[1].evt.EventType == MidiEvent.CC && _eventBuffer[0].evt.Msb == _eventBuffer[1].evt.Msb - 32) { return true; @@ -136,7 +136,7 @@ private void FlushMessageBuffer() var e = _eventBuffer[0]; if (DEBUG) UniLog.Log(e.ToString()); - switch (ActualEventType(_eventBuffer[0].evt.StatusByte)) + switch (_eventBuffer[0].evt.EventType) { case MidiEvent.CC: if (DEBUG) UniLog.Log("CC"); @@ -181,15 +181,6 @@ private void FlushMessageBuffer() if (DEBUG) UniLog.Log("Finished flushing message buffer from start time: " + batchStartTime.ToString()); } - private static byte ActualEventType(byte b) - { - if (MidiEvent.FixedDataSize(b) == 0) - { - return b; - } - return (byte)(b & 0xF0); - } - public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) { if (DEBUG) UniLog.Log($"*** New midi message"); @@ -221,7 +212,7 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) // Lsb is dataByte2 bool shouldBuffer = false; - switch (ActualEventType(e.StatusByte)) + switch (e.EventType) { // System realtime case MidiEvent.MidiClock: diff --git a/lib/Commons.Music.Midi.dll b/lib/Commons.Music.Midi.dll index f86222f2da2a1f1fa8508d03ed06474ee86f9dba..427d4189d34d0b462dda64ed5f45e6d2340c36b5 100644 GIT binary patch delta 7851 zcmY+}3tZGy+6VA+o(IPnE2MOE7{=7JykrJm5bz3WqN0+52zWzLR4^}SqNKwJ;kD8* z@S4}s($b9-HLZ8W*h=?(+w^UF-AZkfbXT^dG&8IBJkNQWW$iP4{Lb&3|2hA2&i|P~ ziuS}7?TKBtGNjYRd4FHO)~AoGe=SWAHhHQ5MktwiP*{ zivA>;7pO*R&>p4MC26JkU8T-fwgvxV+FQ2s@#c-Xfupmd?EK>cw5n_t`M0(HQzNKZ zsk8TepE=U?Inn-mNmoQ;+mPx+A9W?&WtFQpJ6vd)u9HU6Rch4Bo$6GEKE*2aq$O;| z4E+x)XG&6x%GC9u*-37rpZ&~$x|O!iJzlpTMVASvS);U?px3fWl{55Ai;4QSXhGb? zmXq|LWNKOJjO<(6a*9q84eEQ#DBDV1?Gn{;sva=fUh~z?RV}i0k?2H+#-3?z`dJBOO32c_B({5-!Q9n^20=xD!Qo;+O`RA0|*{j!l6pZ3Y2=IA## z{9VU`3Nu-CQ0LWL{byFW`qVerGhbg|1w8+=jt<=wh+Itr0>zOpQa`ocKkw$k} z)N+F7X`M9QM1FJk&c|kX3Um=s)#!7sd7j1kG^^BfZ0}j3H%y?+PHl-k&Z>3o>HS6X zCHfRA;5^p5z_dJLrD}#R^Azf@L|+Vl!LwA?i|(*OCek(i0d;)rW)rSs2GlvDA{{Y_ z!dh3`q(jY%^$<}P)&fzZuun{OK-9vhM1O6iM}!`4{;bZM%vaIlLu;Cs>hD=}6MH=? zG-Od$?03Evo!?}oZo;f}d79R#mAa+q&wWVkMc=j}MTttfkp{5nqHlUu>I%u;9pZGa z(c49zcE8VPFDu}@(tWtmA<6ug!#wV_`l|4z(Q~@h6g%&Bp%1v9*O4NpIl<5CuUP@r zQDO&j-ijUiEmpwUx@nl&q2G~=HfE=;mh8(uVMb>qqix!y&r5c@RhZEilF_E^)>kB3 z*DcI%_#KmG6X)KeFHNVJ29)=nQ=V7!#vH4zMtgP1468RoKk&S!6K7gA>V3}hrk=vG zi+@nhvYGRvA#v`5I$tu{ibJ|kGCB$VL%KvlIthQ!Cq#4--qJU$G@XP>9Wsjstktwl zmHK|xdUd1Ur;RIh3@f1Wv_rkERW7x(xAeA-W!b46*72+WPwlW@50jAQc0`Yskmhzo zXWER1uhLJ6X!t7qjEGK2mG;f10qtbo(F0il)l50m2|bBLlR4Akgr;`LQ(LZ2>dH&i zE46RyYX&iMY)d+u z&0(&H&ZZk)VbP2nss$YK2RS;t1vutX$5Q9&rq$RILRkUlhNfDzgqAE@COptuGCG?c z=qMST&2Wg6jLv2_#7ahI(+lyE(b@FEu(|v}SL>p~83CguG>6kDlT~77njY>0zg&j) zsuiqY6>~*t1?wcEhyOv?Saz(YlYgguj}J_1c#CB}P+P-$ELwx~@Ye8w^rl1D2Gl&e zc612aLQhtWqC@x)G*Vj zqrr|d!yknoSOFEEn(KZH?&i})11c*sKfEjStUUauT%lJXY&a@<$~VA07p_>D`*NtcQ11^i%sUtKBASdHa6W{x?11wj zf>o+qK96@k#Inkr|4RMEwE&Vu-CU$GqUo$jqS!&Ly$fK5m5Pn-Y_x5Wp9U;f?bD;Y z3*m@_|45JVJ`ERG_M|O>?^wlV-u=Ccz+FK7N}cUp)mR9vMElHs6hcSQPvLc{5JrmV zp(%tcQP=bsqnQQ#)veTdlevIH`~9~N&a!ODFc)1+1KN^N2qhva3x#k(L}lR_xWTd; zx)knR!u`0oEQLG~6_;gj*2vsHH67~p!y|>%)Rv4Q=*qGsqX>GjY{>{ff61t11Rzl| zDjCZmSu!da%OPDdy8B|tl8j15G0Y+*n|q>?Q3CTNq>@nrg)BP$$=+vSJFC`3C8HGf zvTVsHg+r22$yfnL%gWAn^8eAk$0cJWe8RFDxe_k2=%$msE8(j2rjoG=+C0On<)V_Y z8d6#I$zKDjMD*mZfnzLtl{IjxLCdvp%io~sTIjfxFUmz?Eu3Ic$29LcxWo#mcD`Kq zi?CoBwX{W|4EBrSRId9ac$;N!q8vVD+2dahUx?`Vm&4b~?4fqj`7eimN*FsR%UcdV zSef&mX9U6HpYN>z^F6}+p@(6KcO#^T{*k`iyBRjIXxa|71$G9t%DV*)1hw9~4Nm&y zQ15HA#k&LE=a8P8okrJeQ+{rC!41))F0FRK9T7b@yW!p7ve!hD7`wvddEcGR8kQ*w>-zp@3!grXH@b?2lme za6?2tE!9K25}KW@cl9t%MD?y7)`_UzeGea4afSN2K8mL zThOD_F2JVL#SuS3AJMC+UpD&@2D5CvyA2~Gqk4B6#!5!@?kAWi8P&U=AV)GfwRd1n zsT^r4cz2*cLaKK^Ly>f(diOJ|vKd#byRg+}X8o5%+=aF)>{?KT`vp3Qs22VLks_*J zzrYL;)vsS+#|nND11jkRzw2= z{>ZXFf&r>k|Gp+-KM`FMG07;LzUkAqBgB0i+O24ehssW#tMk8S-*dKjuuetdpG2J> z3^V#z^peS<@H5dalSScW5p6*?ye6V8=!W$oTIKF|M?|aK9dR{pxw%b;>Vfz8gVcr( zvo7ns=9^Pbj1)bZ5o5H_$^|J-cTZd@nPViiERoEWI@D;bWUbBvMu{! zvSeG(q59%c(b14xcVB$?dFp4U)(@jtwqHMtWfiLr^*m2Mj3@cc5Ff%kPk$U5Y^v1& z%x2k*iN^yX+L(CU_W}(OP_M=2cKjyZ589fMq8-8jD!PDoaKAM&n9R zOTUitjlp#dnx^1J2}3Z>mxB8nWT{vwS-8nku_l;lH5Mt?rIMRxbR|cj^Mib4z$&yjo$-oK` z9p?<(&Z3EGqhpd$UCqSPA{x)1iFsT8Jzyp-u;KwTu~0G^FcV88qX9GV9T5$fiPfx9 z=eC3$%`)+f=oRy$b0(e_Vcc-vc>K=FOzmK^@qR4WO2e0`*f@uphbVw&`s2NJvXF8y^+X$~=YLS$3jxus_T8n}b87Wun^Pn}ef* znO5^~Cd;njd|V)+HJp!^jQq5SDPy+y=Hpcf=@WiFerx5TMVya!CCeSK)3ofqgYLq9 za?HoxESiiqEmI|N4VaG}EB#UY zTc&Bgh;}U>pJCbZoR7y?b}jPptYlQ4^Rdfrx@L`{^1J|7v24qQxSr*=OS%xZ{YUr; zt62T4Px=;OrKlWE`kux=HfXsBKa?y4t9^^`^9ES~el1zJ$qMkt2H9f#&1UUQb&7H? zM)w|?X|dWA;!sPmBg@WoDMnVtUfg>oEOh3k7Y~p9e#GWa2Q?2*?6SA&yVv#L)*X9H z$;zG{HEnwLnCM@dH&-BGbLF|=i) zKIRv;eJVC3hPDg4F!!z}f14g!F>2@S-_C5EQE@gg^o4Hn?y#+PpW75aOd^=(_|ii$l$LuZu@(4MN$VWGQlR1Y=9d~9Z`=_*Q1Gym_d z%-2)ZOZ8MejHa8cn|VJ=#hU-J&ATz??~&%6X(sPw-kWOrWt-Pj^Uf3%Q}x@3P#3__ PURC!ehkmQqM>hU{)=xPp delta 7869 zcmY+}34ByVwg=#e6f~%SK3N9AnL%J21zZp&<0ywn!_b*t*0?k0;W z;}=!Nmo5!CQj&6JWr;RnJ-so6OO2{js&s%>nqO7w((dNqYp1)GZRrr+w0)SP*$or4cRHHgGym;U8y+pu$`K9o zAJQtM?1K&oyYF;3Q{p=}kWLRcd(`{Vk*+U`-l$8uCmPX=RC|zZd8|DtoK>#gYJH}0 zy3S=CQ7^Z-tTOZ&+tQtuv>r1w47TT`4v15kx{jz|K!j04AJea{r&UFa(mh3!2WvH2 zSK6k^8G5|Y7#)_vmr*mjf7^Jh9%be1*sG>-w$2qj+3UK|bJFsMww)U1=#fL|JimG^ zy1G%WUMt$yy0&|~t{mpGVb7jg<>_6+{!plUf_9{mR=P(gg@jMiomu71k-fs*lXSf3 zIxB${aQoR~qa$qi z@Kb#v^7Xhht3dQYoT6V9{rg6ub?-`l?17@8ZYN|fW;U78~RG7)m26b9Z)Bj|Zt1rBL+%xnQmfu|Ec%wocl5Pic z`^i@BnL1K4n( z^7+*VBi5U+O2Sh{i*%Q<)U?Lce88^oB0W~rmQ^CE6?W2OheVBxiuD~UJuvix@aJ{$ zIKGM=6?!B*pdZL0(M@b~FVP-Wk7a+)3dg1*D@s~BBe>jfR3^T$2CpV+3n6r1%imfzX5ewf;Q2R?DXs&`GG%&*!TZPObk zTD=u|)V*Dgn`Bk1$0_$)dLGM8{!YEvX3k@MyGQKQDk&Uo}(? zwNKC9{pP_6?OVhzmZ>*021JI!4$)wvF!+*XpZ5mP^%=TYjf*x}11PoPjnn{s5z$6! z2q{x-OWJ_puvA1FFaq|oXbv2z5ghdeIW)2nJT#3?3^%6>-^U0#%aH6aEnFD%*0TjqiQ?nx(V4Y+6)xY()$QICX22UMd^AU(oW!e*4LxG4+ zYz>=OHC#zr!-?RDlOi93x`lKZze*gQAJGoNXIf=t7Dl#*fx9>TIbZum@QdZD!{aYT zX2Cd7o4z%XIq>Q%I)UbFal;(g!wNX#n`~~F3;RSZM;ydl_>@({^OFmo+f1!%;ZV8o zt7zv#mm_l_d{gXerXPoz2y=tF895P_v5q)TJa#2AAIe#W zRJ6yT@}a`ERBPL6Pd>aOTGrN~3g9Er#Xc@i0h|y$<4uT|26wHvziCj%H=BoK80MJ< zku2Nc40wcPJDdSsY)j?xx;-;s2&>%rpW%01Ghw2rvx}53%45wI#Xs59GZPkBsrcAv zqjzWfsQYr&D!r3u7W`GhAJgMJ&%za!-D$JIIfq&nnSnm;nGNk&0cR`ML7WdUqAIf< z^C3a>TjXUmAM!->(9DOqqW0-=M*cbc`7GeP#w_8`e#o5<7g@Gsn2XM(?rq7K4;w{P z7Usig5tW7Kz%`Fr+On_!TCr-lxGaET5fzt(aM8%zKQ-;=@j>tTd?J^OMer2MmW)L( zm}N_bAJQbFlHrGOl2OT63=<`zlCc=3OGbBJ1al>$l2HVUNh#)@sALqwatWzq6hj${ zwttG}d8lU9xTs_V;3JkT838yd8I_DBaH4GfXKj36+1L1ySPDO~>_RSu8!Wo%6wgvn z&(TfSxTs_-gE$eDjO9?kvQPdB*dn4Qe+7KbvR7FFXYOlR0-?SIbkQS$ecljT<}z4;L@LCHco&#$ORl)*t!cau% zRRs@=sBl(6JC-e~RnSASH+sG2se-3Phudkj9n!7%ny*6+$!G3x*aLBD2h5bF2kKv{ zwF6EBo9_4Qgfo&YZ*|D?4umbHp#{|PR>wWNAyt%>dCK!HEDL65Jk_u^sP8>{;ii@I zOw=XMhoFk+Dx(9=ny4#=E@r^FG43Glg9k;g$7!_>Jfcf=5+e3P3(>VYeT*KnGWVp_ z0q7c3TJ4WuWZCV%UDo5u{(YiblZl*^t0xBZjrty@i=u1wjk*BOmG%03m~UzDT!*>> zr7XKPS3nojVD0y;E8r5*SE4J>Lqs2uuD~=A)w?TDC8B!wD|~0g749k|JkQtUuSD12 zWgpXS+v~6=sBaoxhXDa<8gQ-~J~!$Hq>5e}{!POhFq&oS-Ax!T8P&U+@Qh?s?|y@4 zC8K)x8~7xnU3&|b1niUHq=I(~N+qOvcN^BqiB#`y!xo!y#kvD~Y-Z+vVbmRnU&8mq zUwiICqKInYT}T#D{kjW_L{z_ihrLVqN%X7a2cM6+2U$z))U-5JN#iRb`c$QH2aD!u zVU)&uHscNfYcI3iQ-^@{S@wGtpxb8r0UB|Hh^~p4YZPhLmp>gLe$1g=irRRz?A243 zegCkpIU7B6S#`v3MbQt18T}wyZL&`Ii)gFKI^l03T7u4~m(u_PPFjM_SVu&&+yxtm zXqLNRl$E(nhw6$geL-r&Uaa$an<)S>m@IlMBhKhgRxU_&M#SK1$sB{IfX}h)!X)A$5iLw2e*7YJ;a7KRIgHM+&bumyejk;H7p*ic zQzHH(87)&H-juBR@gGdfzNK^(-+4{zl!$|wc4H*sB$n+y31^C^`y@R15}kP7m67^u zR1%)C;trGWykyj268<9D?8M(p%l>729`~1o!&obQ{BMs*IF@NADhVgDiqt6;;!VP? ztLVfc6%`WV?Sn&ClWfam%wQF%ZCKx%jJ{x|)zi4nO8p)c;q8w{gIN>rK)hh(^qqdX zm3I*S#PmDAeY%O!Rn`$zC+c6}gRxWjA00+}2V(;3i2AJibblc$O7#Zc5tRFcU9`UNv8xGx3rLyZ85wLgz;6kA}9h;V2)L zTB`W&4mAe%iCVCJ5Zz|g+C(SX4}@c|9xI@lH=*;Iv;6A4DAEX)-H2mw%71B&J&)gj z#-MKzvq&veL%d^fsmK{J(mNJQMNjA<-f_5A)Wu|3xS3^lLN-=OMmr%JKNO7%$@1pl z!TVa~;&I7nU*zI9KH;p8$=>l;6KraJSAptfx?j7WCtzI>t=a^fW97Orw9q>N7fD7{ zZvrlnj23MImP%GPVXkTUXAv#h1pM2}{QhSrY670+(B9JoyuhNFDK;lw5;;Rwcqigj z(G$AZI|=WKx|nP-)_R48ZLgA#^;q^9$;W0Qnwcs1=qvpGXPXvaM+s?a3h)UL&CD~{ zpJfL+71LPuys0==S|+Pi-l;etm}xZ~{VY3&Gq6NNb2tNU8u`owyHba3@XkQBnZ|vd zcm52lZN)WV28K(PpRmQW>@T88oPonwG#G7EAQ?Ssg*Zn<9TsAPt;+nIcfFCi!&`_R zl21A;#O4yxsuf~KD}5~S9n*A$h&n99RV-Vc3-NQ7or^-eC>fRKLVU7Wv`&!P%^OA+&LGNt5dS5mN??@JD zvN>44k_KbDpNoxIMXgMA>J%{-+gYl0Ar7?w6Ygue0F!q&|90E)u!36No^7iJ^)1=g zuHS)QQ$MNx@^#&(Y5Ptw+1a@{IdOSeIbC9M<8$-6Wyf@j8=n=M9iNvI+pSy2?Ch+r zak(){HPyd^Jl^tvUA1RtH^#A|> From f399ba7e29b490a5562207884737fc500979c38d Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 18:48:43 +0100 Subject: [PATCH 26/31] Move handling of system messages out of flush buffer method --- ProjectObsidian/Elements/MIDI.cs | 45 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index e3c06ac..762dc77 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -149,28 +149,6 @@ private void FlushMessageBuffer() Listeners.ForEach(l => l.TriggerProgram(new MIDI_ProgramEventData(e.evt.Channel, e.evt.Msb))); break; - // Unhandled events: - - //SysEx events are probably not worth handling - case MidiEvent.SysEx1: - if (DEBUG) UniLog.Log("UnhandledEvent: SysEx1"); - break; - case MidiEvent.SysEx2: - // Same as EndSysEx - if (DEBUG) UniLog.Log("UnhandledEvent: SysEx2"); - break; - case MidiEvent.MtcQuarterFrame: - if (DEBUG) UniLog.Log("UnhandledEvent: MtcQuarterFrame"); - break; - case MidiEvent.SongPositionPointer: - if (DEBUG) UniLog.Log("UnhandledEvent: SongPositionPointer"); - break; - case MidiEvent.SongSelect: - if (DEBUG) UniLog.Log("UnhandledEvent: SongSelect"); - break; - case MidiEvent.TuneRequest: - if (DEBUG) UniLog.Log("UnhandledEvent: TuneRequest"); - break; default: // This should never happen if (DEBUG) UniLog.Log($"Unrecognized event type! {_eventBuffer[0].evt.EventType}"); @@ -272,6 +250,29 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) if (DEBUG) UniLog.Log("* PAf"); Listeners.ForEach(l => l.TriggerPolyphonicAftertouch(new MIDI_PolyphonicAftertouchEventData(e.Channel, e.Msb, e.Lsb))); break; + + // Unhandled events: + + case MidiEvent.SysEx1: + if (DEBUG) UniLog.Log("UnhandledEvent: SysEx1"); + break; + case MidiEvent.SysEx2: + // AKA EndSysEx + if (DEBUG) UniLog.Log("UnhandledEvent: SysEx2"); + break; + case MidiEvent.MtcQuarterFrame: + if (DEBUG) UniLog.Log("UnhandledEvent: MtcQuarterFrame"); + break; + case MidiEvent.SongPositionPointer: + if (DEBUG) UniLog.Log("UnhandledEvent: SongPositionPointer"); + break; + case MidiEvent.SongSelect: + if (DEBUG) UniLog.Log("UnhandledEvent: SongSelect"); + break; + case MidiEvent.TuneRequest: + if (DEBUG) UniLog.Log("UnhandledEvent: TuneRequest"); + break; + default: shouldBuffer = true; break; From c7d330ca15840df9d312bbeb1392f14b2060de51 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 18:51:44 +0100 Subject: [PATCH 27/31] Remove calls to locale update --- ProjectObsidian/Settings/LocaleHelper.cs | 5 +++-- ProjectObsidian/Settings/MIDI_Settings.cs | 2 -- ProjectObsidian/Settings/PluginSettings.cs | 2 -- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/ProjectObsidian/Settings/LocaleHelper.cs b/ProjectObsidian/Settings/LocaleHelper.cs index 960ce5e..3ad8cfd 100644 --- a/ProjectObsidian/Settings/LocaleHelper.cs +++ b/ProjectObsidian/Settings/LocaleHelper.cs @@ -14,6 +14,7 @@ public static class SettingsLocaleHelper public static void Update(LocaleData _localeData=null) { var data = _localeData ?? _lastLocaleData; + if (data == null) return; _lastLocaleData = data; UpdateDelayed(data); Settings.RegisterValueChanges(localeSettings => UpdateDelayed(data)); @@ -21,8 +22,8 @@ public static void Update(LocaleData _localeData=null) } private static void UpdateDelayed(LocaleData _localeData) { - // I hate having to do an arbitrary delay, but it doesn't work otherwise - Userspace.UserspaceWorld.RunInUpdates(7, () => UpdateIntern(_localeData)); + // I hate having to do an arbitrary delay + Userspace.UserspaceWorld.RunInUpdates(15, () => UpdateIntern(_localeData)); } private static void UpdateIntern(LocaleData _localeData) { diff --git a/ProjectObsidian/Settings/MIDI_Settings.cs b/ProjectObsidian/Settings/MIDI_Settings.cs index e402c86..2023ba4 100644 --- a/ProjectObsidian/Settings/MIDI_Settings.cs +++ b/ProjectObsidian/Settings/MIDI_Settings.cs @@ -61,7 +61,6 @@ public void Remove() private DataFeedItem DeviceToItem(ISyncMember item) { RunSynchronously(RefreshDeviceLists); - RunSynchronously(() => SettingsLocaleHelper.Update()); MIDI_Device device = (MIDI_Device)item; DataFeedGroup dataFeedGroup = new DataFeedGroup(); List list = new List(); @@ -100,7 +99,6 @@ protected override void OnStart() [SyncMethod(typeof(Action), new string[] { })] public void RefreshDeviceLists() { - RunSynchronously(() => SettingsLocaleHelper.Update()); UniLog.Log("Refreshing MIDI device lists!"); foreach(var device in InputDevices.Concat(OutputDevices)) { diff --git a/ProjectObsidian/Settings/PluginSettings.cs b/ProjectObsidian/Settings/PluginSettings.cs index e18f352..559cb9b 100644 --- a/ProjectObsidian/Settings/PluginSettings.cs +++ b/ProjectObsidian/Settings/PluginSettings.cs @@ -93,8 +93,6 @@ private AssemblyTypeRegistry GetObsidianRegistry() [SyncMethod(typeof(Action), new string[] { })] public void TogglePluginLoaded() { - RunSynchronously(() => SettingsLocaleHelper.Update()); - UniLog.Log("Toggling plugin loaded"); if (GetObsidianRegistry() is AssemblyTypeRegistry obsidianRegistry) From 8691e86a1c4ec7f78461f181e1b9d6f05e9c47fd Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Sun, 28 Sep 2025 18:53:34 +0100 Subject: [PATCH 28/31] remove useless stuff --- ProjectObsidian/Elements/MIDI.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 762dc77..6fe062d 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -73,8 +73,6 @@ public class MidiInputConnection private long _lastEventBufferStartTime = 0; - //private byte runningStatus; - private const bool DEBUG = true; public void Initialize() @@ -186,9 +184,6 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) var str = e.ToString(); if (DEBUG) UniLog.Log("* " + str); - // Msb is dataByte1 - // Lsb is dataByte2 - bool shouldBuffer = false; switch (e.EventType) { From 8ffc8a9ce05eacd016bc941103ca4ef3f8eb04e0 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Tue, 30 Sep 2025 20:34:01 +0100 Subject: [PATCH 29/31] Turn off debug --- ProjectObsidian/Elements/MIDI.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 6fe062d..32b4b26 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -73,7 +73,7 @@ public class MidiInputConnection private long _lastEventBufferStartTime = 0; - private const bool DEBUG = true; + private const bool DEBUG = false; public void Initialize() { From efbcaa3f9161f991cac1443a900c68becc97e0aa Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Tue, 30 Sep 2025 20:36:12 +0100 Subject: [PATCH 30/31] Remove debug stuff --- ProjectObsidian/Elements/MIDI.cs | 4 ++-- ProjectObsidian/Settings/PluginSettings.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 32b4b26..54cca39 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -159,14 +159,14 @@ private void FlushMessageBuffer() public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) { + if (DEBUG) UniLog.FlushEveryMessage = true; + if (DEBUG) UniLog.Log($"*** New midi message"); if (DEBUG) UniLog.Log($"* Received {args.Length} bytes"); if (DEBUG) UniLog.Log($"* Start: {args.Start}"); if (DEBUG) UniLog.Log($"* Raw bytes: {string.Join(",", args.Data.Skip(args.Start).Take(args.Length).Select(b => string.Format("{0:X}", b)))}"); - UniLog.FlushEveryMessage = true; - long timestamp = args.Timestamp; if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) // Timestamp is always zero on Linux with the Alsa Midi API { diff --git a/ProjectObsidian/Settings/PluginSettings.cs b/ProjectObsidian/Settings/PluginSettings.cs index 559cb9b..9231945 100644 --- a/ProjectObsidian/Settings/PluginSettings.cs +++ b/ProjectObsidian/Settings/PluginSettings.cs @@ -49,7 +49,7 @@ protected override void OnStart() _localeData.Messages.Add("Settings.PluginSettings", "Plugin Settings"); _localeData.Messages.Add("Settings.PluginSettings.PluginLoaded", "Plugin Loaded"); _localeData.Messages.Add("Settings.PluginSettings.TogglePluginLoaded", "Toggle loading the plugin for new sessions"); - _localeData.Messages.Add("Settings.PluginSettings.RefreshLocale", "(Debug) Refresh Locale"); + _localeData.Messages.Add("Settings.PluginSettings.RefreshLocale", "Refresh Locale"); _localeData.Messages.Add("Settings.MIDI_Settings", "MIDI Settings"); _localeData.Messages.Add("Settings.MIDI_Settings.RefreshDeviceLists", "Refresh Devices"); From cf85deb85bc0e471da4312d29aef5a263973fb27 Mon Sep 17 00:00:00 2001 From: Nytra <14206961+Nytra@users.noreply.github.com> Date: Tue, 30 Sep 2025 20:40:55 +0100 Subject: [PATCH 31/31] Adjust a debug thing --- ProjectObsidian/Elements/MIDI.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ProjectObsidian/Elements/MIDI.cs b/ProjectObsidian/Elements/MIDI.cs index 54cca39..8a7b8df 100644 --- a/ProjectObsidian/Elements/MIDI.cs +++ b/ProjectObsidian/Elements/MIDI.cs @@ -181,8 +181,11 @@ public async void OnMessageReceived(object sender, MidiReceivedEventArgs args) foreach (var e in events) { - var str = e.ToString(); - if (DEBUG) UniLog.Log("* " + str); + if (DEBUG) + { + var str = e.ToString(); + UniLog.Log("* " + str); + } bool shouldBuffer = false; switch (e.EventType)