Jump to content

9x CC Wert in 128 Presets per PC Change aufrufen?


Ground Control
 Share

Recommended Posts

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

DSC00671%282%29.jpg

und so etwa sieht dann ein Expander aus:

exp_lo.jpg

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...