<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Developers &amp; MIDI 2.0 Specifications - MIDI.org Forum				            </title>
            <link>https://midi.org/community/midi-specifications</link>
            <description>MIDI.org Discussion Board</description>
            <language>en-US</language>
            <lastBuildDate>Tue, 30 Jun 2026 07:59:46 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>MIDI-CI Property Exchange Subscription: recommended baseline synchronization after Subscription Start?</title>
                        <link>https://midi.org/community/midi-specifications/midi-ci-property-exchange-subscription-recommended-baseline-synchronization-after-subscription-start</link>
                        <pubDate>Mon, 29 Jun 2026 06:42:46 +0000</pubDate>
                        <description><![CDATA[I’m currently implementing the Responder side of MIDI-CI Property Exchange Subscription, and I have a question about the recommended synchronization behavior after Subscription Start.
As I ...]]></description>
                        <content:encoded><![CDATA[<p class="isSelectedEnd"><span>I’m currently implementing the Responder side of MIDI-CI Property Exchange Subscription, and I have a question about the recommended synchronization behavior after Subscription Start.</span></p>
<p class="isSelectedEnd"><span>As I understand it, there is a possible race condition around the initial baseline state.</span></p>
<p class="isSelectedEnd"><span>For example:</span></p>
<ol start="1" data-spread="false">
<li><span>The Initiator performs Get and obtains the current full state of a resource.</span></li>
<li><span>The Responder’s resource changes after that Get response.</span></li>
<li><span>The Initiator sends Subscription Start.</span></li>
<li><span>The Responder accepts the subscription and then starts sending Subscription Partial updates for subsequent changes.</span></li>
</ol>
<p class="isSelectedEnd"><span>In this sequence, the change that happened between the initial Get and the Subscription Start may not be observed by the Initiator, unless the Initiator performs another Get after Subscription Start to establish a reliable baseline.</span></p>
<p class="isSelectedEnd"><span>From an interoperability point of view, it seems safest if Initiators are recommended to perform Get after Subscription Start has been accepted, and then apply subsequent Subscription Partial updates on top of that state.</span></p>
<p class="isSelectedEnd"><span>Is there any plan to clarify this in the specification or implementation guidelines?</span></p>
<p class="isSelectedEnd"><span>If this behavior is not recommended or required for Initiators, then as a conservative Responder implementation, I may need to send Subscription Notify immediately after accepting Subscription Start, in order to prompt the Initiator to retrieve the current full state.</span></p>
<p class="isSelectedEnd"><span>However, if both sides behave conservatively, this can result in redundant Gets:</span></p>
<ul data-spread="false">
<li><span>The Initiator sends Get after Subscription Start to establish the baseline.</span></li>
<li><span>The Responder also sends Subscription Notify after Subscription Start to prompt a Get.</span></li>
<li><span>The Initiator may then perform an additional Get because of the Notify.</span></li>
</ul>
<p class="isSelectedEnd"><span>This is not necessarily incorrect, but it seems inefficient and could lead to inconsistent implementation patterns between devices.</span></p>
<p class="isSelectedEnd"><span>So my questions are:</span></p>
<ol start="1" data-spread="false">
<li><span>Is the intended/recommended behavior that an Initiator should perform Get after Subscription Start has been accepted, in order to establish a reliable initial baseline?</span></li>
<li><span>If so, would it be appropriate to clarify this as a recommended practice in the specification or implementation guidelines?</span></li>
<li><span>If not, what is the recommended Responder behavior to avoid missed changes around Subscription Start?</span></li>
<li><span>Should a Responder send Subscription Notify immediately after accepting Subscription Start, or should it avoid doing so to prevent redundant Gets?</span></li>
</ol>
<p><span>My main concern is ensuring that the Initiator and Responder can share a complete and correct resource image without relying on implementation-specific assumptions.</span></p>]]></content:encoded>
						                            <category domain="https://midi.org/community/midi-specifications">Developers &amp; MIDI 2.0 Specifications</category>                        <dc:creator>Ryo Susami</dc:creator>
                        <guid isPermaLink="true">https://midi.org/community/midi-specifications/midi-ci-property-exchange-subscription-recommended-baseline-synchronization-after-subscription-start</guid>
                    </item>
				                    <item>
                        <title>Getting JR Timestamps working on a USB MIDI 2.0 translator device</title>
                        <link>https://midi.org/community/midi-specifications/getting-jr-timestamps-working-on-a-usb-midi-2-0-translator-device</link>
                        <pubDate>Mon, 25 May 2026 09:14:22 +0000</pubDate>
                        <description><![CDATA[I&#039;ve been building a USB MIDI 2.0 8-port DIN interface on an RP2040 and have gotten it enumerating correctly on Linux (kernel 6.17) as a UMP Streaming device (ALSA leaves the JR clock handli...]]></description>
                        <content:encoded><![CDATA[<p>I've been building a USB MIDI 2.0 8-port DIN interface on an RP2040 and have gotten it enumerating correctly on Linux (kernel 6.17) as a UMP Streaming device (ALSA leaves the JR clock handling to the application). On macOS (Tahoe) isn't CoreMidi supposed to handle the JR timestamps/clocks? <br /><br />The device: A translator/interface - USB MIDI 2.0 on one side, 8 physical DIN MIDI 1.0 ports on the other. The DIN ports carry MIDI 1.0 content, so the Function Block midiProtocol is correctly set to 0x01.<br /><br />What works on macOS: After several rounds of descriptor fixes (IAD triplet, CS_INTERFACE GTB type, MS Header in alt-0, UAC 1.0 AC header format), AppleMIDIUSBDriver binds correctly and MIDIServer enumerates the device as a UMP device. MIDIServer logs confirm it reads gtb.midiProtocol=0x2 from the inline GTBs in alt-1. UMP Endpoint Discovery completes successfully.<br /><br />The problem: macOS only ever negotiates MIDI-1UP - it sends a Stream Config Request with protocol=0x01 and does not accept counter-proposals for protocol=0x02. The device appears in CoreMIDI as a standard MIDI 1.0 device. JR Timestamps/clocks are never send from the host.<br /><br />What I've tried:<br /><br />Setting bMIDIProtocol=0x02 in inline GTB descriptors (macOS reads it correctly but still negotiates 0x01)<br />Announcing midi1=true, midi2=true in Endpoint Info (no change)<br />Announcing midi1=false, midi2=true (device disappears from CoreMIDI - macOS apparently requires midi1 support)<br />Counter-proposing protocol=0x02 in Stream Config Notification (macOS ignores it and resends the 0x01 request)<br />The conclusion from MIDIServer logs is that configureDeviceUsingPortMap makes a hardcoded decision - seemingly based on the Function Block midiProtocol field - regardless of what the Endpoint Info capability flags say.<br /><br />The question:<br /><br />Are JR Timestamps ever achievable on macOS for a translator device whose function blocks report midiProtocol=0x01? Or does macOS require midiProtocol=0x02 function blocks to offer MIDI-2UP negotiation?<br /><br />If a device sets midiProtocol=0x02 on its function blocks (meaning it would present the DIN ports to the host as MIDI 2.0 channels), does macOS then negotiate MIDI-2UP and honour JR Timestamps?<br /><br />Is there any MIDI-CI or UMP Stream exchange that can prompt macOS to switch to MIDI-2UP after initial enumeration?<br /><br />And what is up with the phantom Midi 2 device with 0 ins/outs ? <br /><br />Any insight from people who have shipped MIDI 2.0 devices that work under CoreMIDI would be very welcome.</p>]]></content:encoded>
						                            <category domain="https://midi.org/community/midi-specifications">Developers &amp; MIDI 2.0 Specifications</category>                        <dc:creator>Johannes</dc:creator>
                        <guid isPermaLink="true">https://midi.org/community/midi-specifications/getting-jr-timestamps-working-on-a-usb-midi-2-0-translator-device</guid>
                    </item>
				                    <item>
                        <title>Port 255 (Midi 1.0)</title>
                        <link>https://midi.org/community/midi-specifications/port-255-midi-1-0</link>
                        <pubDate>Wed, 20 May 2026 12:06:48 +0000</pubDate>
                        <description><![CDATA[If I in a midi file see a port value of 11111111, how should i interpret it?What is most likely the midi authors intention with that number?Right now I am simply allocating it to port 255 in...]]></description>
                        <content:encoded><![CDATA[<p>If I in a midi file see a port value of 11111111, how should i interpret it?<br />What is most likely the midi authors intention with that number?<br />Right now I am simply allocating it to port 255 in my app, since then it at least does not interfere with any of the 'normal' ports.<br />AI suggests it could mean its connected to all ports at same time, omni. Or that it means unassigned, which I guess is port 0, but what if there is tracks with port <br />0.<br />PS. I know ports is not part of standard midi 1.0 spec, but I hope one of you still knows the answer.<br /><br />Thanks for any answers.</p>]]></content:encoded>
						                            <category domain="https://midi.org/community/midi-specifications">Developers &amp; MIDI 2.0 Specifications</category>                        <dc:creator>Lido</dc:creator>
                        <guid isPermaLink="true">https://midi.org/community/midi-specifications/port-255-midi-1-0</guid>
                    </item>
				                    <item>
                        <title>MPE forum GENERAL</title>
                        <link>https://midi.org/community/midi-specifications/mpe-forum-general</link>
                        <pubDate>Sun, 03 May 2026 11:58:29 +0000</pubDate>
                        <description><![CDATA[From my own collection tests, here&#039;s what I&#039;m considering. Do others agree or have better suggestions for these groups?
 
I have a collection of MPE devices and am currently mapping out re...]]></description>
                        <content:encoded><![CDATA[<div>From my own collection tests, here's what I'm considering. Do others agree or have better suggestions for these groups?</div>
<div> </div>
<div>I have a collection of MPE devices and am currently mapping out recommendations for different user scenarios.</div>
<div> </div>
<div>I’d appreciate forum input on which MPE controllers (hardware or touch‑based) you’d suggest for:</div>
<div> </div>
<div>· Users with physical disabilities (e.g., limited hand mobility, low force, single‑finger use)</div>
<div>· Previously trained musicians (may need familiar feel or minimal relearning)</div>
<div>· People with trauma histories, including CSA (needs around agency, sensory safety, body awareness)</div>
<div>· Other impacts (chronic pain, hospitalisation, distance education, fatigue)</div>
<div> </div>
<div>I have my own shortlist but want to hear real‑world experiences and preferences from this community.</div>
<div> </div>
<div>Thanks for any feedback.</div>
<div> </div>
<div>P.S. – If you’ve tried more than one device for any of the above, please share what worked best and why.</div>
<div>(I’ll be posting brand‑specific queries separately.)</div>]]></content:encoded>
						                            <category domain="https://midi.org/community/midi-specifications">Developers &amp; MIDI 2.0 Specifications</category>                        <dc:creator>Tony</dc:creator>
                        <guid isPermaLink="true">https://midi.org/community/midi-specifications/mpe-forum-general</guid>
                    </item>
				                    <item>
                        <title>My journey with USB MIDI 2.0 in TinyUSB</title>
                        <link>https://midi.org/community/midi-specifications/my-journey-with-usb-midi-2-0-in-tinyusb</link>
                        <pubDate>Wed, 22 Apr 2026 01:59:06 +0000</pubDate>
                        <description><![CDATA[Hello, my friends. I&#039;m Saulo, writing from Brazil, (Brasília, Capital).
It&#039;s been a few months since I started working hard on implementing USB MIDI 2.0 on embedded systems. My starting poi...]]></description>
                        <content:encoded><![CDATA[<p>Hello, my friends. I'm Saulo, writing from Brazil, (Brasília, Capital).</p>
<p>It's been a few months since I started working hard on implementing USB MIDI 2.0 on embedded systems. My starting points were Andrew Mee's AM_MIDI2.0Lib (MIDI 2.0 protocol), AmeNote's tusb_ump, and Mike Kent's ProtoZOA (embedded and USB), along with the official specs. My interest in this topic came from work I've been doing for a few years on MIDI transports for ESP32 (&lt;a href=&quot; <span style="color:#aaa">removed link</span> " target="_blank" rel="noopener noreferrer"&gt;ESP32_Host_MIDI</a>). Along that path, I've been learning a bit about embedded architecture and the transport layer, especially USB.</p>
<p>It took many weeks of testing against Linux and Windows hosts, reading through M2-104-UM and the USB MIDI 2.0 Class Definition paragraph by paragraph. Last month I reached a stable version using TinyUSB, both Device and Host modes, validated first on RP2040 and then on Adafruit Feather RP2040 Host (Pico SDK, CMake). After testing across several devices, I opened the upstream PR: &lt;a href=&quot; <span style="color:#aaa">removed link</span> " target="_blank" rel="noopener noreferrer"&gt; <span style="color:#aaa">removed link</span> </a>.</p>
<p>Since then, I've been running a local branch based on the PR to keep the work moving. And that's the reason for this post: to see if others are on the same path and find allies here in the forum to push embedded MIDI 2.0 forward. So far, on my bench, I've enumerated on RP2040, RP2350, ESP32, Nordic nRF52840, and SAMD21. All of them enumerated cleanly on both Windows MIDI Services and Linux.</p>
<p>One angle in particular has been getting special attention: Teensy, Daisy Seed, and ESP32-P4. These are hacker-friendly boards with real audio processing capability. The experiments on these three are well under way, and this axis, where MIDI 2.0 meets real embedded audio, is where I'm going deeper.</p>
<p>It's been a really good experience. I'm excited about where this is going, and it would be great to find others walking a similar path.</p>]]></content:encoded>
						                            <category domain="https://midi.org/community/midi-specifications">Developers &amp; MIDI 2.0 Specifications</category>                        <dc:creator>Saulo Verissimo</dc:creator>
                        <guid isPermaLink="true">https://midi.org/community/midi-specifications/my-journey-with-usb-midi-2-0-in-tinyusb</guid>
                    </item>
				                    <item>
                        <title>I am currently working on integrating MIDI 2.0 in my hardware/software projects and I have a few questions about the specifications:</title>
                        <link>https://midi.org/community/midi-specifications/i-am-currently-working-on-integrating-midi-2-0-in-my-hardware-software-projects-and-i-have-a-few-questions-about-the-specifications</link>
                        <pubDate>Sun, 08 Mar 2026 08:41:19 +0000</pubDate>
                        <description><![CDATA[1. What are the recommended best practices for creating **custom MIDI 2.0 profiles** to ensure compatibility with major DAWs and instruments? 2. How should **Property Exchange messages** be ...]]></description>
                        <content:encoded><![CDATA[<p>1. What are the recommended best practices for creating **custom MIDI 2.0 profiles** to ensure compatibility with major DAWs and instruments? <br />2. How should **Property Exchange messages** be used to communicate custom data between devices? <br />3. Is there support for **per-note features beyond standard channel messages** in the current MIDI 2.0 specification?<br /><br />Additionally, I have developed a **Time Calculator Tool for MIDI 2.0 developers** that may help others working on MIDI projects: ( <span style="color:#aaa">removed link</span> )<br /><br />Any guidance, examples, or references to official documentation would be greatly appreciated.</p>]]></content:encoded>
						                            <category domain="https://midi.org/community/midi-specifications">Developers &amp; MIDI 2.0 Specifications</category>                        <dc:creator>time CalculatorX</dc:creator>
                        <guid isPermaLink="true">https://midi.org/community/midi-specifications/i-am-currently-working-on-integrating-midi-2-0-in-my-hardware-software-projects-and-i-have-a-few-questions-about-the-specifications</guid>
                    </item>
				                    <item>
                        <title>WebMIDI Working Group and a new community WebMIDI directory</title>
                        <link>https://midi.org/community/midi-specifications/webmidi-working-group-and-a-new-community-webmidi-directory</link>
                        <pubDate>Fri, 06 Mar 2026 16:29:03 +0000</pubDate>
                        <description><![CDATA[Hi everyone &#x1f44b;
I had a catch-up with Athan Billias recently, regarding WebMIDI.It started out as a chat about my a new App I&#039;m developing, called MIDIWeb ( removed link ) - a browser...]]></description>
                        <content:encoded><![CDATA[<p class="p1">Hi everyone &#x1f44b;</p>
<p class="p1">I had a catch-up with Athan Billias recently, regarding WebMIDI.<br />It started out as a chat about my a new App I'm developing, called MIDIWeb ( <span style="color:#aaa">removed link</span> ) - a browser focused on making WebMIDI practical on iOS.<br />It ended up with a suggestion of:<br /><br /><em>'You should start a community-driven site for cool WebMIDI sites to help spread the word and gain some momentum in preparation of WebMIDI 2.0 support... and maybe see if there's appetite for a WebMIDI working group..."</em></p>
<p class="p1">So this post is an attempt to get a little momentum going in the open:</p>
<p class="p1"><strong>1) Is there interest here in forming a lightweight “WebMIDI Working Group” (or special interest group) focused on:</strong></p>
<ul>
<li class="p1">increasing awareness + practical adoption of WebMIDI</li>
<li class="p1">sharing best practices / dev pitfalls / security + permissions gotchas</li>
<li class="p1">helping keep energy behind "WebMIDI + MIDI 2.0" discussions (and feeding that back into the right standards channels)</li>
</ul>
<p class="p1"><strong>2) Do initiatives like this already exist that I’m missing?</strong></p>
<ul>
<li class="p1">I’m aware the old W3C Web MIDI Community Group is closed, and there are broader audio groups — but I’m specifically wondering if there’s an <strong>active, practical</strong> community hub today for WebMIDI work?</li>
</ul>
<p class="p1">As a first step, I’ve put together a community-driven directory of WebMIDI sites/tools, so people can quickly see what’s possible and add their favourites:</p>
<p class="p1"><span class="Apple-converted-space">   </span>MIDIWeb Hub: &lt;a href=&quot; <span style="color:#aaa">removed link</span> "&gt; <span style="color:#aaa">removed link</span> </a></p>
<p class="p1">This directory is now also the home page of MIDIWeb, but the directory itself is meant to be useful regardless of what browser/app you use. I’d love for it to become a “living list” that the community actually maintains.</p>
<p class="p1">If a WebMIDI Working Group <strong>does</strong> sound worthwhile, a few possible starter outputs could be:</p>
<ul>
<li class="p1">a curated "Top WebMIDI examples" shortlist (education, performance, tools, games, utilities) - <em>perhaps piggybacking on MIDIWeb-Hub?</em></li>
<li class="p1">a simple "Getting started" + "Known issues across platforms", "WebMIDI Learning resources"  doc</li>
<li class="p1">a wish-list / priority list for “WebMIDI + MIDI 2.0” features that developers would actually use</li>
<li class="p1">coordination with any existing MIDI 2.0 / education efforts (so WebMIDI doesn’t become an island)</li>
</ul>
<p class="p1">If you’re interested, reply with:</p>
<ul>
<li class="p1">"Yes, I’d join" + (<em>and what you’d want it to achieve</em>)</li>
<li class="p1">any existing groups/threads/people I should connect with?</li>
<li class="p1">any WebMIDI sites/tools you think absolutely should be in the directory?</li>
</ul>
<p class="p1">The goal here is just to get the ball rolling and see if there’s real signal before we over-organise anything! &#x1f642; </p>
<p class="p1">Cheers,<br />Ant, 5of12<br />JOIN THE MIDIWEB TESTFLIGHT BETA:  <span style="color:#aaa">removed link</span> </p>]]></content:encoded>
						                            <category domain="https://midi.org/community/midi-specifications">Developers &amp; MIDI 2.0 Specifications</category>                        <dc:creator>Antony Nasce</dc:creator>
                        <guid isPermaLink="true">https://midi.org/community/midi-specifications/webmidi-working-group-and-a-new-community-webmidi-directory</guid>
                    </item>
				                    <item>
                        <title>188CM (2026) – Web MIDI Performance Across Android 7–14</title>
                        <link>https://midi.org/community/midi-specifications/188cm-2026-web-midi-performance-across-android-7-14</link>
                        <pubDate>Sat, 28 Feb 2026 02:57:05 +0000</pubDate>
                        <description><![CDATA[I’ve been conducting internal experiments under the &lt;a title=&quot;188CM&quot; href=&quot; removed link &quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;188CM lab environment to evaluate Web MIDI timi...]]></description>
                        <content:encoded><![CDATA[<p data-start="143" data-end="423">I’ve been conducting internal experiments under the &lt;a title=&quot;188CM&quot; href=&quot; <span style="color:#aaa">removed link</span> " target="_blank" rel="noopener"&gt;188CM</a> lab environment to evaluate Web MIDI timing across a range of Android devices. The goal is to understand how multi-channel MIDI events behave on mid-range phones with USB-MIDI connections under real-world conditions.</p>
<p data-start="425" data-end="582">This setup is strictly experimental — not a public release. It focuses on measuring event latency, jitter, and buffer performance during extended sessions.</p>
<p data-start="584" data-end="598"><strong data-start="584" data-end="598">Test Setup</strong></p>
<ul data-start="600" data-end="815">
<li data-start="600" data-end="634">
<p data-start="602" data-end="634"><strong data-start="602" data-end="623">Android Versions:</strong> 7.0 → 14</p>
</li>
<li data-start="635" data-end="688">
<p data-start="637" data-end="688"><strong data-start="637" data-end="649">Devices:</strong> 3–8 GB RAM, typical mid-range models</p>
</li>
<li data-start="689" data-end="720">
<p data-start="691" data-end="720"><strong data-start="691" data-end="710">MIDI Interface:</strong> USB OTG</p>
</li>
<li data-start="721" data-end="753">
<p data-start="723" data-end="753"><strong data-start="723" data-end="735">Browser:</strong> Chrome (stable)</p>
</li>
<li data-start="754" data-end="815">
<p data-start="756" data-end="815"><strong data-start="756" data-end="775">Load Scenarios:</strong> idle vs moderate background processes</p>
</li>
</ul>
<p data-start="817" data-end="840"><strong data-start="817" data-end="840">Testing Methodology</strong></p>
<ul data-start="842" data-end="1025">
<li data-start="842" data-end="895">
<p data-start="844" data-end="895">External metronome at 120 BPM as timing reference</p>
</li>
<li data-start="896" data-end="943">
<p data-start="898" data-end="943">Capture timestamps via JavaScript callbacks</p>
</li>
<li data-start="944" data-end="985">
<p data-start="946" data-end="985">Record 500–1000 event cycles per test</p>
</li>
<li data-start="986" data-end="1025">
<p data-start="988" data-end="1025">Analyze median latency and variance</p>
</li>
</ul>
<p data-start="1027" data-end="1043"><strong data-start="1027" data-end="1043">Observations</strong></p>
<p data-start="1045" data-end="1066"><strong data-start="1045" data-end="1064">Baseline / Idle</strong></p>
<ul data-start="1067" data-end="1157">
<li data-start="1067" data-end="1095">
<p data-start="1069" data-end="1095">Average latency: 9–13 ms</p>
</li>
<li data-start="1096" data-end="1121">
<p data-start="1098" data-end="1121">Jitter range: ±3–5 ms</p>
</li>
<li data-start="1122" data-end="1157">
<p data-start="1124" data-end="1157">UI performance stable at 60 FPS</p>
</li>
</ul>
<p data-start="1159" data-end="1186"><strong data-start="1159" data-end="1184">Under Background Load</strong></p>
<ul data-start="1187" data-end="1330">
<li data-start="1187" data-end="1230">
<p data-start="1189" data-end="1230">Latency spikes: 17–22 ms on Android 7–9</p>
</li>
<li data-start="1231" data-end="1274">
<p data-start="1233" data-end="1274">Minor jitter during USB reauthorization</p>
</li>
<li data-start="1275" data-end="1330">
<p data-start="1277" data-end="1330">Drift visible after idle periods over 15–20 minutes</p>
</li>
</ul>
<p data-start="1332" data-end="1362"><strong data-start="1332" data-end="1360">Android 11+ Improvements</strong></p>
<ul data-start="1363" data-end="1453">
<li data-start="1363" data-end="1412">
<p data-start="1365" data-end="1412">Event buffer consistency significantly better</p>
</li>
<li data-start="1413" data-end="1453">
<p data-start="1415" data-end="1453">Fewer spikes and lower overall drift</p>
</li>
</ul>
<p data-start="1455" data-end="1478"><strong data-start="1455" data-end="1478">Additional Insights</strong></p>
<ul data-start="1480" data-end="1703">
<li data-start="1480" data-end="1545">
<p data-start="1482" data-end="1545">Older Android kernels seem sensitive to USB polling intervals</p>
</li>
<li data-start="1546" data-end="1626">
<p data-start="1548" data-end="1626">Chrome stable handles event queues more predictably than some Chromium forks</p>
</li>
<li data-start="1627" data-end="1703">
<p data-start="1629" data-end="1703">Resetting USB authorization occasionally improves long-session stability</p>
</li>
</ul>
<p data-start="1705" data-end="1743"><strong data-start="1705" data-end="1743">Open Questions / Discussion Points</strong></p>
<ul data-start="1745" data-end="2186">
<li data-start="1745" data-end="1841">
<p data-start="1747" data-end="1841">Any experience profiling Web MIDI timing on Android 7 or 8 with high-resolution instruments?</p>
</li>
<li data-start="1842" data-end="1923">
<p data-start="1844" data-end="1923">Recommended buffering strategies to keep drift below 10 ms for long sessions?</p>
</li>
<li data-start="1924" data-end="2002">
<p data-start="1926" data-end="2002">Known OTG limitations for mid-range devices under sustained MIDI playback?</p>
</li>
<li data-start="2003" data-end="2092">
<p data-start="2005" data-end="2092">Best practices for maintaining stable Web MIDI sessions over 30–60 minutes on mobile?</p>
</li>
<li data-start="2093" data-end="2186">
<p data-start="2095" data-end="2186">Benchmark comparisons from real-world <strong data-start="2133" data-end="2142">188CM</strong> setups outside controlled lab conditions?</p>
</li>
</ul>
<p data-start="2188" data-end="2371">Would love to hear insights or shared experiences from developers working with Web MIDI on Android — especially if you’ve tested long-duration sessions using <strong data-start="2346" data-end="2355">188CM</strong> environments.</p>]]></content:encoded>
						                            <category domain="https://midi.org/community/midi-specifications">Developers &amp; MIDI 2.0 Specifications</category>                        <dc:creator>188CM -Club</dc:creator>
                        <guid isPermaLink="true">https://midi.org/community/midi-specifications/188cm-2026-web-midi-performance-across-android-7-14</guid>
                    </item>
				                    <item>
                        <title>USB-MIDI Resume Jitter After Idle on Android – Field Observation</title>
                        <link>https://midi.org/community/midi-specifications/usb-midi-resume-jitter-after-idle-on-android-field-observation</link>
                        <pubDate>Sat, 28 Feb 2026 02:27:23 +0000</pubDate>
                        <description><![CDATA[During recent mobile Web MIDI testing, I encountered a recurring timing instability after extended idle sessions on several Android devices.
The tests were conducted using an internal bench...]]></description>
                        <content:encoded><![CDATA[<p data-start="234" data-end="374">During recent mobile Web MIDI testing, I encountered a recurring timing instability after extended idle sessions on several Android devices.</p>
<p data-start="376" data-end="546">The tests were conducted using an internal benchmark harness (code name: &lt;a href=&quot; <span style="color:#aaa">removed link</span> " target="_blank" rel="noopener"&gt;VN68 Lab</a>, 2026 iteration), designed strictly for event timing diagnostics and routing simulation.</p>
<p data-start="548" data-end="703">This is not a public software release — it is simply a controlled test environment used to observe real-time MIDI behavior under varying system conditions.</p>
<hr data-start="705" data-end="708" />
<h3 data-start="710" data-end="725">Environment</h3>
<ul data-start="727" data-end="847">
<li data-start="727" data-end="751">
<p data-start="729" data-end="751">Android 8–13 devices</p>
</li>
<li data-start="752" data-end="773">
<p data-start="754" data-end="773">3GB–6GB RAM range</p>
</li>
<li data-start="774" data-end="794">
<p data-start="776" data-end="794">USB-MIDI via OTG</p>
</li>
<li data-start="795" data-end="822">
<p data-start="797" data-end="822">Chrome (stable channel)</p>
</li>
<li data-start="823" data-end="847">
<p data-start="825" data-end="847">Web MIDI API enabled</p>
</li>
</ul>
<hr data-start="849" data-end="852" />
<h3 data-start="854" data-end="875">Observed Behavior</h3>
<p data-start="877" data-end="925">After approximately 15–25 minutes of inactivity:</p>
<ul data-start="927" data-end="1087">
<li data-start="927" data-end="992">
<p data-start="929" data-end="992">Initial incoming MIDI events show irregular timestamp offsets</p>
</li>
<li data-start="993" data-end="1029">
<p data-start="995" data-end="1029">Short burst of jitter (~15–30ms)</p>
</li>
<li data-start="1030" data-end="1087">
<p data-start="1032" data-end="1087">Stabilization typically occurs after 5–8 event cycles</p>
</li>
</ul>
<p data-start="1089" data-end="1145">The issue does <strong data-start="1104" data-end="1111">not</strong> occur during continuous playback.</p>
<p data-start="1147" data-end="1303">Interestingly, when replicating the same scenario inside the VN68 test harness, the behavior appears more pronounced on Android 8–9 compared to Android 11+.</p>
<hr data-start="1305" data-end="1308" />
<h3 data-start="1310" data-end="1324">Hypotheses</h3>
<p data-start="1326" data-end="1356">Possible contributing factors:</p>
<ul data-start="1358" data-end="1541">
<li data-start="1358" data-end="1410">
<p data-start="1360" data-end="1410">OTG polling interval reset after low-power state</p>
</li>
<li data-start="1411" data-end="1455">
<p data-start="1413" data-end="1455">Android kernel power management behavior</p>
</li>
<li data-start="1456" data-end="1498">
<p data-start="1458" data-end="1498">Browser event queue reactivation delay</p>
</li>
<li data-start="1499" data-end="1541">
<p data-start="1501" data-end="1541">USB permission reinitialization timing</p>
</li>
</ul>
<hr data-start="1543" data-end="1546" />
<h3 data-start="1548" data-end="1573">Experiments Conducted</h3>
<ul data-start="1575" data-end="1792">
<li data-start="1575" data-end="1657">
<p data-start="1577" data-end="1657">Manually reinitializing USB permission → partially reduces first-spike latency</p>
</li>
<li data-start="1658" data-end="1730">
<p data-start="1660" data-end="1730">Keeping a low-frequency MIDI clock active → reduces drift occurrence</p>
</li>
<li data-start="1731" data-end="1792">
<p data-start="1733" data-end="1792">Disabling battery optimization → inconsistent improvement</p>
</li>
</ul>
<hr data-start="1794" data-end="1797" />
<h3 data-start="1799" data-end="1830">Questions for the Community</h3>
<ul data-start="1832" data-end="2130">
<li data-start="1832" data-end="1900">
<p data-start="1834" data-end="1900">Has anyone observed OTG polling instability after extended idle?</p>
</li>
<li data-start="1901" data-end="1974">
<p data-start="1903" data-end="1974">Are there known Android kernel behaviors affecting USB resume timing?</p>
</li>
<li data-start="1975" data-end="2056">
<p data-start="1977" data-end="2056">Would maintaining a lightweight keep-alive clock be considered best practice?</p>
</li>
<li data-start="2057" data-end="2130">
<p data-start="2059" data-end="2130">Any documented Web MIDI scheduling caveats on pre-Android 10 devices?</p>
</li>
</ul>
<p data-start="2132" data-end="2203">Interested in real-world implementation insights beyond lab conditions.</p>
<p data-start="2205" data-end="2240">Appreciate any shared observations.</p>]]></content:encoded>
						                            <category domain="https://midi.org/community/midi-specifications">Developers &amp; MIDI 2.0 Specifications</category>                        <dc:creator>VN68 -Club</dc:creator>
                        <guid isPermaLink="true">https://midi.org/community/midi-specifications/usb-midi-resume-jitter-after-idle-on-android-field-observation</guid>
                    </item>
				                    <item>
                        <title>Amature Radio Applications - HAM</title>
                        <link>https://midi.org/community/midi-specifications/amature-radio-applications-ham</link>
                        <pubDate>Tue, 24 Feb 2026 20:55:55 +0000</pubDate>
                        <description><![CDATA[This &lt;a title=&quot;Ham Radio MIDI Application&quot; href=&quot; removed link &quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;podcast  discusses application of MIDI interface to operating and logging...]]></description>
                        <content:encoded><![CDATA[<p>This &lt;a title=&quot;Ham Radio MIDI Application&quot; href=&quot; <span style="color:#aaa">removed link</span> " target="_blank" rel="noopener"&gt;podcast </a> discusses application of MIDI interface to operating and logging HAM radio operation.</p>]]></content:encoded>
						                            <category domain="https://midi.org/community/midi-specifications">Developers &amp; MIDI 2.0 Specifications</category>                        <dc:creator>Marty Grogan</dc:creator>
                        <guid isPermaLink="true">https://midi.org/community/midi-specifications/amature-radio-applications-ham</guid>
                    </item>
							        </channel>
        </rss>
		