MIDIbox Forum: Midibox-Link und Encoder - MIDIbox Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Midibox-Link und Encoder mit ain64_din128_dout128_v2c Rate Topic: -----

#1 User is offline   talion303 

  • MIDIbox Newbie
  • Pip
  • Group: Members
  • Posts: 8
  • Joined: 30-June 11

Posted 30 October 2011 - 14:04

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

#2 User is offline   TK. 

  • MIDIbox Guru
  • View gallery
  • Group: Administrators
  • Posts: 11,141
  • Joined: 01-January 01
  • LocationGermany

Posted 31 October 2011 - 16:43

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();
}


Gruss, Thorsten.
Posted Image Buy TK a Beer Disclaimer: buying TK a beer gets you absolutely nothing in return likesuchas firmware enhancements, technical advices and MIDIbox troubleshooting assistance.

#3 User is offline   talion303 

  • MIDIbox Newbie
  • Pip
  • Group: Members
  • Posts: 8
  • Joined: 30-June 11

Posted 01 November 2011 - 17:15

Hi Thorsten,

kleiner fix große Wirkung :) Ausprobiert: Geht!

Vielen Dank -

Grüße, Christoph

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users