Apologies for my ignorance but I don't know why Bomes will help me in my task. Also, could you provide a link to vanilla mf tsis. Much appreciated.
Apologies for my ignorance but I don't know why Bomes will help me in my task. Also, could you provide a link to vanilla mf tsis. Much appreciated.
the instant gratification and deckalized mappings are here: http://www.djtechtools.com/midi-map/
with bomes you could setup translations from the output of the device you want to use as a controller to and from the input expected from a midi fighter.
so if want the top left button of the midifighter (C-1 in 4deck mode) to be controlled via a key that sends out D-0 then you use bomes to do that translation - sending the result from bomes to a virtual midi port that is then what you'd select in traktor.
two big advantages of doing it this way....
a) you'll be able to load any new mf mappings without modding them
b) you'll only need to add one rule per note/cc event - rather than the "bugger knows how many times" you'd need to edit each note in the actual traktor tsi
edit: you'll actually need to add a 2nd bomes mapping to get the led status back to your controller ofc
11mba / 13mbp / tsp2 / live9 / audio10 / 2x reloop rp7000gold / 2x xdj1000 / 2x d2maschine mk2 / x1 mk2 / z1 / f1 / midifighter / lpd8 / 2x launchpad / launchkontrol xl
Originally Posted by derschaich
glovePIE script is done, will post when back at home, stay tuned!
might be cool to add the super combo messages to it too - or have you already done that? might be a bit complicated to add via glovepie though as it doesnt support any type of data structures so it would have to be a whole heap of "if" type statements.
might be fun though... not sure how many buttons the gamepad has that i ordered (as i only need 8 since thats how many arcade buttons i bought) but if it has at least 12 i'd be able to do that out before pulling it apart and soldering to the 8 arcade buttons...
combo.c in the mf firmware has the state table in - 44 elements - so 44 "if" statements in glovepie i guessshouldn't be too inefficient though as theres 37 different states and the only state that needs to check more than 1 or 2 button presses is the initial state.
11mba / 13mbp / tsp2 / live9 / audio10 / 2x reloop rp7000gold / 2x xdj1000 / 2x d2maschine mk2 / x1 mk2 / z1 / f1 / midifighter / lpd8 / 2x launchpad / launchkontrol xl
Originally Posted by derschaich
here you go:
only the different notes from deck A-D for a gamepad.
dunno the notes and combinations of the super combos, but i would easily integrate them in my script.
Code:midi.DeviceOut = 2 midi.DefaultChannel = 3 debug = Joystick.button5 //Define Deck if (Joystick1.button1) then Var.Deck=1 ; if (Joystick1.pov1left) then Var.Deck=2 ; if (Joystick1.pov1down) then Var.Deck=3 ; if (Joystick1.button4) then Var.Deck=4 ; //Deck Modes //Deck A if (Var.Deck=1) then { Var.ButtonA5 = Joystick1.button5 Var.ButtonA6 = Joystick1.Button6 Var.ButtonA7 = Joystick1.Button7 Var.ButtonA8 = Joystick1.Button8 Var.ButtonA9 = Joystick1.Button9 Var.ButtonA10 = Joystick1.Button10 Var.ButtonA11 = Joystick1.Button11 Var.ButtonA12 = Joystick1.Button12 Var.ButtonA13 = Joystick1.Button2 Var.ButtonA14 = Joystick1.pov1up Var.ButtonA15 = Joystick1.pov1right Var.ButtonA16 = Joystick1.Button3 } end if; //Deck B if (Var.Deck=2) then { Var.ButtonB5 = Joystick1.button5 Var.ButtonB6 = Joystick1.Button6 Var.ButtonB7 = Joystick1.Button7 Var.ButtonB8 = Joystick1.Button8 Var.ButtonB9 = Joystick1.Button9 Var.ButtonB10 = Joystick1.Button10 Var.ButtonB11 = Joystick1.Button11 Var.ButtonB12 = Joystick1.Button12 Var.ButtonB13 = Joystick1.Button2 Var.ButtonB14 = Joystick1.pov1up Var.ButtonB15 = Joystick1.pov1right Var.ButtonB16 = Joystick1.Button3 } end if //Deck C if (Var.Deck=3) then { Var.ButtonC5 = Joystick1.button5 Var.ButtonC6 = Joystick1.Button6 Var.ButtonC7 = Joystick1.Button7 Var.ButtonC8 = Joystick1.Button8 Var.ButtonC9 = Joystick1.Button9 Var.ButtonC10 = Joystick1.Button10 Var.ButtonC11 = Joystick1.Button11 Var.ButtonC12 = Joystick1.Button12 Var.ButtonC13 = Joystick1.Button2 Var.ButtonC14 = Joystick1.pov1up Var.ButtonC15 = Joystick1.pov1right Var.ButtonC16 = Joystick1.Button3 } end if //Deck D if (Var.Deck=4) then { Var.ButtonD5 = Joystick1.button5 Var.ButtonD6 = Joystick1.Button6 Var.ButtonD7 = Joystick1.Button7 Var.ButtonD8 = Joystick1.Button8 Var.ButtonD9 = Joystick1.Button9 Var.ButtonD10 = Joystick1.Button10 Var.ButtonD11 = Joystick1.Button11 Var.ButtonD12 = Joystick1.Button12 Var.ButtonD13 = Joystick1.Button2 Var.ButtonD14 = Joystick1.pov1up Var.ButtonD15 = Joystick1.pov1right Var.ButtonD16 = Joystick1.Button3 } end if //Button Conversion midi.gsharp3 = Var.ButtonA5 midi.a3 = Var.ButtonA6 midi.asharp3 = Var.ButtonA7 midi.b3 = Var.ButtonA8 midi.e3 = Var.ButtonA9 midi.f3 = Var.ButtonA10 midi.fsharp3 = Var.ButtonA11 midi.g3 = Var.ButtonA12 midi.c3 = Var.ButtonA13 midi.csharp3 = Var.ButtonA14 midi.d3 = Var.ButtonA15 midi.dsharp3 = Var.ButtonA16 midi.gsharp4 = Var.ButtonB5 midi.a4 = Var.ButtonB6 midi.asharp4 = Var.ButtonB7 midi.b4 = Var.ButtonB8 midi.e4 = Var.ButtonB9 midi.f4 = Var.ButtonB10 midi.fsharp4 = Var.ButtonB11 midi.g4 = Var.ButtonB12 midi.c4 = Var.ButtonB13 midi.csharp4 = Var.ButtonB14 midi.d4 = Var.ButtonB15 midi.dsharp4 = Var.ButtonB16 midi.gsharp5 = Var.ButtonC5 midi.a5 = Var.ButtonC6 midi.asharp5 = Var.ButtonC7 midi.b5 = Var.ButtonC8 midi.e5 = Var.ButtonC9 midi.f5 = Var.ButtonC10 midi.fsharp5 = Var.ButtonC11 midi.g5 = Var.ButtonC12 midi.c5 = Var.ButtonC13 midi.csharp5 = Var.ButtonC14 midi.d5 = Var.ButtonC15 midi.dsharp5 = Var.ButtonC16 midi.gsharp6 = Var.ButtonD5 midi.a6 = Var.ButtonD6 midi.asharp6 = Var.ButtonD7 midi.b6 = Var.ButtonD8 midi.e6 = Var.ButtonD9 midi.f6 = Var.ButtonD10 midi.fsharp6 = Var.ButtonD11 midi.g6 = Var.ButtonD12 midi.c6 = Var.ButtonD13 midi.csharp6 = Var.ButtonD14 midi.d6 = Var.ButtonD15 midi.dsharp6 = Var.ButtonD16 // COMPILED CODE, PLEASE DELETE BEFORE COMPILING!
excellent timing as my gamepad turned up about an hour ago
the super combos arent just simple combinations of pressing buttons - they're driven by a state machine *but* it might be possible to simplify for using in glovepie as you can tell at any point when multiple buttons are pressed. e.g: for any (all?) where you just need to press and hold multiple buttons just one 'if' can be added to glovepie (i think)
here's the state machine code from the mf firmware:
Code:// State Transition Table // Key numbers are: // +-----------+ // | 0 1 2 3| // | 4 5 6 7| // | 8 9 10 11| // |12 13 14 15| // +-----------+ // combo_state_t state_table[] PROGMEM = { // state key next action /* 0 */ { 0, 12 | KEYDOWN, 1, COMBO_NONE }, // combo A /* 1 */ { 0, 9 | KEYDOWN, 5, COMBO_NONE }, // combo B /* 2 */ { 0, 8 | KEYDOWN, 9, COMBO_NONE }, // combo D /* 3 */ { 0, 4 | KEYDOWN, 18, COMBO_NONE }, // combo E /* 4 */ { 1, 13 | KEYDOWN, 2, COMBO_NONE }, // combo A /* 5 */ { 2, 14 | KEYDOWN, 3, COMBO_NONE }, /* 6 */ { 3, 15 | KEYDOWN, 4, COMBO_A_DOWN }, /* 7 */ { 4, 15 | KEYUP, 0, COMBO_A_RELEASE }, /* 8 */ { 5, 10 | KEYDOWN, 6, COMBO_NONE }, // combo B /* 9 */ { 6, 5 | KEYDOWN, 7, COMBO_NONE }, /* 10 */ { 7, 6 | KEYDOWN, 8, COMBO_C_DOWN }, /* 11 */ { 8, 6 | KEYUP, 0, COMBO_C_RELEASE }, /* 12 */ { 9, 8 | KEYUP, 10, COMBO_NONE }, // combo D /* 13 */ { 10, 9 | KEYDOWN, 11, COMBO_NONE }, /* 14 */ { 11, 9 | KEYUP, 12, COMBO_NONE }, /* 15 */ { 11, 10 | KEYDOWN, 6, COMBO_NONE }, // --> combo C /* 16 */ { 12, 10 | KEYDOWN, 13, COMBO_NONE }, /* 17 */ { 13, 10 | KEYUP, 14, COMBO_NONE }, /* 18 */ { 14, 10 | KEYDOWN, 15, COMBO_NONE }, /* 19 */ { 15, 10 | KEYUP, 16, COMBO_NONE }, /* 20 */ { 16, 11 | KEYDOWN, 17, COMBO_D_DOWN }, /* 21 */ { 17, 11 | KEYUP, 0, COMBO_D_RELEASE }, /* 22 */ { 18, 4 | KEYUP, 19, COMBO_NONE }, // combo E /* 23 */ { 19, 4 | KEYDOWN, 20, COMBO_NONE }, /* 24 */ { 20, 4 | KEYUP, 21, COMBO_NONE }, /* 25 */ { 21, 12 | KEYDOWN, 22, COMBO_NONE }, /* 26 */ { 22, 12 | KEYUP, 23, COMBO_NONE }, /* 27 */ { 23, 12 | KEYDOWN, 24, COMBO_NONE }, /* 28 */ { 24, 12 | KEYUP, 25, COMBO_NONE }, /* 29 */ { 25, 8 | KEYDOWN, 26, COMBO_NONE }, /* 30 */ { 26, 8 | KEYUP, 27, COMBO_NONE }, /* 31 */ { 26, 10 | KEYDOWN, 6, COMBO_NONE }, // --> combo C /* 32 */ { 27, 9 | KEYDOWN, 28, COMBO_NONE }, /* 33 */ { 28, 9 | KEYUP, 29, COMBO_NONE }, /* 34 */ { 29, 8 | KEYDOWN, 30, COMBO_NONE }, /* 35 */ { 30, 8 | KEYUP, 31, COMBO_NONE }, /* 36 */ { 31, 9 | KEYDOWN, 32, COMBO_NONE }, /* 37 */ { 31, 10 | KEYDOWN, 13, COMBO_NONE }, // --> combo D /* 38 */ { 32, 9 | KEYUP, 33, COMBO_NONE }, /* 39 */ { 33, 11 | KEYDOWN, 34, COMBO_NONE }, /* 40 */ { 33, 9 | KEYDOWN, 11, COMBO_NONE }, // --> combo D /* 41 */ { 34, 11 | KEYUP, 35, COMBO_NONE }, /* 42 */ { 35, 10 | KEYDOWN, 36, COMBO_E_DOWN }, /* 43 */ { 36, 10 | KEYUP, 0, COMBO_E_RELEASE }, };
11mba / 13mbp / tsp2 / live9 / audio10 / 2x reloop rp7000gold / 2x xdj1000 / 2x d2maschine mk2 / x1 mk2 / z1 / f1 / midifighter / lpd8 / 2x launchpad / launchkontrol xl
Originally Posted by derschaich
i think the explanation of super combo's in this thread is a tad simpleralso makes more sense i think for glovepie
http://www.djtechtools.com/forum/sho...ht=super+combo
my gamepad only has 12buttons + start + select but what i can see from your script looks cool. i only have 8 arcade buttons but thinking of maybe getting some more... (with a diff gamepad ofc)
11mba / 13mbp / tsp2 / live9 / audio10 / 2x reloop rp7000gold / 2x xdj1000 / 2x d2maschine mk2 / x1 mk2 / z1 / f1 / midifighter / lpd8 / 2x launchpad / launchkontrol xl
Originally Posted by derschaich
1. Buttons:
I have 12 buttons, too, but i used the 4 "buttons" from the D-Pad, too to get a full 16-button matrix. be careful, as the d-pad states have conflicting messages (up+down and left+right).
therefore i have two d-pad-buttons soldered to the top row of my clone, and the other two to the bottom row.
2. grat mapping:
i hope my script works with the old mapping (had no chance to test it yet) but with the new firmware triggering additional midi-notes at those combinations in the upper mentioned thread to free modifiers inside traktor. if i knew those messages i could implement them at ease!
ah - then mine only has 8 buttons + start + select + the xy buttons. i'm just playing with your mapping to use the 8 buttons + xy as 12 buttons and then start+select as the first two on the top row of a midi fighter. does mean i cant press more than two of the xy ones together - but this is only to play with your script as i'll only be creating an 8 button arcade controller from this for the time being.
for starters you could send the combo message on note just when all the right buttons are pressed together, i.e: make them all like combo b which doesnt care about the order the buttons are pressed in, which would at least make the glovepie script simpler.2. grat mapping:
i hope my script works with the old mapping (had no chance to test it yet) but with the new firmware triggering additional midi-notes at those combinations in the upper mentioned thread to free modifiers inside traktor. if i knew those messages i could implement them at ease!
would still need to send a note off mesage for the combo when any of the buttons are released ofc - which would be easier to do maybe if implementing the full state machine.
the messages sent out for the combos are: a=8, b=9, c=10, d=11, e=12 or at least those are the values sent to midi_stream_note() in the firmware. doesnt make sense tho as note 8 would be G#-1 surely? and i didnt see that in the tsi file... guess i'm missing something. i know in other places the notes are just offsets from note 36 but dont see how that would get added on in this bit of code - ah well...
11mba / 13mbp / tsp2 / live9 / audio10 / 2x reloop rp7000gold / 2x xdj1000 / 2x d2maschine mk2 / x1 mk2 / z1 / f1 / midifighter / lpd8 / 2x launchpad / launchkontrol xl
Originally Posted by derschaich
Hi the script for glovepie of the four bank mode works perfectly, can you incorporate the super combos and post it again pleace, that would be awesome. Thank you
Last edited by angelva; 06-02-2011 at 06:36 PM.
|
Bookmarks