Ground Control Posted June 13, 2010 Report Share Posted June 13, 2010 Hallo. Ich bastele grade an einem Expander für Mein Ground Control Pro Floorboard. Einzig allein die Software fehlt mir noch. Ich möchte das Ganze folgendermaßen nutzen: Der Expander "generiert" 9 CC Changes (Toggles)"OFF = 0" "ON= 127" die jeweils mit einem Fußtaster umgeschaltet werden. Eine LED pro Button zeigt den Status an. Ich möchte einstellen können welcher CC gesendet wird, und auf welchem Kanal, erstmal reicht fest in's Programm geschrieben, später (wenn meine Programmierkenntnisse besser werden irgendwann auf einem LCD mit Menü. (Dafür würde ja noch Midio128 reichen welches ich bereits öfter für Projekte eingesetzt habe). Nun aber der Trickypart Ich möchte dem Expander selbst einen Midi Channel zuordnen und über PC Changes 128 Presets aufrufen welche die "on off" states für alle 9 Buttons enthalten. Ist soweit verständlich was ich meine? Ich finde mein Geschreibsel recht konfus... Jetzt frage ich mich ob ich dafür eine Midibox64 oder ein "Pedalboard" nutzen soll oder lieber was eigenes (dann aber nur mit Hilfe) entwickeln soll. Das ganze soll innerhalb der nächsten Woche stehen und Bühnentauglich sein, ein Gehäuse mit den richtigen Maßen habe ich schon hier ;) Hier noch ein Bild: Ground Control Pro und so etwa sieht dann ein Expander aus: Quote Link to comment Share on other sites More sharing options...
TK. Posted June 13, 2010 Report Share Posted June 13, 2010 Hallo, das ist eine relativ einfache Programmieraufgabe. Hier die Funktion, mit der Du 9 frei konfigurierbare CCs versenden kannst: #define NUM_CC 9 unsigned char ccNumber[NUM_CC]; unsigned short ccStates; void sendCCs(unsigned short flags) { unsigned char i; for(i=0; i<NUM_CC; ++i) { unsigned onOff = ccStates & (1 << i); // send CCs MIOS_MIDI_TxBufferPut(0xb0); // CC at MIDI Channel #1 MIOS_MIDI_TxBufferPut(ccNumber[i]); MIOS_MIDI_TxBufferPut(onOff ? 127 : 0); // set LED as well MIOS_DOUT_PinSet(i, onOff ? 1 : 0); } } [/code] ccNumber ist ein Array, in dem Du die entspr. Werte ablegst. Entweder statisch gesetzt (in Init()...), oder aus einem EEPROM geladen (-> MIOS_EEPROM_* funktionen) ccStates ist ein 16 bit Wert, der den Toggle-Status der 9 Taster enthaelt. Die Bits lassen sich mit (1 << i) addressieren. Wenn Du nun (bspw. aus dem DIN_NotifyToggle Hook) ein bit setzen willst, schreibst Du "ccStates |= (1 << pin)", und zum Loeschen schreibst Du "ccStates &= ~(1 << pin);" Mehr Programmierdetails unter: http://www.ucapps.de/mios8_c.html Gruss, Thorsten. 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.