Jump to content

Midibox64e


ljmarkus
 Share

Recommended Posts

Hallo.

Habe bei der Midibox64e folgendes Problem:

in der mb64e_presets.inc:

BUTTON_ENTRY 0xA0, 20,127, 0x00

A0 steht ja für After Touch. wenn ich den Taster drücke bekomme ich den Wert 127 gesendet und beim loslassen 0 gesendet. Was muss ich eintragen das beim loslassen nix gesendet wird ??

Danke,

Markus

Link to comment
Share on other sites

Hallo.

Sitzte jetzt schon seid stunden davor die Menu buttons abzuschalten damit ich sie frei für meine Anwendung bekomme.

in der main.asm:

; DIN pin numbers of menu buttons

#if DEFAULT_ENC_DATAWHEEL == 0

  #define DEFAULT_DIN_MENU_EXEC 7 ; menu exec button assigned to DIN pin #7

  #define DEFAULT_DIN_MENU_RIGHT 6 ; menu right button assigned to DIN pin #6

  #define DEFAULT_DIN_MENU_LEFT 5 ; menu left button assigned to DIN pin #5

  #define DEFAULT_DIN_MENU_SNAPSHOT 4 ; menu snapshot button assigned to DIN pin #4

#else

  #define DEFAULT_DIN_MENU_EXEC 7 ; menu exec button assigned to DIN pin #7

  #define DEFAULT_DIN_MENU_SNAPSHOT 6 ; menu snapshot button assigned to DIN pin #4

  #define DEFAULT_DIN_MENU_RIGHT 5 ; NOT USED - overlayed by datawheel

  #define DEFAULT_DIN_MENU_LEFT 4 ; NOT USED - overlayed by datawheel

#endif

Was und wo muss ich einstellen damit die Buttons frei werden ????

danke, markus

Link to comment
Share on other sites

Hallo Thorsten.

Danke. Es geht..

Nun stehe ich vor einem etwas größerem Problem.

Ist es folgendes möglich:

Fader 1 bei Wert 1 - Sysex senden

              bei Wert 2 - sysex senden

usw.

bsb:

Wert 0 = F0 7F 01 02 01 06 00 00 00 00 F7

Wert 1 = F0 7F 01 02 01 06 00 00 04 00 F7

Wert 2 = F0 7F 01 02 01 06 00 00 07 00 F7

usw. bis Wert 100

Danke, markus

Link to comment
Share on other sites

bekomme die "if" anweisung einfach nicht hin:

;; --------------------------------------------------------------------------

MB64E_META_Handler_00

;; this example sends a SysEx string: F0 43 10 5C 10 10 31 vv F7 (AN1x: high pass filter)

;; META Event: "F0 00" (enc) or "F0 00 7F @OnOff" (Button - 7F may vary)

movlw 0x01 ; store parameter value in W

rgoto Test ; branch to SysEx routine

Test

#if MIDI_EVNT_VALUE == 0

goto VALUE_0

#else

#if MIDI_EVNT_VALUE == 1

goto VALUE_1

#endif

VALUE_0

movwf TMP1 ; temporary store parameter value from working register W into TMP1

call MIOS_MIDI_BeginStream ; begin stream

movlw 0xf0 ; send 0xf0

call MIOS_MIDI_TxBufferPut

movlw 0x7F ; send 0x43

call MIOS_MIDI_TxBufferPut

movlw 01 ; send 0x10

call MIOS_MIDI_TxBufferPut

movlw 02 ; send 0x5c

call MIOS_MIDI_TxBufferPut

movlw 01 ; send 0x10

call MIOS_MIDI_TxBufferPut

movlw 06 ; send 0x10

call MIOS_MIDI_TxBufferPut

movf TMP1, W ; send parameter value, stored in TMP1

call MIOS_MIDI_TxBufferPut

movlw 00

call MIOS_MIDI_TxBufferPut

movlw 00

call MIOS_MIDI_TxBufferPut

movlw 00

call MIOS_MIDI_TxBufferPut

movlw 0xF7

call MIOS_MIDI_TxBufferPut

goto MIOS_MIDI_BeginStream

VALUE_1

movwf TMP1 ; temporary store parameter value from working register W into TMP1

call MIOS_MIDI_BeginStream ; begin stream

movlw 0xf0 ; send 0xf0

call MIOS_MIDI_TxBufferPut

movlw 0x7F ; send 0x43

call MIOS_MIDI_TxBufferPut

movlw 01 ; send 0x10

call MIOS_MIDI_TxBufferPut

movlw 02 ; send 0x5c

call MIOS_MIDI_TxBufferPut

movlw 01 ; send 0x10

call MIOS_MIDI_TxBufferPut

movlw 06 ; send 0x10

call MIOS_MIDI_TxBufferPut

movf TMP1, W ; send parameter value, stored in TMP1

call MIOS_MIDI_TxBufferPut

movlw 00

call MIOS_MIDI_TxBufferPut

movlw 00

call MIOS_MIDI_TxBufferPut

movlw 04

call MIOS_MIDI_TxBufferPut

movlw 0xF7

call MIOS_MIDI_TxBufferPut

goto MIOS_MIDI_BeginStream

....

er gibt mir immer den Sting von VALUE_0 wieder.

Was mache ich falsch ??

danke, markus

Link to comment
Share on other sites

Hallo Markus,

du kannst die verschiedenen Werte mit der gleichen Routine senden - hier gibt es zwei Ansaetze, aber um zu verstehen, welcher fuer Dich am besten geeignet ist, muesste ich wissen, ob sich die Werte mit einer simplen Formel berechnen lassen, oder ob sie so verschieden sind, dass man sie lieber in eine Tabelle ablegen sollte

Gruss,

        Thorsten.

Link to comment
Share on other sites

Hallo Thorsten.

Die Werte sind sehr verschiden deswegen dachte ich halt das es über soeine Value Abfrage zu machen.

Mit einer Formel kann man die wohl nit berechnen da sich die 9. und 10. stelle im Sting ändert.

Kann dir ja mal die ganzen Sting zukommen lassen wenn Du möchtest.

danke, markus

Link to comment
Share on other sites

ok - tabellenloesung:

schmeisse das die #if Abfragen wieder raus (dies sind uebrigens

Praeprozessor-Anweisungen und keine Assembler Befehle), und ersetze

das "movlw ... call MIOS_MIDI_TxBufferPut" Paerchen, das sich

aendern soll, wie folgt:


TABLE_ADDR MY_SYSEX_VALUE_TABLE
movf   MIDI_EVNT_VALUE, W
TABLE_ADD_W
        tblrd*+
        movf    TABLAT, W
call MIOS_MIDI_TxBufferPut
[/code] Ganz unten im File fuegst Du noch die Tabelle ein - sie muss 128 Werte enthalten:
[code]
MY_SYSEX_VALUE_TABLE
db 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f
db 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f
db 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f
db 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f
db 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f
db 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f
db 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f
db 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f

Die Hexadezimal-Werte koennen auch durch Dezimalzahlen (ohne 0x)

ersetzt werden

Gruss,

Thorsten.

Link to comment
Share on other sites

Guten Abend...

Wenn ich im main.asm

#define DEFAULT_NUMBER_AIN 0

steht und ich buil mache bekomme ich viele Fehlermeldungen

-- snip

Error[118]  C:\HOG2PC\MIDIBOXSOFT\PROG ID_0X01\MB64E_PRESETS.INC 68 : Overwriting previous address contents (6F4C)

Error[118]  C:\HOG2PC\MIDIBOXSOFT\PROG ID_0X01\MB64E_PRESETS.INC 68 : Overwriting previous address contents (6F4D)

Error[118]  C:\HOG2PC\MIDIBOXSOFT\PROG ID_0X01\MB64E_PRESETS.INC 68 : Overwriting previous address contents (6F4E)

Error[118]  C:\HOG2PC\MIDIBOXSOFT\PROG ID_0X01\MB64E_PRESETS.INC 68 : Overwriting previous address contents (6F4F)

Error[118]  C:\HOG2PC\MIDIBOXSOFT\PROG ID_0X01\MB64E_PRESETS.INC 68 : Overwriting previous address contents (6F50)

Error[118]  C:\HOG2PC\MIDIBOXSOFT\PROG ID_0X01\MB64E_PRESETS.INC 68 : Overwriting previous address contents (6F51)

Error[118]  C:\HOG2PC\MIDIBOXSOFT\PROG ID_0X01\MB64E_PRESETS.INC 68 : Overwriting previous address contents (6F52)

Error[118]  C:\HOG2PC\MIDIBOXSOFT\PROG ID_0X01\MB64E_PRESETS.INC 68 : Overwriting previous address contents (6F53)

-- /snip

für dieses Projekt benötige ich nur 4 Enc und 64 Buttons. soll aber die mb64e soft bleiben.

Oder einfach den Faderanzahl auf 1 lassen und den Port auf masse legen und fertig ???

Danke, Markus

Link to comment
Share on other sites

Der Speicher ist voll!

Aber es gibt eine einfache Abhilfe - schmeisse die Features raus, die Dich nicht interessieren.

Soviel ich weiss, ist kein LCD angeschlossen. Deshalb koenntest Du bspw. die Noten-Strings in midi_evnt.inc rausschmeissen, dadurch haettest Du wieder 512 Bytes Luft - es geht auch noch wesentlich mehr (bspw. das komplette Menuehandling, die Motorfaderkalibrierung/Touchfader/etc...), doch dafuer sind dann jeweils mehrere Handgriffe notwendig...

Also: midi_evnt.inc oeffnen, nach "MIDI_EVNT_NOTE_TABLE_ENTRY_LEN" suchen, und alles, was darunter steht (die db Eintraege) loeschen

Gruss,

        Thorsten.

Link to comment
Share on other sites

Hallo Thorsten..

das verstehe ich jetzt nicht,

den wenn ich

#define DEFAULT_NUMBER_AIN      1

drin stehen habe geht alles nur bei

#define DEFAULT_NUMBER_AIN      0

kommen die meldungen.

Wie kann den der Speicher voll sein wenn ich AIN auf 0 habe ??

Lg, markus

Link to comment
Share on other sites

Hallo Markus,

kommentarleser wissen mehr ;-)


; The morphing function uses addresses within the MIOS address range which are
; reserved for the AIN handler.
; NOTE: morphing is automatically disabled if analog pots/faders are connected
#define DEFAULT_MORPH_FUNCTION_ENABLED 1
;
; Although MIDIbox64E has been designed for rotary encoders, it can also handle with
; up to 64 pots/faders or up to 8 motorfaders.
; Pots and faders are mapped to the "encoder" entries 64-128.
; Example: if group width is 16, and group 1 is selected, encoders are using
; entry 1-16, and pots are using entry 64-70
; NOTE: morphing is automatically disabled if analog pots/faders are connected
#define DEFAULT_NUMBER_AIN 0
[/code]

Das heisst: mit DEFAULT_NUMBER_AIN == 0 wird der Morphing Code nicht eingebunden

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...