midi to controle sequenced switch
As I was using Sequin and find in it a very nice and fluent for drum sequencing, I was asking myself how to make a patch for the APc 20 in order to control it.
I'm looking for starting point for that purpose, because I'm a beginner in patch making.
To made it step by step and have a better understanding on patching question, my first idea was to take a sequenced switch with 8 steps and use the first line of pads of the apc 20 to control it
so I would have note 53 ch1 => step 1 on/off then 53 ch2 => step 2 and so on
How can I do that?
I'm looking for starting point for that purpose, because I'm a beginner in patch making.
To made it step by step and have a better understanding on patching question, my first idea was to take a sequenced switch with 8 steps and use the first line of pads of the apc 20 to control it
so I would have note 53 ch1 => step 1 on/off then 53 ch2 => step 2 and so on
How can I do that?
the way i see you would use an array of size 8 contening the toggles info you wanna set.The sequenced switch module already expose it.
then the little "set array value" module let you set a value at a specified position.
the idea is you value will be set from the note no/off info, and the index will be determined by note number, or in your case channel number so need a midi input module.
first for conveniance we set it's filter to 'on off bend' values that are only needed it. you would probably arrange for incoming indexes to go from 0 to 7, matching array indexes you wanna set.
this is quite easy if your using midichanel will only substract one out of it and connect to index position. then the value will be set each time we get a on/off message, so 'set value' is controlled by 'receive' pulse led. then we know midi note on code is 144, so value will be set to 1 if received code is equal to 144.
not tested but this would finally look like this:

then the little "set array value" module let you set a value at a specified position.
the idea is you value will be set from the note no/off info, and the index will be determined by note number, or in your case channel number so need a midi input module.
first for conveniance we set it's filter to 'on off bend' values that are only needed it. you would probably arrange for incoming indexes to go from 0 to 7, matching array indexes you wanna set.
this is quite easy if your using midichanel will only substract one out of it and connect to index position. then the value will be set each time we get a on/off message, so 'set value' is controlled by 'receive' pulse led. then we know midi note on code is 144, so value will be set to 1 if received code is equal to 144.
not tested but this would finally look like this:

I just tested this out on my APC20, the Array SetVal will be held to 0 while the seq switch is fed back into it.
If you pump in a display/set array to the input you will see that while you hold down the buttons on the APC they will become active low (0) (Only while held and all of the entire column). Another thing difficult about using the APC20 is that there are only 8 columns by 5 rows for the clip/launch section, so a 16 sequencer would not do. At one time I was going to separate into 3 different sequencers where row 1+2 made up 16, row 3+4 made a different set, and so on (using Clipstop as the 5+6).
I will try and take some time and see if I can make this happen and help out some as well. A script would probably be best to handle the inputs but...Definitely more ideas the better
If you pump in a display/set array to the input you will see that while you hold down the buttons on the APC they will become active low (0) (Only while held and all of the entire column). Another thing difficult about using the APC20 is that there are only 8 columns by 5 rows for the clip/launch section, so a 16 sequencer would not do. At one time I was going to separate into 3 different sequencers where row 1+2 made up 16, row 3+4 made a different set, and so on (using Clipstop as the 5+6).
I will try and take some time and see if I can make this happen and help out some as well. A script would probably be best to handle the inputs but...Definitely more ideas the better
"Every act of creation is first an act of destruction." -Picasso
Thanks for your explanation, I understand better now, for the index it works but nothing happen with the value. The controler works that way, when you push the pad you have a note on and when you release it come a note off. I have had a look at a trace value connected to recieve and I have seen note on recieve a 1 and after a 0, note off recieve nothing. I was asking myself if it was a part of the problem?
Thanks Sephult I've just seen your answer, I was thinking about separating different sequencer in the way you give, or to a way to set the shift button or another one to create a sort of new page, I don't know if it's possible.... I'm not very familiare with scripting, but that's a good started point to have a look on it:)
I am already working a script, it's quite nested and probably not optimized. I am just trying to get a basic functional going that way maybe we can optimize and add other features together.
-s
-s
"Every act of creation is first an act of destruction." -Picasso
APC Sequencer Control
Here you go, there is a functional script which allows the top 2 rows to control a sequencer at 16 steps.
I am working to clean up the script, so hopefully understand better.
I will expand to 3 sequencer Array Outputs, then I will work on lighting up the APC20 to reflect the sequencer.
-s
Here you go, there is a functional script which allows the top 2 rows to control a sequencer at 16 steps.
I am working to clean up the script, so hopefully understand better.
I will expand to 3 sequencer Array Outputs, then I will work on lighting up the APC20 to reflect the sequencer.
-s
"Every act of creation is first an act of destruction." -Picasso
if the setvalue is forced to 0 it's probably need to add a 'pass if changed' betwen the setarrayvalue and the sequenced swich this should fix the problem
"Every act of creation is first an act of destruction." -Picasso
23fx23
The only problem with using modules however is the Note Number received.
You cannot address the individual rows, and would take a lot of additional modules.
Your method does work while the pad is pressed, when released it will set the value opposite, also being based on only channel the entire column defines.
Here is the APC layout:
53.Ch1, 53.Ch2.....
54.Ch1, 54.Ch2....
55.Ch1, 55.Ch2....
............................................and so on
-s
The only problem with using modules however is the Note Number received.
You cannot address the individual rows, and would take a lot of additional modules.
Your method does work while the pad is pressed, when released it will set the value opposite, also being based on only channel the entire column defines.
Here is the APC layout:
53.Ch1, 53.Ch2.....
54.Ch1, 54.Ch2....
55.Ch1, 55.Ch2....
............................................and so on
-s
"Every act of creation is first an act of destruction." -Picasso
APC_Sequencer_Control_x3_LED_Reset
Here is an updated, which includes LED Indicators, and a Reset.
Due to scripting issues I implemented the reset as an LFO to wipe the LED. This sometimes take a few seconds to sweep all and turn off.
This also triggers the script to reset the sequencers as well to match the APC20 reset state.
-s
Here is an updated, which includes LED Indicators, and a Reset.
Due to scripting issues I implemented the reset as an LFO to wipe the LED. This sometimes take a few seconds to sweep all and turn off.
This also triggers the script to reset the sequencers as well to match the APC20 reset state.
-s
"Every act of creation is first an act of destruction." -Picasso
APC_Sequencer_Control_x3_LED_Reset_MIDI_Bus_Corrected
Here is a 3 part MIDI where you can control the Note, Velocity, and Length. Note to get to trigger each step you need to AND the Next Step and Output of the Sequencer Switch or it just sees a continuous (1) value when multiple steps are next to eachother.
You will need to put your VST on another Rack and use existing MIDI Bus, this will prevent the APC20 notes from sounding the VST
A problem with using the scripts this way is the patch does not want to seem to Save and Recall the state of the Script. This might be a bug, I put a ticket in regarding.
I will also look for an alternate module way to control.
-s
Here is a 3 part MIDI where you can control the Note, Velocity, and Length. Note to get to trigger each step you need to AND the Next Step and Output of the Sequencer Switch or it just sees a continuous (1) value when multiple steps are next to eachother.
You will need to put your VST on another Rack and use existing MIDI Bus, this will prevent the APC20 notes from sounding the VST
A problem with using the scripts this way is the patch does not want to seem to Save and Recall the state of the Script. This might be a bug, I put a ticket in regarding.
I will also look for an alternate module way to control.
-s
"Every act of creation is first an act of destruction." -Picasso
ah ok i see. yes was to give a simple exemple with mudule but indeed current apc implementation make it tricky with modules, so yes script would be a more efficient solution you're right
Now I am running into the issue of saved presets, the array outputs from the script do not save with the preset.
This makes it impossible to save multiple presets. Ugggh :/
Script seems to work well for the purpose, just functionally this is a hindrance.
-s
This makes it impossible to save multiple presets. Ugggh :/
Script seems to work well for the purpose, just functionally this is a hindrance.
-s
"Every act of creation is first an act of destruction." -Picasso
if i remember correctly you need to specify output to be saved when you create your Tparameters.
via SetDontSave (Param: TParameter; val: boolean); // specifies if the parameter need to be save
by default not sure it's false for arrays. did you try?
via SetDontSave (Param: TParameter; val: boolean); // specifies if the parameter need to be save
by default not sure it's false for arrays. did you try?
Didn't know about that, I tried both cases and no they seem to just hold their value no matter what.
Thanks for the info though, I didnt know about SetDontSave
-s
Thanks for the info though, I didnt know about SetDontSave
-s
"Every act of creation is first an act of destruction." -Picasso
Thanks for the script, I was a bit lost with the way to use arrays, It's clearer now. For the saved presset, that's strange, when the audio engine is off you can recall the preset saved but as you said all is reset when turn on.
Yeah you are right akis, when the engine is off it allows the sequencers to recall but not pass the output of the script. This is why you see it look like it is working. When the audio engine is turned on the script runs and forces the array to the sequencers.
-s
-s
"Every act of creation is first an act of destruction." -Picasso
don't have all the clue but wouldn't a pass if change on output do the job? this would theorically let the seq swich update then feed back the script to update.
Can make a pass if change in script via setting lenght of output to 0 then bloc later back to full size but a module is often more conveniant.
Can make a pass if change in script via setting lenght of output to 0 then bloc later back to full size but a module is often more conveniant.
Yes you're right that works well with a pass if change module, thanks
Note there is LED Control, however a handshake for ableton mode must be made first. I am working this out at the moment. I also have a way I am recalling in which it forces the sequencers to update scripts to output the LED configurations. Just frustrated with this sysex, have to put in decimal to represent hexa, and having some handshake woes...lol
-s
-s
"Every act of creation is first an act of destruction." -Picasso
So it looks like the following. Either open ableton and close, or send this message via MIDI Ox or sysex capable. (Right now I am not sure if Sysex is working in HollyHock, just talked to nay and put in a support ticket)
0xF0, 0x47, 0x7F, 0x7B, 0x60, 0x00, 0x04, 0x41, 0x08, 0x02, 0x01, 0xF7
If this is sent it will put the LED in Ableton mode where the state is retained. Then the patch will light up the steps enabled/disabled.
-s
0xF0, 0x47, 0x7F, 0x7B, 0x60, 0x00, 0x04, 0x41, 0x08, 0x02, 0x01, 0xF7
If this is sent it will put the LED in Ableton mode where the state is retained. Then the patch will light up the steps enabled/disabled.
-s
"Every act of creation is first an act of destruction." -Picasso
The two ways doesn't seems to work. When sending the the message by MIDI OX, the apc doesn't work.
I thing I've read something about relationship beetween LED and note velocity, I'm looking to that way to see if there's some possibilities by this way
I thing I've read something about relationship beetween LED and note velocity, I'm looking to that way to see if there's some possibilities by this way
Yeah the velocity is what I am sending, I am able to get mine to respond by sending the Sysex via MIDI Ox or starting Ableton. When you first power on the APC...you are in power-up mode you can press the clip/launch and the LED will momentarily light this is how to tell the mode. Also the play button will be lit. Once responding in ableton mode, I believe the play button becomes un-lit and no matter what pad you hit it will not light the LED unless you have bidirectional communication. Make sure you have the APC input and output midi in Hollyhock and that they are working. Keep running into bugs here but hopefully work them out and maybe get more utilities for the APC20 in the near future. I'm scripted out at the moment but will try to continue on sometime soon when I can.
-s
p.s. The LED are by velocity (i do this by modifying [MIDI_Input.data2] in the script)
1=green
2=green flash
3=red
4=red flash
5=yellow
6=yellow flash
Clip Stop Row will only do Green and I believe the Navigation is the same
The problem is that it will only latch the state if you are in ableton mode and not startup mode.
-s
p.s. The LED are by velocity (i do this by modifying [MIDI_Input.data2] in the script)
1=green
2=green flash
3=red
4=red flash
5=yellow
6=yellow flash
Clip Stop Row will only do Green and I believe the Navigation is the same
The problem is that it will only latch the state if you are in ableton mode and not startup mode.
"Every act of creation is first an act of destruction." -Picasso
Thanks for you're help today it's working,
I'will try scriting for the LED.
I'will try scriting for the LED.
Well it's by no far perfect, and I blew-up the bug reports yesterday...but very much fun getting things at least some ideas rolling...and if not...I hope it helped having a starting point for you to script around things that might otherwise be difficult with modules.
So out of this I put at least two specific bug-reports that make this a show-stopper being a standalone working patch.
1. Scripts (maybe just arrays I am not sure) states are not being retained in preset. This makes it very difficult to pattern-ize the different sequences made. (Starting to find a workaround with external feedback....with problems). If this preset save worked could make things a lot more useful for the APC20!
2. Sysex does not seem to be working, so I could not send the Mode-change via Hollyhock.
Hopefully coming up these things might be addressed, and maybe we have some more APC20 users here that could benefit from....the APC is a pretty cool control surface.
-s
So out of this I put at least two specific bug-reports that make this a show-stopper being a standalone working patch.
1. Scripts (maybe just arrays I am not sure) states are not being retained in preset. This makes it very difficult to pattern-ize the different sequences made. (Starting to find a workaround with external feedback....with problems). If this preset save worked could make things a lot more useful for the APC20!
2. Sysex does not seem to be working, so I could not send the Mode-change via Hollyhock.
Hopefully coming up these things might be addressed, and maybe we have some more APC20 users here that could benefit from....the APC is a pretty cool control surface.
-s
"Every act of creation is first an act of destruction." -Picasso
That's really a good starting point and give me lot of idea and really motivates me to look further with script
1. For the preset save as 23fx23 sayed the pass only if change module at the output of each arrays resolves the problem.
apc_sequencer_control_
1. For the preset save as 23fx23 sayed the pass only if change module at the output of each arrays resolves the problem.
apc_sequencer_control_
APC20_Sequencer_beta1
I drank too much coffee this morning and dug in. I think I have a work around for the presets.
New Features:
-bidirectional control
-different sequencer colors (yellow,red,green)
-step position cursor indicator on APC20 (length and source adjustable in pop-up)
-generic synchro adjustment for bar/cycle to adjust speed (plan on full-positional control with varying sync speeds)
-3 MIDI bus outputs with Note,Velocity,Length adjustments
-s
I drank too much coffee this morning and dug in. I think I have a work around for the presets.
New Features:
-bidirectional control
-different sequencer colors (yellow,red,green)
-step position cursor indicator on APC20 (length and source adjustable in pop-up)
-generic synchro adjustment for bar/cycle to adjust speed (plan on full-positional control with varying sync speeds)
-3 MIDI bus outputs with Note,Velocity,Length adjustments
-s
"Every act of creation is first an act of destruction." -Picasso
Actually I believe the pass only if change just poses as a different problem when using.
It seems that in my case, if only 1 input changes...say you have an output of all 0's on the array, and you switch to preset with output of all 1's and trigger one step off....it causes the entire script array to update the sequencer not just the 1 bit of the array. So you would be expecting all 1's and they would then force themselves to the scripts 0's......if that makes any sense...lmao. It was a bug I was still having up until I implemented my disconnect and feedback in this last beta1 version.
In my latest I did a scheme of feedback, detaching the output, updating the initial array then reapplying so that both the array and sequencer were in step. Also there are 3 scripts on the output which handle sequencer to LED output for the bidirectional control. (I made 3 separate scripts because the MIDI handling was becoming super cumbersome with 1 script).
The only bug I see as of now is sometimes the preset doesnt update fully, however I believe this is a bug with the preset system in which I already have a report in for awhile ago and has been confirmed.
Sometimes it will not fully update the preset and a second press will complete.
I plan on implementing my Multi-Clock Steps module I built which will allow other step timing in sync and Auto-Sync, Re-Sync etc...for doing odd-stepping time. like doing triplets but on the cycle re-syncing up. If your interested I am going to also add a per-step note definition for different note phrases rather than just one note per sequencer. (This is how I have been doing for most my sequencers for awhile). If so I'll share my updates here or maybe the add-ons.
If you want to work together, have ideas you want to implement, or have questions further let me know.
-s
It seems that in my case, if only 1 input changes...say you have an output of all 0's on the array, and you switch to preset with output of all 1's and trigger one step off....it causes the entire script array to update the sequencer not just the 1 bit of the array. So you would be expecting all 1's and they would then force themselves to the scripts 0's......if that makes any sense...lmao. It was a bug I was still having up until I implemented my disconnect and feedback in this last beta1 version.
In my latest I did a scheme of feedback, detaching the output, updating the initial array then reapplying so that both the array and sequencer were in step. Also there are 3 scripts on the output which handle sequencer to LED output for the bidirectional control. (I made 3 separate scripts because the MIDI handling was becoming super cumbersome with 1 script).
The only bug I see as of now is sometimes the preset doesnt update fully, however I believe this is a bug with the preset system in which I already have a report in for awhile ago and has been confirmed.
Sometimes it will not fully update the preset and a second press will complete.
I plan on implementing my Multi-Clock Steps module I built which will allow other step timing in sync and Auto-Sync, Re-Sync etc...for doing odd-stepping time. like doing triplets but on the cycle re-syncing up. If your interested I am going to also add a per-step note definition for different note phrases rather than just one note per sequencer. (This is how I have been doing for most my sequencers for awhile). If so I'll share my updates here or maybe the add-ons.
If you want to work together, have ideas you want to implement, or have questions further let me know.
-s
"Every act of creation is first an act of destruction." -Picasso
Just try it now that's really great. I wasn't thinking about that but generic synchro is really a good idea.
Thanks for all the explanation in a way you anticipate my question:)!!
I thing I understand about the pass only if change it was working but a little bug appears sometimes. as my computer had some trouble yesterday I thing it was that, but yes that's really more stable now.
I'm really interesting by what you plan to implement that will really give a complete stuff.
For now I just feel like a kid with christmas gift and you do more than I was expected when I began to thing about using APC as stepsequencer. Thank you again for your help, time spending and explanations. Some ideas are coming but I have to clear them, i will also look further into the patch and script as it's a concrete exemple for me it's easier to understand links and process.
Thanks for all the explanation in a way you anticipate my question:)!!
I thing I understand about the pass only if change it was working but a little bug appears sometimes. as my computer had some trouble yesterday I thing it was that, but yes that's really more stable now.
I'm really interesting by what you plan to implement that will really give a complete stuff.
For now I just feel like a kid with christmas gift and you do more than I was expected when I began to thing about using APC as stepsequencer. Thank you again for your help, time spending and explanations. Some ideas are coming but I have to clear them, i will also look further into the patch and script as it's a concrete exemple for me it's easier to understand links and process.
APC20_Sequencer_Beta2
Here Akis
-fixed bug in script where reading only sequencer 1 to update all 3, now bidirectional more solid between Hollyhock and APC control
-Added first implementation of my Step positional controller, now auto-sync with triplets, 24ths, etc.
-added Sequencer to script recall trigger to make sure arrays stay in sync
-s
Here Akis
-fixed bug in script where reading only sequencer 1 to update all 3, now bidirectional more solid between Hollyhock and APC control
-Added first implementation of my Step positional controller, now auto-sync with triplets, 24ths, etc.
-added Sequencer to script recall trigger to make sure arrays stay in sync
-s
"Every act of creation is first an act of destruction." -Picasso
Who is online
Users browsing this forum: No registered users and 78 guests
