talion303 Posted October 30, 2011 Report Share Posted October 30, 2011 Hallo zusammen, in meinem Projekt habe ich mehrere Cores in Reihe geschaltet. Einige DIN's sind an Encoer angeschlossen. Zum Einsatz kommt ain64_din128_dout128_v2c. Also habe ich zunächst Midibox-Link angeschaltet was grundsätzlich auch funktioniert: in main.c: // ENABLE AND CONFIGURE MIDI MERGER MIOS_MIDI_MergerSet(MIOS_MIDI_MERGER_ENABLED); MIOS_MIDI_MergerSet(MIOS_MIDI_MERGER_MBLINK_FP); (auf dem letzten Core entsprechend MBLINK_EP) Wenn ich jetzt Knöppe oder Potis drehe kommt am Midi-Out des letzten Cores alles raus, so wie es soll. Wenn ich allerdings Encoder drehe nicht. Ich habe mal Midi an den MBLINK_FP Cores abgegriffen und festgestellt das bei Knöppen und Potis zusätzliche Informationen gesendet werden. Ich meine F9 oder 9F - scheint so als wären das die Tunnelinformationen die der MBLINK_EP dann erkennt, abschneidet und die Nutzinformationen aus dem Midi-Out schickt. Beim Drehen der Encoder fehlen diese zusätzlichen Informationen, was sehr wahrscheinlich den Fehler verursacht. Funktionieren tun sie allerding so wie sie sollen - halt nur nicht in der Midi-Core-Schlange - da kommt em Ende nix an, vorher abgegriffen: Alles super. Die Encoder habe ich wie folgt in die ain64_din128_dout128_v2c integriert: in mein.c: // set speed mode for 13 encoders for(i=0; i<13; ++i) { // available speed modes: SLOW, NORMAL and FAST MIOS_ENC_SpeedSet(i, MIOS_ENC_SPEED_FAST, 2); // encoder, speed mode, divider } und: void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam { MIOS_MIDI_TxBufferPut(0xb0); // CC at MIDI Channel #1 MIOS_MIDI_TxBufferPut(0x20 + encoder); // CC# is 0x10 (16) for first encoder MIOS_MIDI_TxBufferPut((0x40 + incrementer) & 0x7f); // this "40 +/- speed" format is used by NI software and some others } In der Enc_Table sind die Encoder natürlich entsprechend definiert. Sie funktionieren wie gesagt auch so wie sie sollen. Ja so weit - ist das nicht so, dass die Funktion TxBufferPut generell quasi "durch" den Midimerger geleitet wird, sobald er angeschaltet ist? Klappt ja bei den den Knöppen und Potis auch... Kann natürlich sein dass die Frage dumm ist, da ich mal NULL "C" kann - ich such mir die Sachen für die Software aus dem Forum zusammen und versuche damit erst mal klarzukommen... ;-) Wahrscheinlich fehlt irgendwas.... nur was? Vielen Dank und Grüße, Christoph Quote Link to comment Share on other sites More sharing options...
TK. Posted October 31, 2011 Report Share Posted October 31, 2011 Hallo, es fehlt der Hinweis an MIOS, wann der Stream beginnt, und wann er zuende ist - ohne diese "Markierung" (dass hierbei F9 und FA gesendet wird, hast Du ja bereits gemerkt) wird das Event am Endpoint gefiltert. Das Tunneln sollte wie folgt funktionieren: void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam { MIOS_MIDI_BeginStream(); MIOS_MIDI_TxBufferPut(0xb0); // CC at MIDI Channel #1 MIOS_MIDI_TxBufferPut(0x20 + encoder); // CC# is 0x10 (16) for first encoder MIOS_MIDI_TxBufferPut((0x40 + incrementer) & 0x7f); MIOS_MIDI_EndStream(); } [/code] Gruss, Thorsten. Quote Link to comment Share on other sites More sharing options...
talion303 Posted November 1, 2011 Author Report Share Posted November 1, 2011 Hi Thorsten, kleiner fix große Wirkung :) Ausprobiert: Geht! Vielen Dank - Grüße, Christoph Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.