Jump to content

Jul

Members
  • Posts

    1
  • Joined

  • Last visited

    Never

About Jul

  • Birthday 01/01/1

Profile Information

  • Gender
    Not Telling

Jul's Achievements

MIDIbox Newbie

MIDIbox Newbie (1/4)

0

Reputation

  1. Jul

    Frage zu Befehl

    Hallo, ich bin neu hier und plane eine Midibox mit 8 Fadern, mit denen wahlweise die Kanäle 1-8, 9-16 etc. kontrolliert werden sollen, einigen Buttons, Encodern und LEDs zu bauen. Tut mir leid, wenn ich am Anfang direkt mit einem Berg von Fragen ankomme, aber leider hab ich zu den meisten Fragen im Forum leider nichts hilfreiches gefunden. Da ich nicht viel Ahnung vom Programmieren habe und auch nicht weiß ob meine Idee technisch zu realisieren ist, wäre es nett wenn jemand folgenden Code für mich checken könnte und mir vielleicht Tips geben könnte wie ich es richtig machen könnte. Kurze Erläuterung noch zum Code: Also zuerst einmal sollen, wie schon erwähnt, die Fader 1-8 umschaltbar sein. Das möchte ich mittels eines Buttons, der an das DINX4-Modul angeschlossen ist, und einem Bankstick, in dem die letzte Position für jeden Fader abgespeichert werden soll, realisieren. Mittels dem MIOS_DOUT_PinGet-Befehl soll festgestellt werden auf welcher Ebene (1-8, 9-16 etc.) die Fader sich gerade bewegen, weil bei der Anwahl der unterschiedlichen Ebenen auch LEDs leuchten sollen, die es einem Erleichtern festzustellen auf welcher Ebene man sich gerade befindet. Dazu habe ich folgenden Befehl geschrieben (Auschnitt, da Befehl nicht für alle Anwahlmöglichkeiten gültig): void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value, unsigned int addr,unsigned char fader, unsigned int position, unsigned int addr, unsigned int value) __wparam { // von 1-8 nach 9-16 if( pin=2 ) if( pin_value == 1 && MIOS_DOUT_PinGet(9) == 1 ) { // Saving Last Positions of MF 1-8 MIOS_BANKSTICK_Write(0x00, MIOS_AIN_PinGet(16)); MIOS_BANKSTICK_Write(0x01, MIOS_AIN_PinGet(17)); MIOS_BANKSTICK_Write(0x02, MIOS_AIN_PinGet(18)); MIOS_BANKSTICK_Write(0x03, MIOS_AIN_PinGet(19)); MIOS_BANKSTICK_Write(0x04, MIOS_AIN_PinGet(20)); MIOS_BANKSTICK_Write(0x05, MIOS_AIN_PinGet(21)); MIOS_BANKSTICK_Write(0x06, MIOS_AIN_PinGet(22)); MIOS_BANKSTICK_Write(0x07, MIOS_AIN_PinGet(23)); // Moving Fader to Position 9-16 MIOS_MF_FaderMove(0, MIOS_BANKSTICK_Read(0x08)); MIOS_MF_FaderMove(1, MIOS_BANKSTICK_Read(0x09)); MIOS_MF_FaderMove(2, MIOS_BANKSTICK_Read(0x010)); MIOS_MF_FaderMove(3, MIOS_BANKSTICK_Read(0x011)); MIOS_MF_FaderMove(4, MIOS_BANKSTICK_Read(0x012)); MIOS_MF_FaderMove(5, MIOS_BANKSTICK_Read(0x013)); MIOS_MF_FaderMove(6, MIOS_BANKSTICK_Read(0x014)); MIOS_MF_FaderMove(7, MIOS_BANKSTICK_Read(0x015)); // Set DOUT MIOS_DOUT_PinSet(9, 0); MIOS_DOUT_PinSet(10, 1); MIOS_DOUT_PinSet(11, 0); MIOS_DOUT_PinSet(12, 0); } Um die Faderbewegungen der jeweiligen Ebene anzupassen habe ich folgenden Code geschrieben: void AIN_NotifyChange(unsigned char pin, unsigned int pin_value, unsigned int addr) __wparam { // MF 1-8, when Button 1 is pressed if( MIOS_DOUT_PinGet(9) == 1) { MIOS_MIDI_TxBufferPut(0xb0); // CC at channel 1 MIOS_MIDI_TxBufferPut(pin+16); // pin number corresponds to CC number + 16 MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin)); // don't send 10bit pin_value, } // but 7bit value // MF 9-16 Button 2 pressed if( MIOS_DOUT_PinGet(10) == 1) { MIOS_MIDI_TxBufferPut(0xb0); MIOS_MIDI_TxBufferPut(pin+32); MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin)); } // MF 17-24 Button 3 pressed if( MIOS_DOUT_PinGet(11) == 1) { MIOS_MIDI_TxBufferPut(0xb0); MIOS_MIDI_TxBufferPut(pin+40); MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin)); } // MF 25-32 Button 4 pressed if( MIOS_DOUT_PinGet(12) == 1) { MIOS_MIDI_TxBufferPut(0xb0); MIOS_MIDI_TxBufferPut(pin+48); MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin)); } } Um die eingehenden Signale für die nicht ausgewählten Ebenen zu speichern habe ich folgenden Code geschrieben (wieder nur ein Auszug): void MPROC_NotifyReceivedEvnt(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { // MF 1-8 if( MIOS_DOUT_PinGet(10) == 1 ) if( MIOS_DOUT_PinGet(11) == 1 ) if( MIOS_DOUT_PinGet(12) == 1 ) { if( evnt0 == 0xb0 && evnt1 == 16 ) MIOS_BANKSTICK_Write(0x00, (unsigned int)evnt2 << 3); if( evnt0 == 0xb0 && evnt1 == 17) MIOS_BANKSTICK_Write(0x01, (unsigned int)evnt2 << 3); if( evnt0 == 0xb0 && evnt1 == 18 ) MIOS_BANKSTICK_Write(0x02, (unsigned int)evnt2 << 3); if( evnt0 == 0xb0 && evnt1 == 19 ) MIOS_BANKSTICK_Write(0x03, (unsigned int)evnt2 << 3); if( evnt0 == 0xb0 && evnt1 == 20 ) MIOS_BANKSTICK_Write(0x04, (unsigned int)evnt2 << 3); if( evnt0 == 0xb0 && evnt1 == 21 ) MIOS_BANKSTICK_Write(0x05, (unsigned int)evnt2 << 3); if( evnt0 == 0xb0 && evnt1 == 22 ) MIOS_BANKSTICK_Write(0x06, (unsigned int)evnt2 << 3); if( evnt0 == 0xb0 && evnt1 == 23 ) MIOS_BANKSTICK_Write(0x07, (unsigned int)evnt2 << 3); } Außerdem wollte ich noch fragen ob jemand vielleicht eine Internetadresse oder irgendetwas kennt wo ich sehen kann mit welchen “Zahlen-und-Buchstaben-Kombination“ ich den gewünschten Midibefehl erhalte und auch vielleicht etwas wo ich nachvollziehen kann wie ich die Zahlenwerte für die Adressierung im Bankstick vernünftig machen kann, weil ich bisher nur mit aufsteigenden Zahlen von 1 an durchnummeriert habe was vermutlich aber nicht richtig ist. Des weiteren wollte ich noch wissen ob ich die Positionen der Encoder auch abspeichern müsste und an das DINX4 Modul zurücksenden muss wenn ich die Ebene wieder abrufe und ob es überhaupt möglich ist die 10 Bit-Werte der Positionen der Fader in dem EEPROM des Banksticks abzuspeichern und wie viele ich bräuchte, weil es wohl auch möglich ist nur einen anstatt 8 anzuschließen. Danke schon mal im Voraus für alle Anworten. Julian
×
×
  • Create New...