<div>Hi,</div><div><br></div><div>First of all, I want to say that Grainstorm is genuinely one of the best granular synthesis apps I've ever used. The sound design possibilities, the interface, the overall feel of it... it's a reference. Seriously impressive work, thank you for building this.</div><div>I'm using Grainstorm on a Google Pixel 7 Pro (Android 13) with a custom BLE MIDI controller (ESP32-based, advertising standard BLE MIDI service UUID 03B80E5A-EDE8-4B33-A751-6CE34EC4C700).</div><div><strong>Bug:</strong> When using MIDI Learn, I can successfully map the first encoder/knob to a parameter. However, to map a second encoder to a second parameter, I have to fully quit and relaunch Grainstorm. This repeats for every new mapping — one restart per assignment.</div><div><strong>Steps to reproduce:</strong></div><div>Connect a BLE MIDI device to Grainstorm</div><div>Enter MIDI Learn on parameter A → move encoder 1 → mapping works</div><div>Enter MIDI Learn on parameter B → move encoder 2 → no response</div><div>Save MIDI mapping, quit and relaunch Grainstorm</div><div>Import MIDI mapping, enter MIDI Learn on parameter B → move encoder 2 → mapping works</div><div><strong>Notes:</strong></div><div>The BLE MIDI controller sends CC messages only when a knob is mooving and correctly — verified with aseqdump on Linux, all 8 encoders respond without any interruption</div><div>The issue is reproducible 100% of the time</div><div>Workaround: restart the app between each mapping</div><div><br></div><div>Thanks again for this incredible app, and for taking the time to read this!</div><div><br></div><div>-0o-</div>