APC40 and Traktor: 4x4 grid, Light switching follow actions and more!

nonspacial33

2015-05-01 17:49:34

Traktor step sequencer build.bmtp
(1.4 KiB) Downloaded 276 times
Okay hello again Forum!

I have lost my password and stuff so have had to make a new account, but the original nonspacial was me. Anyway in reading the Tips For Better Translating stickies I've realised I've been going about this all wrong and have created myself miles of work to get very little functionality out of my beloved APC40 mods.

Typically I'm stuck though. I'm finding it hard to get my head around my pathetic tbh 2D grid structure that is required for calculating position of any given button on the apc40. The project above is so clean and tidy now so please feel free to have a look at it.

So to the point extrapilated:

The main button grid works by the logic of 5 semitones/midinotes per column of which there are 8 and each column increases by 1 channel. So from top right to bottom left you move from ch1note35(hex) to ch8note39(hex).

Therefore if I increment a global variable for each of these and reset it after 8 times or 5 times respectively I have access to all 40 buttons.

In the project I'm using timecode from traktor in a timer preset with rules that look like this:

Code: Select all

g0=g0+1
if g0>24 then g1=g1+1
if g1>4 then g1=1
if g0>24 then g0=1
g2=g2+1
if g2>6 then g3=g3+1
if g3>4 then g3=1
if g2>6 then g2=1
this triggers a timer I've called Beat Timer.

I then have a 2nd preset with a translator with rules like this:

Code: Select all

Incoming Message:Beat Timer

Rules:
oo=147+g3
vv=52+g1
pp=0
pp=3

Outgoing Message: oo vv pp
The pp=0 is there just because I keep deleting back to this. These are the values I require to be sent to the lights 0 for off 3 for red.

What this does is turns the lights on in sequence but not off once they have been passed.

Now for the real reason I need some help. It's crushing my brain to think of the 2 changes as seperate and within MT I'm stuck without: if (g1==1) & (g3==1) then do this, this, this and this elseif (g1==1) & (g3==2) then do this this this and this etc.

So the way I think it should be structured is with labels... now I'm experiencing much brain ache trying to get the sequence right. I know I need to turn on the current light, then turn off the previous light too. But does this really have to be done for every light every instance? i.e

Code: Select all

if g1==1 goto 'some label'
if g1==2 goto...

label 'some label'
if g3==1 then pp=3
if g3==1 then qq=0 (where qq would be another light which would then mean 16 out messages in a line... possible, i don't even know?)
x16 more if statements for each buttons light individually.
Exit rules and execute outgoing action

You can see how this runs away with itself and I'm prettty sure it can be far more elegant like how the current setup works by just incrementing the value of note by adding g1 or g3 respectively to it. I'm already cycling the lights on so how the hell can they not just be turned off?

Thankyou for your patience in reading this all help is greatly appreciated.

Just to make it clear from the beginning, the oo and vv values are set 1 integer lower than the number output as both global variables begin with 1 so to get note 148 I need to add 1 to 147, in case that's not immediately apparent.

DvlsAdvct

2015-05-01 18:16:38

The problem with your initial code is you are always setting pp to 0 and then immediately to 3, so it automatically turns the lights on regardless of what's happening. You need to, instead, designate that when pp is 3, you want it to become 0, and vice versa so it cycles the LEDs. We can do that with more labels, or just provide a cycle using global variables (easiest). So you could have a rule that states

if g4==4 then g4=0
if g4==0 then g4==4

So this way, every time the action triggers, it will cross reference the state of the LED (g4) and swap it. Does that make sense?

Thanks
Jared

nonspacial33

2015-05-01 18:35:21

Hi Jared,

I'm confused on how to implement the 4th variable... if oo and vv r cycling through i don't understand how any other light is communicated with except on an individual basis. i.e i imagine a snake occurring where the lights turn on in sequence and then on the second run thorugh the lights turn off in sequence.

Code: Select all

if g4==4 then g4=0
if g4==0 then g4==4
if g4==4 then pp=3
if g4==0 then pp=0
this just turns all the lights off in any combination. Moving things to the timer also turns them off.

DvlsAdvct

2015-05-01 18:38:32

Have it read

if g4==3 then Goto "Turn LED Off"
if g4==0 then Goto "Turn LED On"
Label "Turn LED Off"
g4=0
pp=g4 (or replace the pp in the outgoing action to g4)
Exit rules, execute outgoing action
Label "Turn LED On"
g4=3
pp=g3 (same note as above)
Exit rules, execute outgoing action

nonspacial33

2015-05-01 18:47:11

Hello DvlsAdvct,

almost... the lights r on and flicker off and on when it goes past so there is a reference but i need them to be off so i can mod them as selectors for hits later

It's a prob that somehow i need to turn off the grid position before when the once next to it fires so if i label them rows and columns i get 1A to 4D so when 1A triggers it needs to turn off 4D and then 2A turn off 1A... this is the logic i think it actually needs

DvlsAdvct

2015-05-01 18:52:08

Oh that's a bit more complicated. So you want to press one button and have the button next to it turn off? And vice versa?

nonspacial33

2015-05-01 18:54:33

no it's in the title of the project really... step sequencer... long and short of it midi twister backwards engineering. let me explain a bit better:

I'm problem solving in stages

1st stage have a reference to the timeline driven by the timecode of traktor...
2nd stage translate functionality through to traktor(not yet seperate preset)
3rd stage make lights happen on notes that will trigger info for given hit.

So i need to right now get 1 light to be on when it is at the current 16th of a beat in the bar all others to be off.

it's also worth noting that it flickers for evey click of the 6 timecode clicks that are being sent (epilepsy central) so i want the light on for 6 clicks and then off and the one next in the chain to be on for the next 6 clicks. 6 clicks already tracked in g3 variable so it just needs to turn off when it changes through
Attachments
Traktor step sequencer build.bmtp
current state with flickering lights
(1.51 KiB) Downloaded 241 times

DvlsAdvct

2015-05-01 19:02:44

Just saw your update. Updating this now.

nonspacial33

2015-05-01 19:04:41

g2 is every 6 clicks 1/16th of a beat g3 is 4 of those to bring back to conforming to rows(g3) and columns (g1) of the grid i have here on paper

nonspacial33

2015-05-01 19:10:57

Okay that's weird... if i push the sync button for the master timcode output i can toggle between all on and flicker and what i want 1 light travelling but still flickering?

that sync button resets the timecode obv and the g varibales 0,1,2,3... it seems to start off and stay off or start on and stay on. the flicker is a prob still though so it's not right

nonspacial33

2015-05-01 19:18:18

That is because it's only communicating with the one button and so whatever the final value of g4 is; is the state the led remains in. again proving not to work for the purpose

DvlsAdvct

2015-05-01 19:19:37

RIGHT! Because it changes channels every 4 steps. That makes sense, I'm with you now.

First: This is actually a bit more complicated than it appears to be. What we need to do is have two outgoing actions, one to turn the previous LED off and the other to turn the next LED on. This COULD be handled in the same translator, but I think it might be easier to trigger two different timers to send each message. And we always want the Off translator to trigger before the On translator goes off.

It would be something like:

Code: Select all

Translator 1: LED Off
Incoming Message: Beat Timer
Rules: none
Outgoing Message: h0 h1 00

Translator 2: LED On
Incoming Message: Beat Timer
Rules: oo=147+g3
vv=52+g1
h0=oo
h1=oo
Outgoing message: oo vv 03
This should handle the channel and note logic, I THINK. I'm doing this all in my head cause I'm slacking at my day job and doing it from memory. Let me know if that makes sense and what the response is so we can move to the next step.

nonspacial33

2015-05-01 19:21:39

on it now. brb

nonspacial33

2015-05-01 19:24:48

okay it's a 6 click issue they aren't staying on long enough and some are not flashing at all so it sort of works but they don't all always turn on. i corrected h1=vv btw

nonspacial33

2015-05-01 19:33:33

this why i was using the g1 and g3 varibles to turn on the lights in the 1st instance but i need to in my mind register a change in g1 and g3 to affect the light off

almost works if i put h0=h0-1 and h1=h1-1 in rules of off translator 2

nonspacial33

2015-05-01 19:46:01

Code: Select all

if h0!=1 then h0=h0-1
if h0==1 then h0=4
this works but leaves the 4th column lit

as does just

Code: Select all

h0=h0-1

DvlsAdvct

2015-05-01 19:59:38

In the translator that triggers the Beat Timer, add a variable which says

if g2!=1 then exit rules, skip outgoing action

This way, the timer only goes off when the 1/16th note triggers, not all of the time. Does that make sense?

I'm also not sure on your h1=h1-1 thing. Those variables are being referenced by the next translator, so if they are being augmented then it's screwing up the references.

Let me think on that too.
J

nonspacial33

2015-05-01 20:18:18

Updated current here implemented ur rule but it wasn't flickering anymore now. on the other hand it does just leave the last column which is 1 row above and 4 columns ahead of the light it's on.
Attachments
IMAG0009.jpg
IMAG0009.jpg (354.76 KiB) Viewed 23742 times
IMAG0010.jpg
IMAG0010.jpg (314.65 KiB) Viewed 23742 times
Traktor step sequencer build.bmtp
(1.62 KiB) Downloaded 243 times

DvlsAdvct

2015-05-01 20:27:20

So it always leaves the last column on, huh? It travels the rows correctly, though? Or does it just keep repeating the first row?

nonspacial33

2015-05-01 20:32:51

travels rows correctly

nonspacial33

2015-05-01 20:35:32

it has to be todo with h0-1 cannot determine a 4 and h1 must be -1 for the 1st button in a row only causing a larger problem when button 1 must turn off button 16 which would be 4 and 4... oh for a for loop or an else statement

hang on a minute... brb

DvlsAdvct

2015-05-01 20:36:47

Can you clear those rules out for me from that translator so it instead goes with my example? If that doesn't work then the rules need to change, the h1-1 won't help us.

nonspacial33

2015-05-01 20:40:13

i'm almost stupid... i need to work with binary numbers of hex not increments of variables h0 and h1 are stored values for midi if i put this i get all but button 16 working properly

Code: Select all

if h0==148 then Goto "1"
if h0>148 then Goto "2"
Label "1"
h1=h1-1
h0=151
exit rules, execute Outgoing Action
Label "2"
h0=h0-1

DvlsAdvct

2015-05-01 20:44:29

Wait... is h0 or h1 being recalculated before the first timer goes off?

nonspacial33

2015-05-01 20:47:49

no because of g2!=1 Exit rules skip outgoing action

nonspacial33

2015-05-01 20:51:16

i have 15 buttons cycling now, just ned to say when button 1A is active button 4D is off which should be h0=151 h1=56 or 97 and 38 respectively in hex

Code: Select all

if h0==148 then Goto "1"
if h0>148 then Goto "2"
Label "1"
if h1==1 then Goto "3"
h1=h1-1
h0=151
exit rules, execute Outgoing Action
Label "2"
h0=h0-1
exit rules, execute Outgoing Action
Label "3"
h1=56
h0=151
still leaves it lit

nonspacial33

2015-05-01 20:57:59

did it... binary number again if h1==53 Goto "3"

On to the next prob. Thankyou very much for your help dude! Hope Works nearly over!

DvlsAdvct

2015-05-01 21:12:53

Just want to confirm, it's working now?

nonspacial33

2015-05-01 21:18:25

yup definitely working how it should

DvlsAdvct

2015-05-01 22:03:49

Woooooooo :) Let us know when more questions come up.

nonspacial33

2015-05-01 23:09:39

Here I am againstuck on the next conundrum. The lights that indicate whether a point in time should trigger or not.

Factors involved:

1 they must toggle on/off when pressed.
2 they must be ignored or retriggered if they are switched off by the previous light moving with time.
3 they must be recallable at any stage if the preset is deactivated.

So in a single translator I hope to achieve this.

additional annoyance is the apc sends an off code in the format of 80 .. .. when the button is released so that needs ignoring or the light turns off on release.

I have so far got a type of toggle to work but with it only using 1 global variable it actually becomes a double tap to toggle any button as it's the state the last tap left it in (probably another button).

This leaves me thinking i need to store the value of the whole button and it's on/off state. If I do that I'm worried i'll be using up lots and lots of globals in just this project alone and i need to merge it with an existing multi page setup i already have to over haul from many many direct translators to nice readable rules like this. as i understand it there are ga through g9 and the same with h. so that's 72 globals total.

any ideas how i can store 16 note and channel values and 16 states in one translator for use by the lights and later re-triggers of the sample thy're attached to?
Attachments
Traktor step sequencer build.bmtp
current state
(2.35 KiB) Downloaded 230 times

nonspacial33

2015-05-01 23:48:09

currently going for 4 translators 1 per column but i still not happy about 16 globals being swallowed up so any ideas welcome

nonspacial33

2015-05-02 02:05:20

Keeping the post up-to-date now in case anyone comes with suggestions.

preset called Toggle Sequencer Lights

Two intialise translators used to set the globals ga-gp (16) on or off and a second to turn on the lights for the corresponding notes (this is so i can provide preset patterns to cycle through in future so each pattern will be a seperate preset which initialises when activated (re-using the same 16 variables then)

there are then 4 translators that correspond to the rows from left to right of a button pressed. They each contain a way to cycle the light on or off depending upon input and i thought following the left right logic of the time position light would keep my head clearer in future. so ga-gd is row 1 states and gm-gp is row 4 states.

I'm now trying to work out a way to keep the lights on that are related to these global variables if they are set to 1, i.e. on. currently they are turned off by the passing timecode driven light as it passes and then require a double tap to sync to the global variable state

That's where i'm at, any suggestions welcome i'm checking back most of the night

Peace
Attachments
Traktor step sequencer build.bmtp
(5.18 KiB) Downloaded 224 times

nonspacial33

2015-05-03 07:14:48

Traktor step sequencer build.bmtp
Latest
(14.34 KiB) Downloaded 258 times
The current state; @ the point of bed it's 6:13am, for our perusal if you wish. it's almost there. couple more tweaks needed. also might have a usb bandwidth problem with the lights i'll work explain more when i'm up

nonspacial33

2015-05-03 21:20:59

Hi again,

EDIT: added a project text file so you can see all port assignments and stuff more easily than clicking in and out.
EDIT 2: Realised there's 2 traktor mappings. a second one for the clip triggers so another rar added

As i said this morning i'll update with a description: right now it almost works but there's a bug that i can't work out and need some help again.

if you load the tsi in the rar i give you, connect it to MT port 1 in and out in traktor (i've just changed the channel from 8-3 for my purposes and the outs reflect apc light settings not just 0 and 127

So it works perfectly until you turn on the midi clock sending from traktors master clock.

What happens then, is the lights being sent from traktor to MT when the state updates from a button whilst the clock is being sent, gets missed out; This is the left side of the grid now 4x4 and it's 3rd and 4th rows (the 2nd row is pure MT in it's own translator and the lights work regardless of midi clock send and the top row is the same translator as the top row and works correctly?); if the clock is not being sent then the lights react correctly.

The translator controlling these is Midi Messages from Traktor 4x4 Left hand grid, inside Main Buttons Preset.

Occasionally the message does get through to the apc and the light changes to reflect the state within traktor but you then have to hit the button repeatedly and catch the state change from on to off or vice versa... it's confusing i know. Always does the message send from the button to traktor and the actual effect happens. i.e. slots mute and unmute, filters turn on and off.

i'll paste some log here to show you the things working and not i'll use just one button.

This happens with no clock running:

Code: Select all

IN 2.2: MIDI 90 37 7F,  oo=0x90 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.3: MIDI 90 37 7F,  oo=0x90 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.4: MIDI 90 37 7F,  oo=0x90 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.5: MIDI 90 37 7F,  oo=0x90 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 3.1: MIDI 90 37 7F,  oo=0x90 vv=0x37 pp=0x7F
assignment: (ss=127) = 127
condition satisfied: if vv==55 then Goto "row3"
condition satisfied: if oo==144 then Goto "Button9"
assignment: (qq=178) = 178
assignment: (rr=20) = 20
condition satisfied: if hf==0 then Goto "on9"
assignment: (hf=1) = 1
exit rules, execute Outgoing Action
OUT 3.1: MIDI B2 14 7F
IN 3.3: MIDI 90 37 7F,  oo=0x90 vv=0x37 pp=0x7F
condition satisfied: if vv!=54 then exit rules, skip Outgoing Action
IN 3.4: MIDI 90 37 7F,  oo=0x90 vv=0x37 pp=0x7F
condition satisfied: if vv!=54 then exit rules, skip Outgoing Action
IN 3.5: MIDI 90 37 7F,  oo=0x90 vv=0x37 pp=0x7F
condition satisfied: if vv!=54 then exit rules, skip Outgoing Action
IN 3.2: MIDI B2 14 04,  oo=0xB2 vv=0x14 pp=0x04
condition satisfied: if vv<=27 then Goto "Block2"
condition satisfied: if vv==20 then Goto "Button5"
assignment: (qq=144) = 144
assignment: (rr=55) = 55
assignment: (ss=pp) = 4
exit rules, execute Outgoing Action
OUT 3.2: MIDI 90 37 04
IN 2.2: MIDI 80 37 7F,  oo=0x80 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.3: MIDI 80 37 7F,  oo=0x80 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.4: MIDI 80 37 7F,  oo=0x80 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.5: MIDI 80 37 7F,  oo=0x80 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 3.1: MIDI 80 37 7F,  oo=0x80 vv=0x37 pp=0x7F
assignment: (ss=127) = 127
condition satisfied: if oo<144 then exit rules, skip Outgoing Action
IN 3.3: MIDI 80 37 7F,  oo=0x80 vv=0x37 pp=0x7F
condition satisfied: if oo<144 then exit rules, skip Outgoing Action
IN 3.4: MIDI 80 37 7F,  oo=0x80 vv=0x37 pp=0x7F
condition satisfied: if oo<144 then exit rules, skip Outgoing Action
IN 3.5: MIDI 80 37 7F,  oo=0x80 vv=0x37 pp=0x7F
condition satisfied: if oo<144 then exit rules, skip Outgoing Action
Here is the code that runs for the light to change from the above:

Code: Select all

IN 3.2: MIDI B2 14 04,  oo=0xB2 vv=0x14 pp=0x04
condition satisfied: if vv<=27 then Goto "Block2"
condition satisfied: if vv==20 then Goto "Button5"
assignment: (qq=144) = 144
assignment: (rr=55) = 55
assignment: (ss=pp) = 4
exit rules, execute Outgoing Action
OUT 3.2: MIDI 90 37 04
Here is the same action with the clock running:

Code: Select all

IN 2.2: MIDI 90 37 7F,  oo=0x90 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.3: MIDI 90 37 7F,  oo=0x90 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.4: MIDI 90 37 7F,  oo=0x90 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.5: MIDI 90 37 7F,  oo=0x90 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 3.1: MIDI 90 37 7F,  oo=0x90 vv=0x37 pp=0x7F
assignment: (ss=127) = 127
condition satisfied: if vv==55 then Goto "row3"
condition satisfied: if oo==144 then Goto "Button9"
assignment: (qq=178) = 178
assignment: (rr=20) = 20
condition satisfied: if hf==0 then Goto "on9"
assignment: (hf=1) = 1
exit rules, execute Outgoing Action
OUT 3.1: MIDI B2 14 7F
IN 3.3: MIDI 90 37 7F,  oo=0x90 vv=0x37 pp=0x7F
condition satisfied: if vv!=54 then exit rules, skip Outgoing Action
IN 3.4: MIDI 90 37 7F,  oo=0x90 vv=0x37 pp=0x7F
condition satisfied: if vv!=54 then exit rules, skip Outgoing Action
IN 3.5: MIDI 90 37 7F,  oo=0x90 vv=0x37 pp=0x7F
condition satisfied: if vv!=54 then exit rules, skip Outgoing Action
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 20
assignment: (g2=g2+1) = 2
condition satisfied: if g2!=1 then exit rules, skip Outgoing Action
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 21
assignment: (g2=g2+1) = 3
condition satisfied: if g2!=1 then exit rules, skip Outgoing Action
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 22
assignment: (g2=g2+1) = 4
condition satisfied: if g2!=1 then exit rules, skip Outgoing Action
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 23
assignment: (g2=g2+1) = 5
condition satisfied: if g2!=1 then exit rules, skip Outgoing Action
IN 3.2: MIDI F8 F8 F8,  oo=0xF8 vv=0xF8 pp=0xF8
condition satisfied: if oo!=178 then exit rules, skip Outgoing Action
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 24
assignment: (g2=g2+1) = 6
condition satisfied: if g2!=1 then exit rules, skip Outgoing Action
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 25
condition satisfied: if g0>24 then g1=g1+1
assignment: (if g0>24 then g1=g1+1) = 4
condition satisfied: if g0>24 then g0=1
assignment: (if g0>24 then g0=1) = 1
assignment: (g2=g2+1) = 7
condition satisfied: if g2>6 then g3=g3+1
assignment: (if g2>6 then g3=g3+1) = 5
condition satisfied: if g3>4 then g3=1
assignment: (if g3>4 then g3=1) = 1
condition satisfied: if g2>6 then g2=1
assignment: (if g2>6 then g2=1) = 1
OUT 0.1: One-shot timer "Beat Timer": 0 ms delay
IN 2.2: MIDI 80 37 7F,  oo=0x80 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.3: MIDI 80 37 7F,  oo=0x80 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.4: MIDI 80 37 7F,  oo=0x80 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 2.5: MIDI 80 37 7F,  oo=0x80 vv=0x37
condition satisfied: if oo<148 then exit rules, skip Outgoing Action
IN 3.1: MIDI 80 37 7F,  oo=0x80 vv=0x37 pp=0x7F
assignment: (ss=127) = 127
condition satisfied: if oo<144 then exit rules, skip Outgoing Action
IN 3.3: MIDI 80 37 7F,  oo=0x80 vv=0x37 pp=0x7F
condition satisfied: if oo<144 then exit rules, skip Outgoing Action
IN 3.4: MIDI 80 37 7F,  oo=0x80 vv=0x37 pp=0x7F
condition satisfied: if oo<144 then exit rules, skip Outgoing Action
IN 3.5: MIDI 80 37 7F,  oo=0x80 vv=0x37 pp=0x7F
condition satisfied: if oo<144 then exit rules, skip Outgoing Action
IN 1.1: On timer "Beat Timer"
assignment: (oo=147+g3) = 148
assignment: (vv=52+g1) = 56
assignment: (h0=oo) = 148
assignment: (h1=vv) = 56
assignment: (pp=3) = 3
condition satisfied: if oo==148 then Goto "1"
condition satisfied: if vv==56 then Goto "note4"
condition satisfied: if gm==1 then pp=1
assignment: (if gm==1 then pp=1) = 1
exit rules, execute Outgoing Action
OUT 1.1: MIDI 94 38 01
IN 1.2: On timer "Beat Timer"
assignment: (pp=0) = 0
condition satisfied: if h0==148 then Goto "1"
condition satisfied: if h1==56 then Goto "note15"
assignment: (h1=h1-1) = 55
assignment: (h0=151) = 151
exit rules, execute Outgoing Action
OUT 1.2: MIDI 97 37 00
IN 2.6: On timer "Beat Timer"
assignment: (h2=36) = 36
assignment: (oo=147+g3) = 148
assignment: (vv=52+g1) = 56
assignment: (pp=0) = 0
condition satisfied: if oo==148 then Goto "1"
condition satisfied: if vv==56 then Goto "note4"
condition satisfied: if gm==1 then pp=127
assignment: (if gm==1 then pp=127) = 127
assignment: (qq=h2) = 36
exit rules, execute Outgoing Action
OUT 2.6: MIDI 92 24 7F
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 2
assignment: (g2=g2+1) = 2
condition satisfied: if g2!=1 then exit rules, skip Outgoing Action
IN 3.2: MIDI F8 F8 F8,  oo=0xF8 vv=0xF8 pp=0xF8
condition satisfied: if oo!=178 then exit rules, skip Outgoing Action
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 3
assignment: (g2=g2+1) = 3
condition satisfied: if g2!=1 then exit rules, skip Outgoing Action
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 4
assignment: (g2=g2+1) = 4
condition satisfied: if g2!=1 then exit rules, skip Outgoing Action
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 5
assignment: (g2=g2+1) = 5
condition satisfied: if g2!=1 then exit rules, skip Outgoing Action
IN 3.2: MIDI F8 F8 F8,  oo=0xF8 vv=0xF8 pp=0xF8
condition satisfied: if oo!=178 then exit rules, skip Outgoing Action
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 6
assignment: (g2=g2+1) = 6
condition satisfied: if g2!=1 then exit rules, skip Outgoing Action
IN 0.1: MIDI F8
assignment: (g0=g0+1) = 7
assignment: (g2=g2+1) = 7
condition satisfied: if g2>6 then g3=g3+1
assignment: (if g2>6 then g3=g3+1) = 2
condition satisfied: if g2>6 then g2=1
assignment: (if g2>6 then g2=1) = 1
OUT 0.1: One-shot timer "Beat Timer": 0 ms delay
IN 1.1: On timer "Beat Timer"
assignment: (oo=147+g3) = 149
assignment: (vv=52+g1) = 56
assignment: (h0=oo) = 149
assignment: (h1=vv) = 56
assignment: (pp=3) = 3
condition satisfied: if oo==149 then Goto "2"
condition satisfied: if vv==56 then Goto "note8"
exit rules, execute Outgoing Action
OUT 1.1: MIDI 95 38 03
This is the code that triggers traktor and mutes/unmutes it from above:

Code: Select all

IN 3.1: MIDI 90 37 7F,  oo=0x90 vv=0x37 pp=0x7F
assignment: (ss=127) = 127
condition satisfied: if vv==55 then Goto "row3"
condition satisfied: if oo==144 then Goto "Button9"
assignment: (qq=178) = 178
assignment: (rr=20) = 20
condition satisfied: if hf==0 then Goto "on9"
assignment: (hf=1) = 1
exit rules, execute Outgoing Action
OUT 3.1: MIDI B2 14 7F
but there is no code like in the first example. it's like the F8 signal blocks it and you can get lucky getting it to send in between 1 of the 24 clicks/s, then it's still a 50:50 chance it will be on or off already and the state of the LED will actually change hence having to tap the button so many times to "catch" the correct change event and be inbetween the clicks. I could be way off here but that's waht it looks like to me. Any ideas?

What i really don't want to do is use up more globals, already got 31, as i say in earlier posts i need to merge this as 1 page of 9 pages i have for traktor mapping. If there is a way to take a snapshot of the global state within a preset on deactivation and reload those values on preset activation, thus freeing all the globals back up for other preset combinations then i won't mind using all 70 but i can't figure a way to record their changing states anyway. and what i really need todo is get that message to trigger with F8's happening.

If i try changing the MT port of the clock in traktor to MTVP2 and the in port of the 16ths timer in MT timers preset then it breaks the timer and instead of single F8's i get F8 F8 F8 per control and so no step lights on the seq part.

This is really weird to me please help

i'll post short description below of each translator if you need me to

thanks
Robbie
Attachments
Midi_Fighter_Twister_Nonspacial.rar
EDIT 2 Updated rar
(34.81 KiB) Downloaded 215 times
Traktor step sequencer build.txt
project as text file
(22.42 KiB) Downloaded 222 times
Traktor step sequencer build.bmtp
Needs help
(13.93 KiB) Downloaded 239 times

nonspacial33

2015-05-04 05:25:45

I believe i have traced the problem but i'm still without a working fix.

Code: Select all

IN 3.2: MIDI F8 F8 F8,  oo=0xF8 vv=0xF8 pp=0xF8
condition satisfied: if oo==248 then exit rules, skip Outgoing Action
i've caught this a lot in the log 3.2 is the translator in question, i added the condition in a vain attempt to block it, and should read this:

Code: Select all

IN 3.2: MIDI B2 14 05,  oo=0xB2 vv=0x14 pp=0x05
condition satisfied: if vv<=27 then Goto "Block2"
condition satisfied: if vv==20 then Goto "Button5"
assignment: (qq=144) = 144
assignment: (rr=55) = 55
assignment: (ss=pp) = 5
exit rules, execute Outgoing Action
OUT 3.2: MIDI 90 37 05
it appears that traktors clock is triggering the translator and blocks messages to it.

having the timer on MTport 2 and the lights listening on MTport 1 makes no difference it takes 3 ticks of the timing clock and procs translator 3.2. this makes me think traktor sends on all ports and has nothing todo with the clock send out controller device map parameter.

how can i block F8 on a particular port so it doesn't even trigger any translators leaving it free to only process cc values coming from traktor?

nonspacial33

2015-05-04 06:01:06

muppet... been on that all day.

simple answer to a stupid question... B2 vv pp and remove all the oo skips from the translator

included the working file this triggers slot 1 clip 1 only and if you turn push the right hand grid 4x4 you can play any 16th u like. pushing the red 2nd row on the left will turn on the beat tracker lights and pushing the same now orange button again will turn them off, otherwise it is radio style. This will be the selector for the 4 slots editors.

Top row FX on per slot 1-4
3rd Row Mute Slots 1-4
4th Row Filter On Slots 1-4

This is a long way from finished but if you like it then you might also want to learn from the steps i've been on

Peace
Robbie
Attachments
Traktor step sequencer build.bmtp
latest working version
(16.72 KiB) Downloaded 224 times

nonspacial33

2015-05-05 15:50:10

Almost done. all the complicated step sequencer parts are complete and i'm just mapping basic controls now. should be ready today or at the latest tomorrow. Full rar'd package will be posted and available.

A question about that then, do you think i should post a new thread for the completed version?

DvlsAdvct

2015-05-05 15:55:13

Leave it here. I'm going to put the whole thread into the pinned forum post, so it's all together. :) And so people can see the workflow and learn from our mistakes as it got built.

nonspacial33

2015-05-07 03:42:42

Ok so here it is... Still Has some bugs and only the initialise preset exists for the 4 slots. Remember Deck D only.
Nonspacial_Traktor_Sequencer_Deck_D_Beta.rar
Bugged but all mapped
(68.5 KiB) Downloaded 217 times
You need to connect the Traktor Tsi's (all3 atm) to MT1 in and out

Then when traktor is running hit the play button on your APC... The one @ the bottom right.. then hit one of the blanked out buttons on the left of the grid to activate a sequence... 1-4. they will go red and the one u pushed orange. then finally hit the stop button next to the play button to sync the lights with the beat and you will see the red strip of lights disappear once passed.. then your good to go.

left of grid:
1st Row slot FX 1-4
2nd Row Slot Sequence Trigger 1-4 and enter edit mode
3rd row slot mutes 1-4
4th row FX panel 1 button controls (i have as single FX not group)
5th row FX panel 2 button controls (also single)
Clip stop buttons: Filter On slot 1-4

Right of Grid:
Normal Mode:
rows 1-4 Slot Sample triggers (all 64 samples of the deck in 4 pages)
Row 5 Remix Deck Page Selectors 1-4
Edit Mode:
rows 1-4 become step sequencer 16 steps 4 beats 16th notes.
Row 5 not active

EDIT:

Scene Launch From Top to Bottom: Load Mod, Capture Mod, Reverse Mod and Delete Mod. works with Right Hand Grid Normal Mode Remix Deck Triggers. Hold and Tap button for function.

Last Button on scene Launch is Load Set From List (Unlit to make it more obvious) Deck D only.

End EDIT

Clip Stop Buttons (edit or not) Slot Stop and Kill Sequence buttons
Stop All Clips Button - Stop all slots and toggle Deck D play

Activator buttons 1-4 slot Keylock 1-4; Buttons 5-8 FX1-4 On Deck D (mixer)
Solo/Cue buttons 1-4 Slot Monitor 1-4; Buttons 5-7 FX3 Buttons; Button 8 Empty
Record/Arm buttons 1-4 Slot Punch Mode; Buttons 5-7 FX4 Buttons; Button 8 Empty

Faders 1-8 FX selectors for 8 FX single 1-2 and group 3-4
Master Fader Master Vol
Cue Knob Browse List

Bank Select Browser Tree Up/Down Expand/Collapse
Pan/Send Buttons Capture Source Selector 1-4 Deck A,B,C(working) & Loop Rec(bugged)
Clip/Track through right arrow buttons Loop Rec Length, left to right 4,8,16,32
Detail View to Metronome Knob Page Selector

Knobs:
Normal Mode:
Top Row per slot sample selector 1-11 of the samples in a slot (12-16 cannot be reached)
2nd Row per slot pattern selector 1-11 (none exist function still to be built LEDs works though)
3rd Row Slot Volume control (note if edit page velocities are edited this will not work and the LED ring will jump around to reflect the sequenced velocity)
4th row per slot filter 1-4

Edit Mode:
when sequencer edit mode is entered all knobs will go to full 127, in this state the 3rd row knob controls the volume.
each knob equates to each of the 16th's of the bar that are counted by turning a knob relevant to an active hit traktor will reduce the vol of that hit creating velocities. if 1 of these knobs is not 127 then any edit u make outside this page to volume will be disabled.

Knob Special Modes from detail view buttons:
Detail view is Mode 1 it is already explained above as Normal Mode.
Rec Quant is Mode 2 it controls the FX parameters
Top Row FX1
2nd Row FX3
3rd FX2
4th FX4
the other 2 modes are unmapped to anything but should be mappable just within traktor to whatever you want and create an out on the same learned channel, atm they are buggy with the LEDs and so i don't suggest mapping them to anything right now.

Thanks for your help DV, i have a radio show 2moro night @ 7pm uk time i will most definitely be using it then. and i'll have all the bugs out by the weekend i imagine.

If you have an APC40 MK1 then please feel free to have a try out and tell me here what you think. when it's complete a video and a proper jpeg and tsi package will be rar'd and available here!

Peace and g'night

Robbie

nonspacial33

2015-05-07 17:47:54

ok so i need to rethink the knob modes a bit better as currently they de-activate all presets except for the knob mode and i this stops the sequencer so you can't flick modes whilst playing the deck... pointless.

is there a way to toggle the always active flag of a preset with a translator?

if so then i can make the patterns slaved to their own activation as always active and the above issue will not affect them. but i need 11 of these that are toggled on and off per slot by the knob position.

Something Like this is what i imagine but don't know how to make it work:

on activation of this preset

ignore for next/previous switching on

outgoing None

on deactivattion of this preset

ignore for next previous switching off

outgoing None


a workaround might be to have the ignore next/previous on for all the preset patterns and then turn them off individually by name, but that would mean for every pattern i would need 11 translators to turn them off per 11 to turn them on. making a ludicrous number of translators.

the other potential i thought of was if there is a way to vary the outgoing action of preset turning off then as they are named with numerical increments Pattern1 Slot1 then i could do some rules to change the pattern 1 to pattern2 etc and have 1 translator do the lot. looking something like this:

on activation of this preset
if this preset == pattern1 slot1 then *=2 to 11
deactivate all presets named Pattern* Slot1

i already see this not working without naming variables not just with oo or pp etc

but maybe for future releases of MT you can find a way to create variables ourselves.

I think i'll try an always active flag and put the turn off translator in the stop slot for now as i don't have patterns to worry about... and that might end up the best way to do it.

still open to suggestions though

Will be back with a new rar when i've sussed it.

nonspacial33

2015-05-07 17:58:47

actually fixed it with the last thing i said. had to make enough translators to clear them all with the stop all clips button but i've just got a conflict with 1 fadr for FX2 select. when the midi clock is being sent it's getting a message. fix that and all should be good.

this is still only 1 pattern. if you edit the pattern it will stay edited, if you mute the slot you can take it out the mix and bring it back in. if you stop the slot it will reset the pattern

Patterns are right now:

Slot 1: 4 to the floor for Kicks
Slot 2: standard Snare on 2 and 4
Slot 3: Standard Open Hat on Off beat
Slot 4: Random sound with a single hit near the end of the bar.

upload soon

nonspacial33

2015-05-07 18:12:51

yeah got it.... hadn't removed the 2nd values from the sequencer translator in pattern1 slot1 when i seperated the velocity to it's own but there were no values set for it so it just sent on B2 02 random variable now it's gone!

EDIT: Last Bug Gone. Changed the file below. Remix Deck samples were triggering when in edit mode. i.e normal mode was playing when in edit mode. FIXED
Nonspacial_Traktor_Sequencer_Deck_D_Beta.rar
Still with a knob state bug
(78.9 KiB) Downloaded 240 times
I should probably add that the 2 other knob modes should now be mappable to anything you like within traktor. Creating an out from the input control should contol the LEDs.

This goes for the 2 spare buttons as well Solo and record arm last 2 buttons channel 8 on your apc.

nonspacial33

2015-05-08 00:05:35

In fact there is still a small knob state bug coming out of the sequencer so it's not complete quite yet. It's hard to find in the log because the you need to have the clock running for it to happen and thats 24 clicks a beat so it might take me a bit.

I'm pretty sure there'll be an exit rules, skip outgoing action required in a couple of places to sort it out. Back to the project i go!

nonspacial33

2015-05-08 02:08:00

lol just discovered i had the timer on MT2 and not MT1 from b4 when i was having problems with the F8 code so all previous versions need a midi mapping sent on MT2 from traktor... literally just a generic midi device with no controls in it set to out on MT2

next version all on MT1

nonspacial33

2015-05-08 02:31:54

Should be gootdall Traktor Mappings on MT Port 1 In and Out... If you find any bugs then let me know asap
Attachments
Nonspacial_Traktor_Sequencer_Deck_D_Beta.rar
Think this is it... Final Beta???
(79.05 KiB) Downloaded 200 times

nonspacial33

2015-05-10 03:39:05

I've cleaned out and renamed the Traktor Mappings so that only controls coming from MT are now mapped. Please re-import all files deleting the old versions from your controller manager.

I've fixed the last bug that was created when changing from MT2 to MT1 with the clock timer isolating all messages from traktor as 90 channel 1 note on messages. Now meaning there are 2 translators listening to Traktor 1 for CC values coming out of the sequencer mapping and 1 listening to Note on's from channel 1 only.

This is complete upto the point of 1 pattern only for each slots sequencer.

The next update will include a swing knob per slot settable for half, eighth, quarter and sixteenth note swing.

After that the following update will include presets for the patterns selectable and probably clean out the old logic that makes it a bit confusing to follow all the translations. If you are working with an APC yourself i suggest you start by putting your APC into mode 3 with sys ex and then isolate by note value and then by channel number if you need to. I also suggest all Labels should use meaningful names for the functionality you will be using in the end. This will stop things like Row1 and Block1 and Check1 etc being employed and confusing what you're trying to achieve. All of this is still in this version and you can see exactly what i mean.

1 more version b4 i tackle this and clean it up.
Attachments
Nonspacial_Traktor_Sequencer_Deck_D_Beta.rar
Non-Cleaned Traktor Mapping updates and Bomes isolation of messages from traktor.
(76.17 KiB) Downloaded 212 times

nonspacial33

2015-05-13 22:45:39

Hi Guys,

Been busy this week so haven't had a chance to get the hours in without requiring no sleep.

Anyway as promised here is the Swing knob added and a couple of adjustments isolating things better.

I used it on Monday for a 3 hour radio show and it's totally usable as a single sequencer per slot. I've managed to isolate a bug when in Edit Mode for any given slot the final Knob bottom Right kept reporting a 02 value to the LED ring. Everytime you turned this knob back up it jumped down again. but i don't think it was affecting the global in which the velocity is stored and any note triggered seemed to carry the velocity set either 127 on intilisation or whatever i set it to. It looked like bleed over from Traktor updating the knob but it is my APC being old and the X-Fader was sending messages on it's own with a value of 02 and being translated by the velocity preset

The other thing that happened by the time i had finished was 2 of the stop clip buttons in the right half (permanently off and used to stop individual slots) were on... I didn't see it happen, i'm not sure but think it might have something to do with the standard clip triggers in Standard Mode, haven't been able to replicate it yet.

Slot 4 had an exit rules, execute outgoing action missing for "note10" so the light was on if the light below was on but it didn't play because no global was set. now working correctly.

So here's What's New:

Swing (EDIT MODE ONLY): CUE LEVEL KNOB.

Per Slot So the slot you're editing is the one you can swing. Twist the knob slowly for single ms changes and fast for upto 7ms at a time (not really recommended unless your BPM is very slow or you're feeling like being a bit mental!). Cannot go below 0 so to Reset either Stop the Slot with the clip stops and start it again or twist the knob fast to the left... Hence the 7ms changes available: Quick reset.

Swing Modes: PAN - SEND C Buttons

Per Slot also. Whilst in EDIT MODE you can select the swing style here.. depending on your pattern you may need to swing Halves, Quarters, Eighths or Sixteenths by the radio selection style of these buttons you will know where you are.

More Details:
This is not relative to the notes you have. it is static and you must choose for the notes you are mostly using.

Halves swing only the 1st button on beat 4(e.g 2nd Snare hit)
Quarters swing 2nd and 4th Beat 1st buttons (e.g. 4 kicks 2nd and 4th are swung)
Eighths swing all the 3rd column of buttons (e.g. 8th note hats pattern swing)
Sixteenths swing all the 2nd and 4th columns (e.g. 16th note hat's/ride pattern swing)

The Knob Modes can only now be accessed from outside of EDIT MODE. However if you change Knob Mode and enter EDIT MODE then when you exit again you will return to the Knob Mode you were in. So you can flick between FX and EDIT or your own mapped functions and EDIT etc...

EDIT MODE SELECTORS: You now know if a slot is playing on the APC when not in EDIT MODE the light will be Flashing Red if it is playing, Solid Red when not playing and Orange when being edited. This means you will be able to stop the slots that are playing if you want to, on monday this was a problem i encountered.

If you're really interested then I also discovered the linearity of MT and have moved Slot Pattern Edit Selector: Lights APC Loop (no traktor) to the bottom of Buttons (always active) preset; it was needing a double tap to change the state as the global was changed after the translator had finished.

The Stop ALL Clips button doesn't seem to change the light states in this instance although the global is set correctly and it works b4 the translator i just mentioned moving so be aware of that one.


Happy Sequencing!

Robbie
Attachments
Nonspacial_Traktor_Sequencer_Deck_D_Single_Pattern_Final(4 to the floor style).rar
Final Beta 1 Pattern
(77.9 KiB) Downloaded 220 times

nonspacial33

2015-05-15 03:16:40

On my 2nd live use tonight it's definitely worth telling everyone that the way Traktor works when you Sync the MIDI Clock is it waits until the next beat. This messed me up for a bit as it means if you hit sync (Stop Button bottom right) on the 1 it actually restarts the "timeline" on the 2. So YOU MUST SYNC THE BEAT ON THE 4th BEAT OR AT LEAST BEFORE THE NEXT BAR IF YOU ALREADY HAVE A TRACK PLAYING.

It's a bit weird to begin with; you only should have to do it once per setup and you could always start the Patterns 1st and keep it in headphones and mix the 1st track to it equally. But that defeats the point of the Sync function.

I found that i couldn't hit the 4 with the remix deck in my headphones and i had to listen only to the track i was actuallly playing count in for about 3 bars and get it to sync from the 4th beat and in on the 1. Once it's done though all works.

The Swing is pretty good too... allowing you to push off-kilter and into the next triggered note and back again, some really cool effects in 8ths and 16ths can be got this way plus using some FX on top = mental massiveness

Anyway. i need to clean it up now before i start duplicating up the patterns. I've decided that the initialise pattern will be blank for all slots so you don't auto start with anything runnning and can happily punch in your own pattern immediately. then there will be preset patterns above that of commonly usable stuff. This way you can start the slots with no sound attached for things like Sync and setup too.

Any comments still welcome from anyone who can and has actually used it would be awesome.

Peace

nonspacial33

2015-05-15 23:29:39

Here is the Finalised 1 pattern version of the mapping. Anything with Nothing Written across it doesn't translate through to traktor and i have plans for what they will be used for so if you like it then only go mapping things specifically stated in the Jpeg for user mapping purposes.

It has been cleaned as i said b4 it was a bit messy on the checking side of the rules.

Enjoy and Happy Sequencing.

Pattern creation up next. then i think i'll do 3 versions of the preset patterns House, Hip-Hop and DnB so whatever you want to mix there's preset patterns to :oops: right in with.
Attachments
Nonspacial_Traktor_Sequencer_Deck_D_Single_Pattern_Final(4 to the floor style).rar
Complete 1 Pattern with Jpeg
(374.84 KiB) Downloaded 256 times

tongclub62

2015-05-20 09:45:38

thanks for sharing.

florian

2015-05-20 13:53:55

Hi Nonspacial,
thanks a lot for this! I took the liberty to change the topic title so that people may find it easier. Keep us posted!
Florian

tongclub62

2015-05-21 12:22:58

Thank a lot for this.

nonspacial33

2015-06-23 22:17:26

Hi Guys,

Sorry i've been working for actual money the last month (makes a change tbh) and thanks for your comments, Florian no worries etc, etc.

First i must say thanks Florian for the new version, much cleaner interface to work with, awesome!

On that note the error monitor thingy is a wicked tab, and has already caused me a problem when i open my project. I'll post what it prints below but can i add something that might be on the cards for a future 1.8.x update. It would be really helpful if whatever is broken highlights itself red particularly in the rules section. Currently as i see it each line now is yellow for the line you are on which is a nice graphical feature but as you will see with an error like this one it's almost impossible for me to find what it's got a problem with (incredibly greatful that it tells me there is one of course). Maybe it's just my project but i'm really struggling to decipher no spaces between rules and random 000D midi numbers inbetween, maybe they're line numbers i don't know.

Worth noting I'm working on the expanded patterns template which you don't have yet.

So here's what it prints anyway, maybe you can point me in the right direction

Error(015): Error while loading preset 'Buttons (always active)', Translator '# 1: Non-Sequencer Midi Messages to Traktor':
corrupt options: StMa00000222if(oo>=176)noexecutess=127if(vv==49)goto0007Monitorif(vv==48)goto0005Punchif(vv==50)goto0007Keylockif(vv==52)goto0006Filterif(vv==53)goto0004Row1if(vv==54)goto0004Row2if(vv==55)goto0004Row3if(vv==56)goto0004Row4if(vv==57)goto0004Row5if(vv<=61)goto000BLoopRecSizeif(vv<=65)noexecuteif(vv==81)goto000BStopAllPlayif(vv==82)goto0007LoadModif(vv==83)goto000ACaptureModif(vv==84)goto000AReverseModif(vv==85)goto0009DeleteModif(vv==86)goto000CLoadSetDeckDif(vv==87)goto0005DeckAif(vv==88)goto0005DeckBif(vv==89)goto0005DeckCif(vv==90)goto0007LoopRecif(vv==92)goto000DSequencerSyncif(vv==93)goto0009LoopRecOnif(vv<=97)goto0006Browseif(vv==98)noexecuteif(vv==99)goto0009LoopRecOnif(oo<144)noexecutenoexecutelabel0006Filterif(oo==144)goto0008Button13if(oo==145)goto0008Button14if(oo==146)goto0008Button15if(oo==147)goto0008Button16noexecutelabel0008Button13qq=178rr=24if(hj==0)goto0004on13if(hj==1)goto0005off13label0004on13hj=1executelabel0005off13hj=0executelabel0008Button14qq=178rr=25if(hk==0)goto0004on14if(hk==1)goto0005off14label0004on10hk=1executelabel0005off14hk=0executelabel0008Button15qq=178rr=26if(hl==0)goto0004on15if(hl==1)goto0005off15label0004on15hl=1executelabel0005off15hl=0executelabel0008Button16qq=178rr=27if(hm==0)goto0004on16if(hm==1)goto0005off16label0004on16hm=1executelabel0005off16hm=0executelabel0004Row1if(oo==144)goto0007Filter1if(oo==145)goto0007Filter2if(oo==146)goto0007Filter3if(oo==147)goto0007Filter4if(oo<=135)goto0014RemixDeckOffControlsif(oo>147)goto000FrightSideNormalnoexecutelabel0007Filter1qq=178rr=106if(ha==0)goto0003on1if(ha==1)goto0004off1label0003on1ha=1executelabel0004off1ha=0ss=0executelabel0007Filter2qq=178rr=107if(hb==0)goto0003on2if(hb==1)goto0004off2label0003on2hb=1executelabel0004off2hb=0ss=0executelabel0007Filter3qq=178rr=108if(hc==0)goto0003on3if(hc==1)goto0004off3label0003on3hc=1executelabel0004off3hc=0ss=0executelabel0007Filter4qq=178rr=109if(hd==0)goto0003on4if(hd==1)goto0004off4label0003on4hd=1executelabel0004off4hd=0ss=0executelabel0004Row2if(oo==144)goto0007Button5if(oo==145)goto0007Button6if(oo==146)goto0007Button7if(oo==147)goto0007Button8if(oo<=135)goto0014RemixDeckOffControlsif(oo>147)goto000FrightSideNormalnoexecutelabel0007Button5if(he==1)goto0006Reset1if(he!=1)he=1noexecutelabel0006Reset1if(he==1)he=0noexecutelabel0007Button6if(he==2)goto0006Reset2if(he!=2)he=2noexecutelabel0006Reset2if(he==2)he=0noexecutelabel0007Button7if(he==3)goto0006Reset3if(he!=3)he=3noexecutelabel0006Reset3if(he==3)he=0noexecutelabel0007Button8if(he==4)goto0006Reset4if(he!=4)he=4noexecutelabel0006Reset4if(he==4)he=0noexecutelabel0004Row3if(oo==144)goto0007Button9if(oo==145)goto0008Button10if(oo==146)goto0008Button11if(oo==147)goto0008Button12if(oo<=135)goto0014RemixDeckOffControlsif(oo>147)goto000FrightSideNormalnoexecutelabel0007Button9qq=178rr=20if(hf==0)goto0003on9if(hf==1)goto0004off9label0003on9hf=1executelabel0004off9hf=0executelabel0008Button10qq=178rr=21if(hg==0)goto0004on10if(hg==1)goto0005off10label0004on10hg=1executelabel0005off10hg=0executelabel0008Button11qq=178rr=22if(hh==0)goto0004on11if(hh==1)goto0005off11label0004on11hh=1executelabel0005off11hh=0executelabel0008Button12qq=178rr=23if(hi==0)goto0004on12if(hi==1)goto0005off12label0004on12hi=1executelabel0005off12hi=0executelabel0004Row4if(oo==144)goto0009FxUnit1Onif(oo==145)goto000EFxUnit1Button1if(oo==146)goto000EFxUnit1Button2if(oo==147)goto000EFxUnit1Button3if(oo<=135)goto0014RemixDeckOffControlsif(oo>147)goto000FrightSideNormalnoexecutelabel0009FxUnit1Onqq=178rr=32ss=ppexecutelabel000EFxUnit1Button1qq=178rr=33ss=ppexecutelabel000EFxUnit1Button2qq=178rr=34ss=ppexecutelabel000EFxUnit1Button3qq=178rr=35ss=ppexecutelabel0004row5if(oo==144)goto0009FxUnit2Onif(oo==145)goto000EFxUnit2Button1if(oo==146)goto000EFxUnit2Button2if(oo==147)goto000EFxUnit2Button3if(oo<=135)goto0014RemixDeckOffControlsif(oo>147)goto000FrightSideNormalnoexecutelabel0009FxUnit2Onqq=178rr=36ss=ppexecutelabel000EFxUnit2Button1qq=178rr=37ss=ppexecutelabel000EFxUnit2Button2qq=178rr=38ss=ppexecutelabel000EFxUnit2Button3qq=178rr=39ss=ppexecutelabel000FrightSideNormalif(he!=0)noexecuteif(oo>151)noexecuteif(oo<=135)goto0014RemixDeckOffControlsif(vv==52)goto0008StopRowsif(vv==53)goto0009remixRow1if(vv==54)goto0009remixRow2if(vv==55)goto0009remixRow3if(vv==56)goto0009remixRow4if(vv==57)goto000CpageSelectorif(vv>57)noexecutelabel0009remixRow1if(oo==148)goto000Aslot1Cell1if(oo==149)goto000Aslot2Cell1if(oo==150)goto000Aslot3Cell1if(oo==151)goto000Aslot4Cell1label000Aslot1Cell1qq=144rr=26executelabel000Aslot2Cell1qq=144rr=32executelabel000Aslot3Cell1qq=144rr=38executelabel000Aslot4Cell1qq=144rr=44executelabel0009remixRow2if(oo==148)goto000Aslot1Cell2if(oo==149)goto000Aslot2Cell2if(oo==150)goto000Aslot3Cell2if(oo==151)goto000Aslot4Cell2label000Aslot1Cell2qq=144rr=27executelabel000Aslot2Cell2qq=144rr=33executelabel000Aslot3Cell2qq=144rr=39executelabel000Aslot4Cell2qq=144rr=45executelabel0009remixRow3if(oo==148)goto000Aslot1Cell3if(oo==149)goto000Aslot2Cell3if(oo==150)goto000Aslot3Cell3if(oo==151)goto000Aslot4Cell3noexecutelabel000Aslot1Cell3qq=144rr=28executelabel000Aslot2Cell3qq=144rr=34executelabel000Aslot3Cell3qq=144rr=40executelabel000Aslot4Cell3qq=144rr=46executelabel0009remixRow4if(oo==148)goto000Aslot1Cell4if(oo==149)goto000Aslot2Cell4if(oo==150)goto000Aslot3Cell4if(oo==151)goto000Aslot4Cell4noexecutelabel000Aslot1Cell4qq=144rr=29executelabel000Aslot2Cell4qq=144rr=35executelabel000Aslot3Cell4qq=144rr=41executelabel000Aslot4Cell4qq=144rr=47executelabel000CpageSelectorif(oo==148)goto000Dpage1Selectorif(oo==149)goto000Dpage2Selectorif(oo==150)goto000Dpage3Selectorif(oo==151)goto000Dpage4Selectornoexecutelabel000Dpage1Selectorqq=144rr=30executelabel000Dpage2Selectorqq=144rr=36executelabel000Dpage3Selectorqq=144rr=42executelabel000Dpage4Selectorqq=144rr=48executelabel0014RemixDeckOffControlsif(he!=0)noexecuteif(oo<132)noexecuteif(vv==53)goto000CremixRow1Offif(vv==54)goto000CremixRow2Offif(vv==55)goto000CremixRow3Offif(vv==56)goto000CremixRow4Offif(vv==57)goto000FpageSelectorOffif(vv>57)noexecutelabel000CremixRow1Offif(oo==132)goto000Dslot1Cell1Offif(oo==133)goto000Dslot2Cell1Offif(oo==134)goto000Dslot3Cell1Offif(oo==135)goto000Dslot4Cell1Offnoexecutelabel000Dslot1Cell1Offqq=128rr=26executelabel000Dslot2Cell1Offqq=128rr=32executelabel000Dslot3Cell1Offqq=128rr=38executelabel000Dslot4Cell1Offqq=128rr=44executelabel000CremixRow2Offif(oo==132)goto000Dslot1Cell2Offif(oo==133)goto000Dslot2Cell2Offif(oo==134)goto000Dslot3Cell2Offif(oo==135)goto000Dslot4Cell2Offnoexecutelabel000Dslot1Cell2Offqq=128rr=27executelabel000Dslot2Cell2Offqq=128rr=33executelabel000Dslot3Cell2Offqq=128rr=39executelabel000Dslot4Cell2Offqq=128rr=45executelabel000CremixRow3Offif(oo==132)goto000Dslot1Cell3Offif(oo==133)goto000Dslot2Cell3Offif(oo==134)goto000Dslot3Cell3Offif(oo==135)goto000Dslot4Cell3Offnoexecutelabel000Dslot1Cell3Offqq=128rr=28executelabel000Dslot2Cell3Offqq=128rr=34executelabel000Dslot3Cell3Offqq=128rr=40executelabel000Dslot4Cell3Offqq=128rr=46executelabel000CremixRow4Offif(oo==132)goto000Dslot1Cell4Offif(oo==133)goto000Dslot2Cell4Offif(oo==134)goto000Dslot3Cell4Offif(oo==135)goto000Dslot4Cell4Offnoexecutelabel000Dslot1Cell4Offqq=128rr=29executelabel000Dslot2Cell4Offqq=128rr=35executelabel000Dslot3Cell4Offqq=128rr=41executelabel000Dslot4Cell4Offqq=128rr=47executelabel000FpageSelectorOffexecutelabel0008StopRowsqq=ooif(oo==148)goto0009stopSlot1if(oo==149)goto0009stopSlot2if(oo==150)goto0009stopSlot3if(oo==151)goto0009stopSlot4noexecutelabel0009stopSlot1qq=144rr=31executelabel0009stopSlot2qq=144rr=37executelabel0009stopSlot3qq=144rr=43executelabel0009stopSlot4qq=144rr=49executelabel000BStopAllPlayif(oo==128)noexecuteoo=ooqq=178rr=14ss=ppexecutelabel000DSequencerSyncqq=178rr=15ss=ppexecutelabel0007Keylockif(oo==144)goto0008keySlot1if(oo==145)goto0008keySlot2if(oo==146)goto0008keySlot3if(oo==147)goto0008keySlot4if(oo<=135)noexecuteif(oo>147)goto0004FXonnoexecutelabel0008keySlot1qq=178rr=102ss=ppexecuteStMa0
Error(015): Error while loading preset 'Buttons (always active)', Translator '# 1: Non-Sequencer Midi Messages to Traktor':
corrupt options: 00000222if(oo>=176)n

Here's also an attached txt of the translator

Thanks Robbie
Attachments
Translator 1 Buttons Preset.txt
Just the culprit translator
(13.42 KiB) Downloaded 201 times

florian

2015-06-23 22:32:06

oops! this is an internal bug of MIDI Translator. As a last resort, it prints the raw "code of the code".
Can you please attach the actual preset file? That would be most helpful.
Thanks,
Florian
PS: the line in the error window is the format it uses in the .bmtp files. The 4-digit hex numbers ("MIDI") specify the length of the following string. It seems that the very end of it is the cause for MT's confusion: "StMa" is the identifier for the start of a rules section -- not the end. But I need the .bmtp file to find out what's going on.

nonspacial33

2015-06-23 22:57:57

Ok no worries here you go
Attachments
Traktor step sequencer build Multi-Patterns-House.bmtp
FOR FLORIAN ONLY
(384.35 KiB) Downloaded 210 times

nonspacial33

2015-06-23 23:09:57

FYI it also exists in the previous 4 to the Floor bmtp http://www.bome.com/forums/download/file.php?id=486 above and so what i am calling Final is broken in the same way

nonspacial33

2015-06-24 01:51:27

i have actually found the problem i think. it won't open all of the rules from that translator. there are 789 when it is working and only 546 actually open.

If I open my old txt file i can copy and paste everything beyond Label "Monitor" into the translator save it and then re-open the project and it's back to 546.

If I duplicate the translator turn off the original and do the same 546 rules only

If I create a new translator and put the exact same parameters into it andpaste the rules save and re-open same thing 546 rules only... the error is correct and something has corrupted somewhere, half my buttons do nothing as a result

even saving it out as new filename does the same... it works until you re-open it however so pasting in the rules shows the translator still functions with 789 rules

nonspacial33

2015-06-24 02:29:06

Full Translator should look like this

Code: Select all

Translator 1.1: Non-Sequencer Midi Messages to Traktor
Options: stop=false
Incoming: MIDI oo vv pp
Rules: 
  if oo>=176 then exit rules, skip Outgoing Action
  ss=127
  if vv==49 then Goto "Monitor"
  if vv==48 then Goto "Punch"
  if vv==50 then Goto "Keylock"
  if vv==52 then Goto "Filter"
  if vv==53 then Goto "Row1"
  if vv==54 then Goto "Row2"
  if vv==55 then Goto "Row3"
  if vv==56 then Goto "Row4"
  if vv==57 then Goto "Row5"
  if vv<=61 then Goto "LoopRecSize"
  if vv<=65 then exit rules, skip Outgoing Action
  if vv==81 then Goto "StopAllPlay"
  if vv==82 then Goto "LoadMod"
  if vv==83 then Goto "CaptureMod"
  if vv==84 then Goto "ReverseMod"
  if vv==85 then Goto "DeleteMod"
  if vv==86 then Goto "LoadSetDeckD"
  if vv==87 then Goto "DeckA"
  if vv==88 then Goto "DeckB"
  if vv==89 then Goto "DeckC"
  if vv==90 then Goto "LoopRec"
  if vv==92 then Goto "SequencerSync"
  if vv==93 then Goto "LoopRecOn"
  if vv<=97 then Goto "Browse"
  if vv==98 then exit rules, skip Outgoing Action
  if vv==99 then Goto "LoopRecOn"
  if oo<144 then exit rules, skip Outgoing Action
  exit rules, skip Outgoing Action
  Label "Filter"
  if oo==144 then Goto "Button13"
  if oo==145 then Goto "Button14"
  if oo==146 then Goto "Button15"
  if oo==147 then Goto "Button16"
  exit rules, skip Outgoing Action
  Label "Button13"
  qq=178
  rr=24
  if hj==0 then Goto "on13"
  if hj==1 then Goto "off13"
  Label "on13"
  hj=1
  exit rules, execute Outgoing Action
  Label "off13"
  hj=0
  exit rules, execute Outgoing Action
  Label "Button14"
  qq=178
  rr=25
  if hk==0 then Goto "on14"
  if hk==1 then Goto "off14"
  Label "on10"
  hk=1
  exit rules, execute Outgoing Action
  Label "off14"
  hk=0
  exit rules, execute Outgoing Action
  Label "Button15"
  qq=178
  rr=26
  if hl==0 then Goto "on15"
  if hl==1 then Goto "off15"
  Label "on15"
  hl=1
  exit rules, execute Outgoing Action
  Label "off15"
  hl=0
  exit rules, execute Outgoing Action
  Label "Button16"
  qq=178
  rr=27
  if hm==0 then Goto "on16"
  if hm==1 then Goto "off16"
  Label "on16"
  hm=1
  exit rules, execute Outgoing Action
  Label "off16"
  hm=0
  exit rules, execute Outgoing Action
  Label "Row1"
  if oo==144 then Goto "Filter1"
  if oo==145 then Goto "Filter2"
  if oo==146 then Goto "Filter3"
  if oo==147 then Goto "Filter4"
  if oo<=135 then Goto "RemixDeckOffControls"
  if oo>147 then Goto "rightSideNormal"
  exit rules, skip Outgoing Action
  Label "Filter1"
  qq=178
  rr=106
  if ha==0 then Goto "on1"
  if ha==1 then Goto "off1"
  Label "on1"
  ha=1
  exit rules, execute Outgoing Action
  Label "off1"
  ha=0
  ss=0
  exit rules, execute Outgoing Action
  Label "Filter2"
  qq=178
  rr=107
  if hb==0 then Goto "on2"
  if hb==1 then Goto "off2"
  Label "on2"
  hb=1
  exit rules, execute Outgoing Action
  Label "off2"
  hb=0
  ss=0
  exit rules, execute Outgoing Action
  Label "Filter3"
  qq=178
  rr=108
  if hc==0 then Goto "on3"
  if hc==1 then Goto "off3"
  Label "on3"
  hc=1
  exit rules, execute Outgoing Action
  Label "off3"
  hc=0
  ss=0
  exit rules, execute Outgoing Action
  Label "Filter4"
  qq=178
  rr=109
  if hd==0 then Goto "on4"
  if hd==1 then Goto "off4"
  Label "on4"
  hd=1
  exit rules, execute Outgoing Action
  Label "off4"
  hd=0
  ss=0
  exit rules, execute Outgoing Action
  Label "Row2"
  if oo==144 then Goto "Button5"
  if oo==145 then Goto "Button6"
  if oo==146 then Goto "Button7"
  if oo==147 then Goto "Button8"
  if oo<=135 then Goto "RemixDeckOffControls"
  if oo>147 then Goto "rightSideNormal"
  exit rules, skip Outgoing Action
  Label "Button5"
  if he==1 then Goto "Reset1"
  if he!=1 then he=1
  exit rules, skip Outgoing Action
  Label "Reset1"
  if he==1 then he=0
  exit rules, skip Outgoing Action
  Label "Button6"
  if he==2 then Goto "Reset2"
  if he!=2 then he=2
  exit rules, skip Outgoing Action
  Label "Reset2"
  if he==2 then he=0
  exit rules, skip Outgoing Action
  Label "Button7"
  if he==3 then Goto "Reset3"
  if he!=3 then he=3
  exit rules, skip Outgoing Action
  Label "Reset3"
  if he==3 then he=0
  exit rules, skip Outgoing Action
  Label "Button8"
  if he==4 then Goto "Reset4"
  if he!=4 then he=4
  exit rules, skip Outgoing Action
  Label "Reset4"
  if he==4 then he=0
  exit rules, skip Outgoing Action
  Label "Row3"
  if oo==144 then Goto "Button9"
  if oo==145 then Goto "Button10"
  if oo==146 then Goto "Button11"
  if oo==147 then Goto "Button12"
  if oo<=135 then Goto "RemixDeckOffControls"
  if oo>147 then Goto "rightSideNormal"
  exit rules, skip Outgoing Action
  Label "Button9"
  qq=178
  rr=20
  if hf==0 then Goto "on9"
  if hf==1 then Goto "off9"
  Label "on9"
  hf=1
  exit rules, execute Outgoing Action
  Label "off9"
  hf=0
  exit rules, execute Outgoing Action
  Label "Button10"
  qq=178
  rr=21
  if hg==0 then Goto "on10"
  if hg==1 then Goto "off10"
  Label "on10"
  hg=1
  exit rules, execute Outgoing Action
  Label "off10"
  hg=0
  exit rules, execute Outgoing Action
  Label "Button11"
  qq=178
  rr=22
  if hh==0 then Goto "on11"
  if hh==1 then Goto "off11"
  Label "on11"
  hh=1
  exit rules, execute Outgoing Action
  Label "off11"
  hh=0
  exit rules, execute Outgoing Action
  Label "Button12"
  qq=178
  rr=23
  if hi==0 then Goto "on12"
  if hi==1 then Goto "off12"
  Label "on12"
  hi=1
  exit rules, execute Outgoing Action
  Label "off12"
  hi=0
  exit rules, execute Outgoing Action
  Label "Row4"
  if oo==144 then Goto "FxUnit1On"
  if oo==145 then Goto "FxUnit1Button1"
  if oo==146 then Goto "FxUnit1Button2"
  if oo==147 then Goto "FxUnit1Button3"
  if oo<=135 then Goto "RemixDeckOffControls"
  if oo>147 then Goto "rightSideNormal"
  exit rules, skip Outgoing Action
  Label "FxUnit1On"
  qq=178
  rr=32
  ss=pp
  exit rules, execute Outgoing Action
  Label "FxUnit1Button1"
  qq=178
  rr=33
  ss=pp
  exit rules, execute Outgoing Action
  Label "FxUnit1Button2"
  qq=178
  rr=34
  ss=pp
  exit rules, execute Outgoing Action
  Label "FxUnit1Button3"
  qq=178
  rr=35
  ss=pp
  exit rules, execute Outgoing Action
  Label "row5"
  if oo==144 then Goto "FxUnit2On"
  if oo==145 then Goto "FxUnit2Button1"
  if oo==146 then Goto "FxUnit2Button2"
  if oo==147 then Goto "FxUnit2Button3"
  if oo<=135 then Goto "RemixDeckOffControls"
  if oo>147 then Goto "rightSideNormal"
  exit rules, skip Outgoing Action
  Label "FxUnit2On"
  qq=178
  rr=36
  ss=pp
  exit rules, execute Outgoing Action
  Label "FxUnit2Button1"
  qq=178
  rr=37
  ss=pp
  exit rules, execute Outgoing Action
  Label "FxUnit2Button2"
  qq=178
  rr=38
  ss=pp
  exit rules, execute Outgoing Action
  Label "FxUnit2Button3"
  qq=178
  rr=39
  ss=pp
  exit rules, execute Outgoing Action
  Label "rightSideNormal"
  if he!=0 then exit rules, skip Outgoing Action
  if oo>151 then exit rules, skip Outgoing Action
  if oo<=135 then Goto "RemixDeckOffControls"
  if vv==52 then Goto "StopRows"
  if vv==53 then Goto "remixRow1"
  if vv==54 then Goto "remixRow2"
  if vv==55 then Goto "remixRow3"
  if vv==56 then Goto "remixRow4"
  if vv==57 then Goto "pageSelector"
  if vv>57 then exit rules, skip Outgoing Action
  Label "remixRow1"
  if oo==148 then Goto "slot1Cell1"
  if oo==149 then Goto "slot2Cell1"
  if oo==150 then Goto "slot3Cell1"
  if oo==151 then Goto "slot4Cell1"
  Label "slot1Cell1"
  qq=144
  rr=26
  exit rules, execute Outgoing Action
  Label "slot2Cell1"
  qq=144
  rr=32
  exit rules, execute Outgoing Action
  Label "slot3Cell1"
  qq=144
  rr=38
  exit rules, execute Outgoing Action
  Label "slot4Cell1"
  qq=144
  rr=44
  exit rules, execute Outgoing Action
  Label "remixRow2"
  if oo==148 then Goto "slot1Cell2"
  if oo==149 then Goto "slot2Cell2"
  if oo==150 then Goto "slot3Cell2"
  if oo==151 then Goto "slot4Cell2"
  Label "slot1Cell2"
  qq=144
  rr=27
  exit rules, execute Outgoing Action
  Label "slot2Cell2"
  qq=144
  rr=33
  exit rules, execute Outgoing Action
  Label "slot3Cell2"
  qq=144
  rr=39
  exit rules, execute Outgoing Action
  Label "slot4Cell2"
  qq=144
  rr=45
  exit rules, execute Outgoing Action
  Label "remixRow3"
  if oo==148 then Goto "slot1Cell3"
  if oo==149 then Goto "slot2Cell3"
  if oo==150 then Goto "slot3Cell3"
  if oo==151 then Goto "slot4Cell3"
  exit rules, skip Outgoing Action
  Label "slot1Cell3"
  qq=144
  rr=28
  exit rules, execute Outgoing Action
  Label "slot2Cell3"
  qq=144
  rr=34
  exit rules, execute Outgoing Action
  Label "slot3Cell3"
  qq=144
  rr=40
  exit rules, execute Outgoing Action
  Label "slot4Cell3"
  qq=144
  rr=46
  exit rules, execute Outgoing Action
  Label "remixRow4"
  if oo==148 then Goto "slot1Cell4"
  if oo==149 then Goto "slot2Cell4"
  if oo==150 then Goto "slot3Cell4"
  if oo==151 then Goto "slot4Cell4"
  exit rules, skip Outgoing Action
  Label "slot1Cell4"
  qq=144
  rr=29
  exit rules, execute Outgoing Action
  Label "slot2Cell4"
  qq=144
  rr=35
  exit rules, execute Outgoing Action
  Label "slot3Cell4"
  qq=144
  rr=41
  exit rules, execute Outgoing Action
  Label "slot4Cell4"
  qq=144
  rr=47
  exit rules, execute Outgoing Action
  Label "pageSelector"
  if oo==148 then Goto "page1Selector"
  if oo==149 then Goto "page2Selector"
  if oo==150 then Goto "page3Selector"
  if oo==151 then Goto "page4Selector"
  exit rules, skip Outgoing Action
  Label "page1Selector"
  qq=144
  rr=30
  exit rules, execute Outgoing Action
  Label "page2Selector"
  qq=144
  rr=36
  exit rules, execute Outgoing Action
  Label "page3Selector"
  qq=144
  rr=42
  exit rules, execute Outgoing Action
  Label "page4Selector"
  qq=144
  rr=48
  exit rules, execute Outgoing Action
  Label "RemixDeckOffControls"
  if he!=0 then exit rules, skip Outgoing Action
  if oo<132 then exit rules, skip Outgoing Action
  if vv==53 then Goto "remixRow1Off"
  if vv==54 then Goto "remixRow2Off"
  if vv==55 then Goto "remixRow3Off"
  if vv==56 then Goto "remixRow4Off"
  if vv==57 then Goto "pageSelectorOff"
  if vv>57 then exit rules, skip Outgoing Action
  Label "remixRow1Off"
  if oo==132 then Goto "slot1Cell1Off"
  if oo==133 then Goto "slot2Cell1Off"
  if oo==134 then Goto "slot3Cell1Off"
  if oo==135 then Goto "slot4Cell1Off"
  exit rules, skip Outgoing Action
  Label "slot1Cell1Off"
  qq=128
  rr=26
  exit rules, execute Outgoing Action
  Label "slot2Cell1Off"
  qq=128
  rr=32
  exit rules, execute Outgoing Action
  Label "slot3Cell1Off"
  qq=128
  rr=38
  exit rules, execute Outgoing Action
  Label "slot4Cell1Off"
  qq=128
  rr=44
  exit rules, execute Outgoing Action
  Label "remixRow2Off"
  if oo==132 then Goto "slot1Cell2Off"
  if oo==133 then Goto "slot2Cell2Off"
  if oo==134 then Goto "slot3Cell2Off"
  if oo==135 then Goto "slot4Cell2Off"
  exit rules, skip Outgoing Action
  Label "slot1Cell2Off"
  qq=128
  rr=27
  exit rules, execute Outgoing Action
  Label "slot2Cell2Off"
  qq=128
  rr=33
  exit rules, execute Outgoing Action
  Label "slot3Cell2Off"
  qq=128
  rr=39
  exit rules, execute Outgoing Action
  Label "slot4Cell2Off"
  qq=128
  rr=45
  exit rules, execute Outgoing Action
  Label "remixRow3Off"
  if oo==132 then Goto "slot1Cell3Off"
  if oo==133 then Goto "slot2Cell3Off"
  if oo==134 then Goto "slot3Cell3Off"
  if oo==135 then Goto "slot4Cell3Off"
  exit rules, skip Outgoing Action
  Label "slot1Cell3Off"
  qq=128
  rr=28
  exit rules, execute Outgoing Action
  Label "slot2Cell3Off"
  qq=128
  rr=34
  exit rules, execute Outgoing Action
  Label "slot3Cell3Off"
  qq=128
  rr=40
  exit rules, execute Outgoing Action
  Label "slot4Cell3Off"
  qq=128
  rr=46
  exit rules, execute Outgoing Action
  Label "remixRow4Off"
  if oo==132 then Goto "slot1Cell4Off"
  if oo==133 then Goto "slot2Cell4Off"
  if oo==134 then Goto "slot3Cell4Off"
  if oo==135 then Goto "slot4Cell4Off"
  exit rules, skip Outgoing Action
  Label "slot1Cell4Off"
  qq=128
  rr=29
  exit rules, execute Outgoing Action
  Label "slot2Cell4Off"
  qq=128
  rr=35
  exit rules, execute Outgoing Action
  Label "slot3Cell4Off"
  qq=128
  rr=41
  exit rules, execute Outgoing Action
  Label "slot4Cell4Off"
  qq=128
  rr=47
  exit rules, execute Outgoing Action
  Label "pageSelectorOff"
  exit rules, execute Outgoing Action
  Label "StopRows"
  qq=oo
  if oo==148 then Goto "stopSlot1"
  if oo==149 then Goto "stopSlot2"
  if oo==150 then Goto "stopSlot3"
  if oo==151 then Goto "stopSlot4"
  exit rules, skip Outgoing Action
  Label "stopSlot1"
  qq=144
  rr=31
  exit rules, execute Outgoing Action
  Label "stopSlot2"
  qq=144
  rr=37
  exit rules, execute Outgoing Action
  Label "stopSlot3"
  qq=144
  rr=43
  exit rules, execute Outgoing Action
  Label "stopSlot4"
  qq=144
  rr=49
  exit rules, execute Outgoing Action
  Label "StopAllPlay"
  if oo==128 then exit rules, skip Outgoing Action
  oo=oo
  qq=178
  rr=14
  ss=pp
  exit rules, execute Outgoing Action
  Label "SequencerSync"
  qq=178
  rr=15
  ss=pp
  exit rules, execute Outgoing Action
  Label "Keylock"
  if oo==144 then Goto "keySlot1"
  if oo==145 then Goto "keySlot2"
  if oo==146 then Goto "keySlot3"
  if oo==147 then Goto "keySlot4"
  if oo<=135 then exit rules, skip Outgoing Action
  if oo>147 then Goto "FXon"
  exit rules, skip Outgoing Action
  Label "keySlot1"
  qq=178
  rr=102
  ss=pp
  exit rules, execute Outgoing Action
  Label "keySlot2"
  qq=178
  rr=103
  ss=pp
  exit rules, execute Outgoing Action
  Label "keySlot3"
  qq=178
  rr=104
  ss=pp
  exit rules, execute Outgoing Action
  Label "keySlot4"
  qq=178
  rr=105
  ss=pp
  exit rules, execute Outgoing Action
  Label "Monitor"
  if oo>147 then Goto "FX3&4Buttons"
  if oo==144 then Goto "monSlot1"
  if oo==145 then Goto "monSlot2"
  if oo==146 then Goto "monSlot3"
  if oo==147 then Goto "monSlot4"
  if oo<=131 then exit rules, skip Outgoing Action
  exit rules, skip Outgoing Action
  Label "monSlot1"
  qq=178
  rr=110
  ss=pp
  exit rules, execute Outgoing Action
  Label "monSlot2"
  qq=178
  rr=111
  ss=pp
  exit rules, execute Outgoing Action
  Label "monSlot3"
  qq=178
  rr=112
  ss=pp
  exit rules, execute Outgoing Action
  Label "monSlot4"
  qq=178
  rr=113
  ss=pp
  exit rules, execute Outgoing Action
  Label "Punch"
  if oo==144 then Goto "punchSlot1"
  if oo==145 then Goto "punchSlot2"
  if oo==146 then Goto "punchSlot3"
  if oo==147 then Goto "punchSlot4"
  if oo==148 then Goto "FX4Button1"
  if oo==149 then Goto "FX4Button2"
  if oo==150 then Goto "FX4Button3"
  if oo==151 then Goto "SpareButton2"
  if oo<=131 then exit rules, skip Outgoing Action
  exit rules, skip Outgoing Action
  Label "punchSlot1"
  qq=178
  rr=114
  ss=pp
  exit rules, execute Outgoing Action
  Label "punchSlot2"
  qq=178
  rr=115
  ss=pp
  exit rules, execute Outgoing Action
  Label "punchSlot3"
  qq=178
  rr=116
  ss=pp
  exit rules, execute Outgoing Action
  Label "punchSlot4"
  qq=178
  rr=117
  ss=pp
  exit rules, execute Outgoing Action
  Label "FXon"
  if oo==148 then Goto "FX1on"
  if oo==149 then Goto "FX2on"
  if oo==150 then Goto "FX3on"
  if oo==151 then Goto "FX4on"
  exit rules, skip Outgoing Action
  Label "FX1on"
  qq=144
  rr=69
  exit rules, execute Outgoing Action
  Label "FX2on"
  qq=144
  rr=72
  exit rules, execute Outgoing Action
  Label "FX3on"
  qq=144
  rr=75
  exit rules, execute Outgoing Action
  Label "FX4on"
  qq=144
  rr=78
  exit rules, execute Outgoing Action
  Label "FXoff"
  exit rules, skip Outgoing Action
  if oo==132 then Goto "FX1off"
  if oo==133 then Goto "FX2off"
  if oo==134 then Goto "FX3off"
  if oo==135 then Goto "FX4off"
  Label "FX1off"
  qq=144
  rr=69
  exit rules, execute Outgoing Action
  Label "FX2off"
  qq=144
  rr=72
  exit rules, execute Outgoing Action
  Label "FX3off"
  qq=144
  rr=75
  exit rules, execute Outgoing Action
  Label "FX4off"
  qq=144
  rr=78
  exit rules, execute Outgoing Action
  Label "LoadMod"
  qq=oo
  rr=51
  ss=pp
  exit rules, execute Outgoing Action
  Label "CaptureMod"
  qq=oo
  rr=50
  ss=pp
  exit rules, execute Outgoing Action
  Label "ReverseMod"
  qq=oo
  rr=53
  ss=pp
  exit rules, execute Outgoing Action
  Label "DeleteMod"
  qq=oo
  rr=52
  ss=pp
  exit rules, execute Outgoing Action
  Label "DeckA"
  if he!=0 then exit rules, skip Outgoing Action
  qq=178
  rr=119
  ss=pp
  exit rules, execute Outgoing Action
  Label "DeckB"
  if he!=0 then exit rules, skip Outgoing Action
  qq=178
  rr=120
  ss=pp
  exit rules, execute Outgoing Action
  Label "DeckC"
  if he!=0 then exit rules, skip Outgoing Action
  qq=178
  rr=121
  ss=pp
  exit rules, execute Outgoing Action
  Label "LoopRec"
  if he!=0 then exit rules, skip Outgoing Action
  qq=178
  rr=122
  ss=pp
  exit rules, execute Outgoing Action
  Label "FX3&4Buttons"
  if vv<49 then Goto "FX4Buttons"
  if oo==148 then Goto "FX3Button1"
  if oo==149 then Goto "FX3Button2"
  if oo==150 then Goto "FX3Button3"
  if oo==151 then Goto "SpareButton1"
  exit rules, skip Outgoing Action
  Label "FX3Button1"
  qq=178
  rr=40
  ss=pp
  exit rules, execute Outgoing Action
  Label "FX3Button2"
  qq=178
  rr=41
  ss=pp
  exit rules, execute Outgoing Action
  Label "FX3Button3"
  qq=178
  rr=42
  ss=pp
  exit rules, execute Outgoing Action
  Label "SpareButton1"
  qq=178
  rr=43
  exit rules, execute Outgoing Action
  Label "FX4Button1"
  qq=178
  rr=44
  ss=pp
  exit rules, execute Outgoing Action
  Label "FX4Button2"
  qq=178
  rr=45
  ss=pp
  exit rules, execute Outgoing Action
  Label "FX4Button3"
  qq=178
  rr=46
  ss=pp
  exit rules, execute Outgoing Action
  Label "SpareButton2"
  qq=178
  rr=47
  exit rules, execute Outgoing Action
  Label "Browse"
  if oo!=144 then exit rules, skip Outgoing Action
  if vv==94 then Goto "Up"
  if vv==95 then Goto "Down"
  if vv==96 then Goto "Expand"
  if vv==97 then Goto "Collapse"
  Label "Up"
  qq=178
  rr=50
  exit rules, execute Outgoing Action
  Label "Down"
  qq=178
  rr=51
  exit rules, execute Outgoing Action
  Label "Expand"
  qq=178
  rr=52
  exit rules, execute Outgoing Action
  Label "Collapse"
  qq=178
  rr=53
  exit rules, execute Outgoing Action
  Label "LoopRecOn"
  if oo!=144 then exit rules, skip Outgoing Action
  qq=178
  rr=54
  exit rules, execute Outgoing Action
  Label "LoadSetDeckD"
  if oo!=144 then exit rules, skip Outgoing Action
  qq=178
  rr=55
  exit rules, execute Outgoing Action
  Label "LoopRecSize"
  if oo!=144 then exit rules, skip Outgoing Action
  qq=178
  if vv==58 then Goto "size4"
  if vv==59 then Goto "size8"
  if vv==60 then Goto "size16"
  if vv==61 then Goto "size32"
  exit rules, skip Outgoing Action
  Label "size4"
  rr=56
  exit rules, execute Outgoing Action
  Label "size8"
  rr=57
  exit rules, execute Outgoing Action
  Label "size16"
  rr=58
  exit rules, execute Outgoing Action
  Label "size32"
  rr=59
  exit rules, execute Outgoing Action
Outgoing: MIDI qq rr ss
Offending code snippet from the bmtp in text editor:

Code: Select all

14ss=ppexecutelabel000DSequencerSyncqq=178rr=15ss=ppexecutelabel0007Keylockif(oo==144)goto0008keySlot1if(oo==145)goto0008keySlot2if(oo==146)goto0008keySlot3if(oo==147)goto0008keySlot4if(oo<=135)noexecuteif(oo>147)goto0004FXonnoexecutelabel0008keySlot1qq=178rr=102ss=ppexecutelabel0007MonitorStMa00000222if(oo>=176)noexecutess=127if(vv==49)goto0007Monitorif(vv==48)goto0005Punchif(vv==50)goto0007Keylockif(vv==52)goto0006Filterif(vv==53)goto0004Row1if(vv==54)goto0004Row2if(vv==

nonspacial33

2015-06-24 02:39:33

I've now got rid of the StMa00000222 from the file but it still won't load beyond keyslot1 and the stma is here:

Code: Select all

goto0005size4if(vv==59)goto0005size8if(vv==60)goto0006size16if(vv==61)goto0006size32noexecutelabel0005size4rr=56executelabel0005size8rr=57executelabel0006size16rr=58executelabel0006size32rr=59executeStMa00000325if(oo>=176)noexecutess=127if(vv==49)goto0007Monitorif(vv==48)goto0005Punchif(vv==50)goto0007Keylockif(vv==52)goto0006Filterif(vv==53)goto0004Row1if(vv==54)goto0004Row2if(vv==55)goto0004Row3if(vv==56)goto0004Row4if(vv==57)goto0004Row5if(vv<=61)goto000BLoopRecSizeif(vv<=65)
here's the current bmtp too
Attachments
Traktor step sequencer build Multi-Patterns-House-Fix2.bmtp
(389.14 KiB) Downloaded 198 times

florian

2015-06-24 12:09:31

Nonspacial, thanks for the detailed info. I was able to find the problem (somewhere deep in old code, rules were limited to 8000 characters when loaded). So, the fixed build 757 has flown on my server -- you can just re-download and reinstall using yesterday's link and it should now load all 800+ rules without problems. Just make sure that you're running version 1.8 build 757.
Thanks,
Florian

nonspacial33

2015-06-24 13:02:16

Awesome Florian, glad i could help

nonspacial33

2015-06-24 13:23:31

So I've just tested it and the rules now save and open again, however it is still producing a long error for that translator "Corrupt Options":

Error(015): Error while loading preset 'Buttons (always active)', Translator '# 1: Non-Sequencer Midi Messages to Traktor':
corrupt options: 0325if(oo>=176)noexecutess=127if(vv==49)goto0007Monitorif(vv==48)goto0005Punchif(vv==50)goto0007Keylockif(vv==52)goto0006Filterif(vv==53)goto0004Row1if(vv==54)goto0004Row2if(vv==55)goto0004Row3if(vv==56)goto0004Row4if(vv==57)goto0004Row5if(vv<=61)goto000BLoopRecSizeif(vv<=65)noexecuteif(vv==81)goto000BStopAllPlayif(vv==82)goto0007LoadModif(vv==83)goto000ACaptureModif(vv==84)goto000AReverseModif(vv==85)goto0009DeleteModif(vv==86)goto000CLoadSetDeckDif(vv==87)goto0005DeckAif(vv==88)goto0005DeckBif(vv==89)goto0005DeckCif(vv==90)goto0007LoopRecif(vv==92)goto000DSequencerSyncif(vv==93)goto0009LoopRecOnif(vv<=97)goto0006Browseif(vv==98)noexecuteif(vv==99)goto0009LoopRecOnif(oo<144)noexecutenoexecutelabel0006Filterif(oo==144)goto0008Button13if(oo==145)goto0008Button14if(oo==146)goto0008Button15if(oo==147)goto0008Button16noexecutelabel0008Button13qq=178rr=24if(hj==0)goto0004on13if(hj==1)goto0005off13label0004on13hj=1executelabel0005off13hj=0executelabel0008Button14qq=178rr=25if(hk==0)goto0004on14if(hk==1)goto0005off14label0004on10hk=1executelabel0005off14hk=0executelabel0008Button15qq=178rr=26if(hl==0)goto0004on15if(hl==1)goto0005off15label0004on15hl=1executelabel0005off15hl=0executelabel0008Button16qq=178rr=27if(hm==0)goto0004on16if(hm==1)goto0005off16label0004on16hm=1executelabel0005off16hm=0executelabel0004Row1if(oo==144)goto0007Filter1if(oo==145)goto0007Filter2if(oo==146)goto0007Filter3if(oo==147)goto0007Filter4if(oo<=135)goto0014RemixDeckOffControlsif(oo>147)goto000FrightSideNormalnoexecutelabel0007Filter1qq=178rr=106if(ha==0)goto0003on1if(ha==1)goto0004off1label0003on1ha=1executelabel0004off1ha=0ss=0executelabel0007Filter2qq=178rr=107if(hb==0)goto0003on2if(hb==1)goto0004off2label0003on2hb=1executelabel0004off2hb=0ss=0executelabel0007Filter3qq=178rr=108if(hc==0)goto0003on3if(hc==1)goto0004off3label0003on3hc=1executelabel0004off3hc=0ss=0executelabel0007Filter4qq=178rr=109if(hd==0)goto0003on4if(hd==1)goto0004off4label0003on4hd=1executelabel0004off4hd=0ss=0executelabel0004Row2if(oo==144)goto0007Button5if(oo==145)goto0007Button6if(oo==146)goto0007Button7if(oo==147)goto0007Button8if(oo<=135)goto0014RemixDeckOffControlsif(oo>147)goto000FrightSideNormalnoexecutelabel0007Button5if(he==1)goto0006Reset1if(he!=1)he=1noexecutelabel0006Reset1if(he==1)he=0noexecutelabel0007Button6if(he==2)goto0006Reset2if(he!=2)he=2noexecutelabel0006Reset2if(he==2)he=0noexecutelabel0007Button7if(he==3)goto0006Reset3if(he!=3)he=3noexecutelabel0006Reset3if(he==3)he=0noexecutelabel0007Button8if(he==4)goto0006Reset4if(he!=4)he=4noexecutelabel0006Reset4if(he==4)he=0noexecutelabel0004Row3if(oo==144)goto0007Button9if(oo==145)goto0008Button10if(oo==146)goto0008Button11if(oo==147)goto0008Button12if(oo<=135)goto0014RemixDeckOffControlsif(oo>147)goto000FrightSideNormalnoexecutelabel0007Button9qq=178rr=20if(hf==0)goto0003on9if(hf==1)goto0004off9label0003on9hf=1executelabel0004off9hf=0executelabel0008Button10qq=178rr=21if(hg==0)goto0004on10if(hg==1)goto0005off10label0004on10hg=1executelabel0005off10hg=0executelabel0008Button11qq=178rr=22if(hh==0)goto0004on11if(hh==1)goto0005off11label0004on11hh=1executelabel0005off11hh=0executelabel0008Button12qq=178rr=23if(hi==0)goto0004on12if(hi==1)goto0005off12label0004on12hi=1executelabel0005off12hi=0executelabel0004Row4if(oo==144)goto0009FxUnit1Onif(oo==145)goto000EFxUnit1Button1if(oo==146)goto000EFxUnit1Button2if(oo==147)goto000EFxUnit1Button3if(oo<=135)goto0014RemixDeckOffControlsif(oo>147)goto000FrightSideNormalnoexecutelabel0009FxUnit1Onqq=178rr=32ss=ppexecutelabel000EFxUnit1Button1qq=178rr=33ss=ppexecutelabel000EFxUnit1Button2qq=178rr=34ss=ppexecutelabel000EFxUnit1Button3qq=178rr=35ss=ppexecutelabel0004row5if(oo==144)goto0009FxUnit2Onif(oo==145)goto000EFxUnit2Button1if(oo==146)goto000EFxUnit2Button2if(oo==147)goto000EFxUnit2Button3if(oo<=135)goto0014RemixDeckOffControlsif(oo>147)goto000FrightSideNormalnoexecutelabel0009FxUnit2Onqq=178rr=36ss=ppexecutelabel000EFxUnit2Button1qq=178rr=37ss=ppexecutelabel000EFxUnit2Button2qq=178rr=38ss=ppexecutelabel000EFxUnit2Button3qq=178rr=39ss=ppexecutelabel000FrightSideNormalif(he!=0)noexecuteif(oo>151)noexecuteif(oo<=135)goto0014RemixDeckOffControlsif(vv==52)goto0008StopRowsif(vv==53)goto0009remixRow1if(vv==54)goto0009remixRow2if(vv==55)goto0009remixRow3if(vv==56)goto0009remixRow4if(vv==57)goto000CpageSelectorif(vv>57)noexecutelabel0009remixRow1if(oo==148)goto000Aslot1Cell1if(oo==149)goto000Aslot2Cell1if(oo==150)goto000Aslot3Cell1if(oo==151)goto000Aslot4Cell1label000Aslot1Cell1qq=144rr=26executelabel000Aslot2Cell1qq=144rr=32executelabel000Aslot3Cell1qq=144rr=38executelabel000Aslot4Cell1qq=144rr=44executelabel0009remixRow2if(oo==148)goto000Aslot1Cell2if(oo==149)goto000Aslot2Cell2if(oo==150)goto000Aslot3Cell2if(oo==151)goto000Aslot4Cell2label000Aslot1Cell2qq=144rr=27executelabel000Aslot2Cell2qq=144rr=33executelabel000Aslot3Cell2qq=144rr=39executelabel000Aslot4Cell2qq=144rr=45executelabel0009remixRow3if(oo==148)goto000Aslot1Cell3if(oo==149)goto000Aslot2Cell3if(oo==150)goto000Aslot3Cell3if(oo==151)goto000Aslot4Cell3noexecutelabel000Aslot1Cell3qq=144rr=28executelabel000Aslot2Cell3qq=144rr=34executelabel000Aslot3Cell3qq=144rr=40executelabel000Aslot4Cell3qq=144rr=46executelabel0009remixRow4if(oo==148)goto000Aslot1Cell4if(oo==149)goto000Aslot2Cell4if(oo==150)goto000Aslot3Cell4if(oo==151)goto000Aslot4Cell4noexecutelabel000Aslot1Cell4qq=144rr=29executelabel000Aslot2Cell4qq=144rr=35executelabel000Aslot3Cell4qq=144rr=41executelabel000Aslot4Cell4qq=144rr=47executelabel000CpageSelectorif(oo==148)goto000Dpage1Selectorif(oo==149)goto000Dpage2Selectorif(oo==150)goto000Dpage3Selectorif(oo==151)goto000Dpage4Selectornoexecutelabel000Dpage1Selectorqq=144rr=30executelabel000Dpage2Selectorqq=144rr=36executelabel000Dpage3Selectorqq=144rr=42executelabel000Dpage4Selectorqq=144rr=48executelabel0014RemixDeckOffControlsif(he!=0)noexecuteif(oo<132)noexecuteif(vv==53)goto000CremixRow1Offif(vv==54)goto000CremixRow2Offif(vv==55)goto000CremixRow3Offif(vv==56)goto000CremixRow4Offif(vv==57)goto000FpageSelectorOffif(vv>57)noexecutelabel000CremixRow1Offif(oo==132)goto000Dslot1Cell1Offif(oo==133)goto000Dslot2Cell1Offif(oo==134)goto000Dslot3Cell1Offif(oo==135)goto000Dslot4Cell1Offnoexecutelabel000Dslot1Cell1Offqq=128rr=26executelabel000Dslot2Cell1Offqq=128rr=32executelabel000Dslot3Cell1Offqq=128rr=38executelabel000Dslot4Cell1Offqq=128rr=44executelabel000CremixRow2Offif(oo==132)goto000Dslot1Cell2Offif(oo==133)goto000Dslot2Cell2Offif(oo==134)goto000Dslot3Cell2Offif(oo==135)goto000Dslot4Cell2Offnoexecutelabel000Dslot1Cell2Offqq=128rr=27executelabel000Dslot2Cell2Offqq=128rr=33executelabel000Dslot3Cell2Offqq=128rr=39executelabel000Dslot4Cell2Offqq=128rr=45executelabel000CremixRow3Offif(oo==132)goto000Dslot1Cell3Offif(oo==133)goto000Dslot2Cell3Offif(oo==134)goto000Dslot3Cell3Offif(oo==135)goto000Dslot4Cell3Offnoexecutelabel000Dslot1Cell3Offqq=128rr=28executelabel000Dslot2Cell3Offqq=128rr=34executelabel000Dslot3Cell3Offqq=128rr=40executelabel000Dslot4Cell3Offqq=128rr=46executelabel000CremixRow4Offif(oo==132)goto000Dslot1Cell4Offif(oo==133)goto000Dslot2Cell4Offif(oo==134)goto000Dslot3Cell4Offif(oo==135)goto000Dslot4Cell4Offnoexecutelabel000Dslot1Cell4Offqq=128rr=29executelabel000Dslot2Cell4Offqq=128rr=35executelabel000Dslot3Cell4Offqq=128rr=41executelabel000Dslot4Cell4Offqq=128rr=47executelabel000FpageSelectorOffexecutelabel0008StopRowsqq=ooif(oo==148)goto0009stopSlot1if(oo==149)goto0009stopSlot2if(oo==150)goto0009stopSlot3if(oo==151)goto0009stopSlot4noexecutelabel0009stopSlot1qq=144rr=31executelabel0009stopSlot2qq=144rr=37executelabel0009stopSlot3qq=144rr=43executelabel0009stopSlot4qq=144rr=49executelabel000BStopAllPlayif(oo==128)noexecuteoo=ooqq=178rr=14ss=ppexecutelabel000DSequencerSyncqq=178rr=15ss=ppexecutelabel0007Keylockif(oo==144)goto0008keySlot1if(oo==145)goto0008keySlot2if(oo==146)goto0008keySlot3if(oo==147)goto0008keySlot4if(oo<=135)noexecuteif(oo>147)goto0004FXonnoexecutelabel0008keySlot1qq=178rr=102ss=ppexecutelabel
Attachments
Traktor step sequencer build Multi-Patterns-House-Fix2.bmtp
Current state for Florian
(389.14 KiB) Downloaded 197 times

nonspacial33

2015-06-24 13:38:25

Florian this is really strange and infact appears to be a bit of a paradox.

1. The Rules are there inside MT.
2. The Rules re-open inside MT (closed fully or just re-opened from the menu)
3. The error shows a break in the rules here: label0008keySlot1qq=178rr=102ss=ppexecutelabel
4. The bmtp file if i search that string also shows NO RULES BEYOND THE ABOVE executelabel here:

ss=ppexecutelabel0007Keylockif(oo==144)goto0008keySlot1if(oo==145)goto0008keySlot2if(oo==146)goto0008keySlot3if(oo==147)goto0008keySlot4if(oo<=135)noexecuteif(oo>147)goto0004FXonnoexecutelabel0008keySlot1qq=178rr=102ss=ppexecutelabel
Name2=Step Sequencer: CC's on Ch3 Midi Messages from Traktor 4x4 Left hand grid
Incoming2=MID2MIDA00010021Bome MIDI Translator 1 Virtual Inb2vvpp

What the hell is goin on here, the rules don't exist in the file the file creates an error yet somehow they are infact in the translator inside MT..?

enjoy dude, enjoy!

Robbie

nonspacial33

2015-06-24 13:39:16

I should add it works perfectly well in traktor lol...

florian

2015-06-24 14:33:46

the project file you have saved after the initial error occurred will have only the truncated 500+ rules, causing the long error. Open up the original project file and it should work. The translator list tells you how many rules there are in a translator. Make sure it's 800+ rules.
Thanks,
Florian

nonspacial33

2015-06-24 16:00:54

Ok Cool, sorted it, had to find another copy on my laptop and then paste some stuff across that i had edited and saved over the original last night; all seems to be working again with no errors so here's a beta of the House Presets version:

HOUSE BEAT SEQUENCER PATTERN BETA

All that is different from the single pattern version:

2nd row of knobs now switch pattern, there are 12 per knob evenly spaced.

Knob 1: Kick Patterns
Knob 2: Snare Patterns
Knob 3: Hats Patterns
Knob 4: Percussion Patterns

The 1st pattern on each knob is blank, so can work as an off or as a pattern builder, everytime you change pattern with the knob this is reset.

The 2nd Pattern is the most familiar house beat pattern, from there it becomes more complexed the further you turn the knob.

Patterns can be mixed within the bar by turning the knob, thus creating you're own inflictions/flare

All patterns can be seen and edited in EDIT MODE once selected but cannot be selected from within EDIT MODE
Attachments
Traktor step sequencer build Multi-Patterns-House.bmtp
BETA House Patterns Sequencer
(381.27 KiB) Downloaded 203 times

nonspacial33

2015-07-02 00:49:03

To keep you updated with this thread/mappping, i've now made a complete overhaul of the whole project, re-organised the way in which the rules are handled and begun expanding the main buttons section into 2 halves. When it's done it will be most epic.

So to give a brief overview of where it's going:

Track Selections are master page switches 1-4 are the left side and 5-8 are the right. MASTER is on it's own disabling the other pages and will contain basic Deck Controls like play, cue, EQ's, hotcues etc for all decks.

So pages are as follows:
1-4
Remix Deck C Triggers, Remix Deck D Controls (incl. Sequencers), Freeze Mode Deck A, FX Buttons
5-8
Remix Deck D Triggers, Remix Deck C Controls (incl. Sequencers), Freeze Mode Deck B, FX Buttons

NB: 1 page from each of these is visable all the time, the selectors are independent.

These are independent of the Knob Modes except for the MASTER Button which will change the whole APC

There will be 8 step sequencer Patterns available for 4 for each Deck C and D.

As soon as i have everything mapped i'll up the beta

Peace

Robbie

nonspacial33

2016-01-27 18:53:24

Hi again, it's taking longer than i had anticipated for my current update to the Traktor Step Sequencer, a few new features and some heavy Maths later it's still not bug free for you to receive a copy. lol.

Anyway i have hit a snag and need to know if i'm going mad or not (...Florian):

Spent a couple of days converting from the old way of dealing with variable midi messages to the new Note On etc drop downs. I figured it makes it cleaner in the long run cos i don't have to filter for note off's or CC's within every translator and so can be read more easily. I of course had to convert 144 to 0 and 151 to 7 etc for all my translators, but i've noticed something:

If Traktor sends a Note On Value of 00 then nothing is translated... I understand this is a psuedo Note Off message on some controllers but my APC will turn off the light of a button with this value being sent to it as a Note On message. So instead of me creating seperate controls for Remix Deck Cell Not Loaded State and Remix Deck Slot State "anything else", where i'd have to send a Note Off 127 for the 1st and a Note On for the 2nd value range 01-05

Example here:

296: MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 2F 00
297: MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 1D 00
298: MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 23 00

None of these are translated although they are received from Traktor.

As a result the pages only update cells/pads if there is a sample loaded

However this one is:

205: MIDI IN [Bome MIDI Translator 1 Virtual In]: 90 2F 01
206: IN 1.14 Note On set 'oo' to 0 (channel 1) and 'vv' to note=47 (0x2F) and 'pp' to velocity=1 (0x01)
207: RULE 1.14:21 condition satisfied: if vv==47 then Goto "Button16"
208: RULE 1.14:371 condition satisfied: if oo==0 then Goto "Right16"
209: RULE 1.14:381 condition satisfied: if gz==0 then Goto "RemixDPad16"
210: RULE 1.14:384 assignment: (oo=7) = 7
211: RULE 1.14:385 assignment: (vv=56) = 56
212: RULE 1.14 exit rules, execute Outgoing Action
213: MIDI OUT [Akai APC40]: 97 38 01
214: OUT 1.14 Note On on channel 'oo'=7 (channel /8) with note:vv=56 (0x38) and velocity:pp=1 (0x01)

NB Added a / here as it was showing up as 8) ^

Only difference 00 or 01 as far as the translator should be concerned.

Hope this isn't me and i'm not mental

Peace

Robbie

florian

2016-01-28 12:41:29

Hi,

a Note On message with velocity=0 is a Note Off, as you know. This is not just a proprietary idea, it's defined in the MIDI standard: sending a note with 0 velocity is equivalent to sending a Note off message with 64 Note-Off-velocity. It was introduced to make better use of the limited MIDI 5-pin DIN bandwidth when using Running Status.

Anyway, MIDI Translator triggers a Note Off when encountering a Note On message with 0 velocity. Like that, you only need one translator to catch all Note Off's, and don't need additional logic for catching real Note On's.

So, in your preset, you'll need to add a translator triggering on Note Off (with "any" note-Off-velocity). It will also make your preset more robust in case Traktor changes its logic to use the other "correct" Note Off message.

Hope that makes sense!
Florian

nonspacial33

2016-01-28 14:34:41

Cool thanks Florian. That's what I suspected. So to clarify correctly if I am sending 90 35 00 from traktor it will be picked up by a translator for note off channel 1 note 53 velocity pp and can be then treated with rules like normal.

If I then send out note off channel oo note vv velocity pp will it only send 80 messages with 7f or will it translate to 90 .. 00. This will matter as I have to change channels and notes in my logic so I need to know if I need 00 or 7f as my velocity.

Obviously I can do all this kn decimal but it will be more efficient if it's exclusive by default.

That's again

Robbie

florian

2016-01-28 15:22:48

When using the new "simple MIDI" in MT, you cannot send Note On with 0 velocity.
When sending Note Off, you can pretty much ignore the velocity, as only veeery few MIDI devices honor the NoteOffVelocity at all.
MT sends Note Off messages (i.e. 80 .. ..) when using the Note Off selector. It never sends "90 .. 00" as a Note Off, as it is not sensible with USB controllers anyway. The only way to enforce that is by using the Raw/SysEx message type. But your device should handle Note Off just the same (no matter which velocity).

Florian

nonspacial33

2016-01-28 15:34:36

That's what I thought, best to check though.

Thanks Florian.

Robbie.