It sure is! Just spent 2 hours playing with the pattern scaling. So glad it's not a nice day outside. Only downside is my previous Performances won't load anymore, but the new one I just made loads fine, so I'll just have to get busy making more Thanks for doing this Brendan!
hmmm... have you tried saving as kit/pattern files and loading those? i'd like to keep it such that old files do load correctly.
I think the problem is with the Pattern, but there are a few weird things going on. If I load an old Performance the global sample rate reduction defaults to zero. Fine, I turn that back up to 127, still no sound. The Pattern number also defaults to 4, fine, I change that to 1 where I keep my main pattern data, still no sound. If I go to the voices I can preview them, and I can use the rolls to trigger sounds, but even adding new active steps to the pattern doesn't work. If I save this Pattern and try reloading that, also no dice.
Hmm, now my Performance that I created and saved with your firmware installed is being funny too, but I may have written over it during testing :P
Hi Brendan, I checked your last update and pattern chaining works fine now! Also the record function by holding the rec button works great.
But I have some suggestions: - When you use transpose and record the sequence into the sequencer it is hard to recognize what happens. Transpose is still set in the menu without any function. Is it possible to also update the display and set the transpose function to 0 to have some feedback? I think before the transpose function was always active, right?
- I did a little pattern chainig and everything works fine, but when using the chaining option during playback the timing is sometimes unstable. It sounds like missing steps. But this only happens, when I change the pattern chaining on the fly during playback. I didn't recognized this behaviour before.
...When you use transpose and record the sequence into the sequencer it is hard to recognize what happens.
Yeah, I definitely agree with this. I didn't go very far in giving feedback as I hadn't quite settled on that being the best option for write method. I'll add something more here eventually.
... I did a little pattern chainig and everything works fine, but when using the chaining option during playback the timing is sometimes unstable.
That's odd... I can't reproduce this. Are you using patterns with different scale rates? That's the only time I can get things to go (predictably) un-aligned.
Still have some intermittent weirdness happening, I will play with this more this week and either figure out what I'm doing wrong or give you some better input for a potential bug.
On another topic, I can't seem to figure out the 'pattern realign' short cut. Could you give me some more details on what this does and how to implement it? I've tried the instructions in your readme but this doesn't seem to do anything? Maybe a word on what I'm trying to do and you can hopefully sort me out:
I often write, say, a hi-hat pattern first, get something nice, then go to put in my bass drum and find that my pattern is off by 1 or 2 steps, i.e. I need my bass drum to start on step 2 instead of 1. I'd then like to be able to shift all my notes from my hi-hat pattern by the required number of steps so my bass drum can start on the 1.
In the PatGen mode (I think this is what you call 'perf' in your readme?) there's the Euclidean rotation parameter, which is exactly what I want to use, but I can't rotate my pattern without getting new steps added by the 'stp' parameter. I see that if I hit shift+pattern then 'stp' goes to zero, i.e. no new steps should get generated, but when I turn the 'rot' knob new steps appear.
I think the previous value of 'stp' is being remembered. It defaults to 4 when I first enter PatGen, and if I use the above trick to set 'stp' to zero it always makes 4 steps regardless.
uh... no, perf mode is the mode you're in if you press the second mode button from the left. patgen mode is what you're in if you press shift+ that button. this isn't something I added, so I haven't tooled around with it much. It's not really useful for doing anything other than generating a starting pattern on a blank track at the moment.
pattern re-align: a lot of the additions I've made can cause the instrument tracks to get 'shifted' relative to one another when used live. Think, if you're switching between multiple patterns that have different scaling settings. It's possible to use this musically, but sometimes you just want to quickly get back to exactly how the current pattern is supposed to sound, so if you double-tap a pattern button, it will re-adjust the instruments so that they are all positioned as if the pattern had started from the beginning.
Ah ok thanks for the clarification, that is much clearer (and useful) but sounds like what you've implemented is not what I'm looking for after all.
Could I upgrade my question to a request then? The rotation feature in the PatGen would be extremely useful to me if it didn't also wipe my pattern at the same time. This might be getting into "changing stock functionality" territory though, so I understand if you're reluctant to mess with it. Maybe I'll just pull your source from github and see about adding it for myself
umm... don't worry about it. I've almost got that working, just trying to add a substep rotation thingy too. Not that I want to discourage people from messing with the code
I have it such that it doesn't generate a new pattern until you change the 'steps' parameter in euklid, so all the other stuff there will do predictable things to an existing pattern. might not be as smooth as the pattern generator since it kind of existed in it's own 'bubble' before, but It seems to me like an ok tradeoff.
I have it such that it doesn't generate a new pattern until you change the 'steps' parameter in euklid, so all the other stuff there will do predictable things to an existing pattern.
ok, little update: 'PatGen' (shift+perf) will rotate existing patterns. It will erase the pattern and make a euclidean pattern only if you change the 'steps' parameter on this page. There are some bugs:
- changing 'length' will not erase the pattern, but will change the pattern loop length, as if you had altered it from the 'mix' page in voice mode. The trade-off is that the euklidean pattern does not update when length is changed. To update it, wiggle the 'steps' parameter.
- there is a 'rotate sub-steps' parameter that will push the pattern ahead a certain number of substeps. This can be tricky to use for a couple reasons: It does not change the 'main' steps being active, so you can push substeps into inactive steps. Also, inactive 'main' steps always have their first sub-step enabled by default, so you may end up pushing these into active 'main' steps. There isn't any way to 'fix' this - it is just a result of how the sequence structure in LXR is designed. Short explanation is you may still need to do some cleanup after rotating by sub-steps, but the utility is there if you need it
- for some reason when you switch voices in PatGen, the pattern led's don't update. I'll get that sussed eventually, for now you can drop into 'voice' or 'step' mode to get the new pattern led's
I also did some work on the menu code: minor things mostly. You can switch the step parameter sub-page by pressing the 'Step' mode button, or by pressing sub-steps in this mode. mode will also remember what sub-page you were last on. There is some code for a different mode for shift-step. It doesn't do anything for now except give you a blank screen and a flashylight. More in that space soon.
yup, if you want to bypass 60's input, you'll want a midi merge box. Even if there were space to add another MIDI in on the LXR, it wouldn't be any faster than getting a standard merger.
Of course, the fastest, most jitter-free way of getting more knob controllers into the LXR would be using the expansion header, but that would take a completely different product than the '60.
That's my whole point, a merge device is the wrong way to go, there is no parsing of the midi stream so if a controller message arrives at the merge at the same time as a controller message there is no system to say what has priority. With a second port (connected to the expansion header) you can prioritize them
there are no information about the upload at http://www.brendanclarke.com/files/LXR/ am i right that the "lxr-orbitcharon" version is the last one? and what can do the others (e.g. firmware-alex an lxr)??
there are no information about the upload at http://www.brendanclarke.com/files/LXR/ am i right that the "lxr-orbitcharon" version is the last one? and what can do the others (e.g. firmware-alex an lxr)??
You want the FIRMWARE.BIN file. Put this on your SD card, and push down the rotary encoder next to the screen while booting up the LXR to install.
hi Brendan, does your firmware support saving instrument midi settings globally? I'm driving the lxr from a midibox and it's a real pain setting up channels for every kit.
not yet - I will try to do something about this some time soon though. I might be able to introduce a global setting to 'lock' midi/note params. Have to think about the best way forward that doesn't screw with others' existing workflow.
@juggernaut: There is only one version, 'FIRMWARE.BIN' in that folder. I fix things as quick as I can when I find/hear about them, but maintaining multiple versions would just add confusion. The other firmware file that was in there was just for testing purposes.
some fixes today, mostly to the 'patgen' changes I made. Substep rotation works correctly now, and will do fancy things like update the substep LED's when you rotate. You can also turn steps and substeps on and off, and view params with 'shift' (like you would in voice mode) while in 'patgen' mode. You can also copy in patgen mode as you would with voice mode. Also cleaned up some other minor menu inconsistencies that aren't worth specifically mentioning, and copying steps and substeps will now turn the destination main step on.
hmm. Got to think about this. As it stands now, the MIDI channels are saved with the global 'settings'. What is it that you want to do that you'd like the MIDI channels to change with the kit?
Hi Brendan! I really I congratulate for your custom firmware ... I installed recently and I still have much to discover but it is full of interesting features. One thing escapes me ... why neither you nor julian have thought a simple "SOLO" function with regard to the track? Maybe you could do by pressing the "SHIFT" key in "Perf" mode, and then select the track to leave instantly the only one to play, putting the other in mute. I think it's simple! Also it would find useful, that, when the sound generator is driven by an external MIDI source, such as another sequencer, there is a global MIDI channel which allows to play all the voices from a single MIDI track, simply assigning each voice to a midi note ... I do not know if there is already a way to do this but I did not succeed following the manual ... maybe it could be restrictive, given that each voice would have only a midi note therefore a pitch, but you could change from the LXR... Another very interesting implementation would be a kind of MIDI DELAY, such as that of the sequencer of 'RM1X YAMAHA (did you know that? ) that I have and I find it very interesting for the composition! What do you think about it? Thanks for your work and for your time !! :-h
hi! I did some experiments a while ago, trying to implement a solo mode, but I ended up concluding it wasn't a great use of time. There are a couple blocks on making it an effective feature. First, we are rapidly running out of button combinations to do stuff, especially in performance mode. In this mode, shift-voice already selects the voice, which is useful for improvising with pattern rotation. What I was thinking was something like double-click a voice button in voice mode, and I had this working, but it ended up being more complicated than muting out the other voices, and I would frequently solo a voice inadvertently. The other thing is that soloing isn't JUST muting the other parts. You also have to be able to un-solo. Which means the device needs to remember (and, ideally, show the user) both which voices are muted and which are soloed. There isn't really enough visual feedback on the LXR to show what all the voices are doing if a solo mode is included - ie, how would you be able to tell, just looking at the device, whether a voice was soloed, or all the other voices were muted. Playing the whole kit from one channel - You should be able to do this. Off the top of my head, I think you assign global and all the voice channels the same, and then spread out the notes where you want them. I did mess with this a bit, so my FW may not conform to the manual. Check the addition notes at brendanclarke.com/files/LXR/ MIDI effects - possibly... MIDI delay isn't a hard thing to enter manually with the new roll modes (just modify the velocity when recording multiple passes). But other types might be worth-while. An arp mode might be cool. In general, stuff that would require more parameters is probably gonna be off the board for a while - we're pretty maxed out on kit parameters, and adding more is going to take a major re-write and bug check (we're bumping up against 255 and all that stuff is stored in 8-bit numbers...)
Thank you so much for your quick response, Brendan! As regards the SOLO feature I am sure that in the future be able to find a solution! For the MIDI DELAY, I've done some tests with the method that you suggest to me and I must say something interesting I've taken off, however, I meant something more "on the fly", something you can do at the moment and remove or vary while the sequencer is in PLAY. The roll seems to me more like just an arpeggiator, which still has an excellent implementation. Regarding the roll function, you could be included in a menu option to choose an automatic increase or decrease in velocity, so as to create a roll up or roll down, without having to act reale..ma time mine are only suggestions, suggestions that technically, not knowing precisely the memory space that still has available to program, I do not know if it will ever see the light on LXR! Certain that an ARP or a MIDI DLY would be a big step forward! I renew my thanks and congratulations for your work, helping to make the LXR even more fantastic!
P.S. 1 I think I came across a small BUG of your firmware, but I'm not sure ... In LOOP function, the sequence of the time freezes until they release the pulsante..Non it is a short loop of silence, because even with the same key is not always done ... I hope it is easy to solve!
P.S. 2
In your website i found a additions to LXR .36 firmware, but your last custom is 0.37.. There's something new? Sorry if you already spoken.. Good job!
as far as version numbering goes, I keep mine up to date with the stock firmware, so any changes Julian made between .36 and .37 are included in mine.
I'm not sure I understand your "PS 1". Can you explain that another way? Make sure you're using the latest firmware download - there was a bug or 2 with the looper when I first implemented it. I haven't noticed anything screwy with it lately.
Excuse me, I translated wrong ... I'll explain. Sometimes, when I use the LOOP function implemented in your custom firmware, in "PERF" mode, something blocks the sequencer ... for example, dialing a simple 4/4 loop, and using this function with the key 13, sometimes you create the loop of the correct size, sometime seems to freeze the sequencer until you release the button ...this what happen to my custom firmware 0.37
ok, that makes sense. This is something I haven't seen, so let me try and reproduce it here. Are you using the looper while the patterns switch? ie, is there some pattern chain set? do the LED's light up correctly? ie - if you are looping a 1/4note, the chaselight should cycle through 4 LED's.
is very simple ... restart LXR, i program a pattern from zero, simple, no chain pattern, and use the LOOP function. The same button sometimes send the pattern in LOOP, sometimes freeze the pattern, in silence! The PLAY LED still flashing, while the LEDs of the steps relating to the LOOP go out ...
I haven't been able to reproduce this - the looper seems to be working as intended on my end.
I might need to explain a couple things here. The looper doesn't loop audio, it loops triggers. If there isn't a trigger that falls somewhere between the two loop points, you won't hear any sound. Most of the loop lengths are very short - a single sub-step (1/128th note) on the last sequencer button, doubling every sequencer button you move to the left, up to 8 main steps (1/2 note) on the 10th sequencer button. Chances are good that with the smaller loop increments, there are no triggers on the looped sub-steps.
Here's the thing - to help with looping the smaller increments, *the looper uses the quantize amount*. ie, if you set quantize to 1/16, the loop will always start on a main step. If quantize is off, chances are good that if you use a short loop, it is not starting on the sub-step that actually contains the trigger, and you will hear silence.
So make sure quantize is on (try 16ths). If the looper is still producing silence on steps you don't expect it to, with quantize on, then send over the settings file and I'll see if there's something interfering. Also, again, make sure you're using the latest firmware file (ie - go download it again now and load it up).
Hope that helps! Just for kicks, I tried chaining some patterns and using the looper, because that wasn't something I had thought of when I wrote the code in. What happens is that the pattern changes, but the loop points stay the same. I'm not sure if that's cool or not. I kinda like it. It can produce some very nifty musical effects, but it's not really what one would 100% expect from a "looper". I'll leave it up for discussion. Thoughts?
Comments
Hmm, now my Performance that I created and saved with your firmware installed is being funny too, but I may have written over it during testing :P
I checked your last update and pattern chaining works fine now!
Also the record function by holding the rec button works great.
But I have some suggestions:
- When you use transpose and record the sequence into the sequencer it is hard to recognize what happens. Transpose is still set in the menu without any function. Is it possible to also update the display and set the transpose function to 0 to have some feedback? I think before the transpose function was always active, right?
- I did a little pattern chainig and everything works fine, but when using the chaining option during playback the timing is sometimes unstable. It sounds like missing steps. But this only happens, when I change the pattern chaining on the fly during playback. I didn't recognized this behaviour before.
That's odd... I can't reproduce this. Are you using patterns with different scale rates? That's the only time I can get things to go (predictably) un-aligned.
On another topic, I can't seem to figure out the 'pattern realign' short cut. Could you give me some more details on what this does and how to implement it? I've tried the instructions in your readme but this doesn't seem to do anything? Maybe a word on what I'm trying to do and you can hopefully sort me out:
I often write, say, a hi-hat pattern first, get something nice, then go to put in my bass drum and find that my pattern is off by 1 or 2 steps, i.e. I need my bass drum to start on step 2 instead of 1. I'd then like to be able to shift all my notes from my hi-hat pattern by the required number of steps so my bass drum can start on the 1.
In the PatGen mode (I think this is what you call 'perf' in your readme?) there's the Euclidean rotation parameter, which is exactly what I want to use, but I can't rotate my pattern without getting new steps added by the 'stp' parameter. I see that if I hit shift+pattern then 'stp' goes to zero, i.e. no new steps should get generated, but when I turn the 'rot' knob new steps appear.
I think the previous value of 'stp' is being remembered. It defaults to 4 when I first enter PatGen, and if I use the above trick to set 'stp' to zero it always makes 4 steps regardless.
Hope that makes sense, and thanks for your help!
pattern re-align: a lot of the additions I've made can cause the instrument tracks to get 'shifted' relative to one another when used live. Think, if you're switching between multiple patterns that have different scaling settings. It's possible to use this musically, but sometimes you just want to quickly get back to exactly how the current pattern is supposed to sound, so if you double-tap a pattern button, it will re-adjust the instruments so that they are all positioned as if the pattern had started from the beginning.
Could I upgrade my question to a request then? The rotation feature in the PatGen would be extremely useful to me if it didn't also wipe my pattern at the same time. This might be getting into "changing stock functionality" territory though, so I understand if you're reluctant to mess with it. Maybe I'll just pull your source from github and see about adding it for myself
I have it such that it doesn't generate a new pattern until you change the 'steps' parameter in euklid, so all the other stuff there will do predictable things to an existing pattern. might not be as smooth as the pattern generator since it kind of existed in it's own 'bubble' before, but It seems to me like an ok tradeoff.
'PatGen' (shift+perf) will rotate existing patterns. It will erase the pattern and make a euclidean pattern only if you change the 'steps' parameter on this page. There are some bugs:
- changing 'length' will not erase the pattern, but will change the pattern loop length, as if you had altered it from the 'mix' page in voice mode. The trade-off is that the euklidean pattern does not update when length is changed. To update it, wiggle the 'steps' parameter.
- there is a 'rotate sub-steps' parameter that will push the pattern ahead a certain number of substeps. This can be tricky to use for a couple reasons: It does not change the 'main' steps being active, so you can push substeps into inactive steps. Also, inactive 'main' steps always have their first sub-step enabled by default, so you may end up pushing these into active 'main' steps. There isn't any way to 'fix' this - it is just a result of how the sequence structure in LXR is designed. Short explanation is you may still need to do some cleanup after rotating by sub-steps, but the utility is there if you need it
- for some reason when you switch voices in PatGen, the pattern led's don't update. I'll get that sussed eventually, for now you can drop into 'voice' or 'step' mode to get the new pattern led's
I also did some work on the menu code: minor things mostly. You can switch the step parameter sub-page by pressing the 'Step' mode button, or by pressing sub-steps in this mode. mode will also remember what sub-page you were last on. There is some code for a different mode for shift-step. It doesn't do anything for now except give you a blank screen and a flashylight. More in that space soon.
Of course, the fastest, most jitter-free way of getting more knob controllers into the LXR would be using the expansion header, but that would take a completely different product than the '60.
am i right that the "lxr-orbitcharon" version is the last one?
and what can do the others (e.g. firmware-alex an lxr)??
@juggernaut: There is only one version, 'FIRMWARE.BIN' in that folder. I fix things as quick as I can when I find/hear about them, but maintaining multiple versions would just add confusion. The other firmware file that was in there was just for testing purposes.
Also cleaned up some other minor menu inconsistencies that aren't worth specifically mentioning, and copying steps and substeps will now turn the destination main step on.
I really I congratulate for your custom firmware ... I installed
recently and I still have much to discover but it is full of interesting
features.
One thing escapes me ... why neither you nor julian have thought a simple "SOLO" function with regard to the track? Maybe
you could do by pressing the "SHIFT" key in "Perf" mode, and then
select the track to leave instantly the only one to play, putting the
other in mute. I think it's simple!
Also
it would find useful, that, when the sound generator is driven by an
external MIDI source, such as another sequencer, there is a global MIDI
channel which allows to play all the voices from a single MIDI track,
simply assigning each voice to a midi
note ... I do not know if there is already a way to do this but I did
not succeed following the manual ... maybe it could be restrictive,
given that each voice would have only a midi note therefore a pitch, but
you could change from the LXR...
Another very interesting implementation would be a kind of MIDI DELAY,
such as that of the sequencer of 'RM1X YAMAHA (did you know that? )
that I have and I find it very interesting for the composition!
What do you think about it? Thanks for your work and for your time !!
:-h
I did some experiments a while ago, trying to implement a solo mode, but I ended up concluding it wasn't a great use of time. There are a couple blocks on making it an effective feature. First, we are rapidly running out of button combinations to do stuff, especially in performance mode. In this mode, shift-voice already selects the voice, which is useful for improvising with pattern rotation. What I was thinking was something like double-click a voice button in voice mode, and I had this working, but it ended up being more complicated than muting out the other voices, and I would frequently solo a voice inadvertently. The other thing is that soloing isn't JUST muting the other parts. You also have to be able to un-solo. Which means the device needs to remember (and, ideally, show the user) both which voices are muted and which are soloed. There isn't really enough visual feedback on the LXR to show what all the voices are doing if a solo mode is included - ie, how would you be able to tell, just looking at the device, whether a voice was soloed, or all the other voices were muted.
Playing the whole kit from one channel - You should be able to do this. Off the top of my head, I think you assign global and all the voice channels the same, and then spread out the notes where you want them. I did mess with this a bit, so my FW may not conform to the manual. Check the addition notes at brendanclarke.com/files/LXR/
MIDI effects - possibly... MIDI delay isn't a hard thing to enter manually with the new roll modes (just modify the velocity when recording multiple passes). But other types might be worth-while. An arp mode might be cool.
In general, stuff that would require more parameters is probably gonna be off the board for a while - we're pretty maxed out on kit parameters, and adding more is going to take a major re-write and bug check (we're bumping up against 255 and all that stuff is stored in 8-bit numbers...)
feature I am sure that in the future be able to find a solution! For the
MIDI DELAY, I've done some tests with the method that you suggest to me and I
must say something interesting I've taken off, however, I meant
something more "on the fly", something you can do at the moment and
remove or vary while the sequencer is in PLAY. The roll seems to me more
like just an arpeggiator, which still has an excellent implementation.
Regarding the roll function, you could be included in a menu option to choose an automatic increase or decrease in velocity, so as to create a roll up or roll down, without having to act reale..ma time mine are only suggestions, suggestions that technically, not knowing precisely the memory space that still has available to program, I do not know if it will ever see the light on LXR! Certain that an ARP or a MIDI DLY would be a big step forward! I renew my thanks and congratulations for your work, helping to make the LXR even more fantastic!
P.S. 1
I think I came across a small BUG of your firmware, but I'm not sure ...
In LOOP function, the sequence of the time freezes until they release the pulsante..Non it is a short loop of silence, because even with the same key is not always done ...
I hope it is easy to solve!
P.S. 2
In your website i found a additions to LXR .36 firmware,
but your last custom is 0.37..
There's something new?
Sorry if you already spoken..
Good job!
I'm not sure I understand your "PS 1". Can you explain that another way? Make sure you're using the latest firmware download - there was a bug or 2 with the looper when I first implemented it. I haven't noticed anything screwy with it lately.
Sometimes, when I use the LOOP function implemented in your custom firmware, in "PERF" mode, something blocks the sequencer ... for example, dialing a simple 4/4 loop, and using this function with the key 13, sometimes you create the loop of the correct size, sometime seems to freeze the sequencer until you release the button ...this what happen to my custom firmware 0.37
The same button sometimes send the pattern in LOOP, sometimes freeze the pattern, in silence!
The PLAY LED still flashing, while the LEDs of the steps relating to the LOOP go out ...
I might need to explain a couple things here. The looper doesn't loop audio, it loops triggers. If there isn't a trigger that falls somewhere between the two loop points, you won't hear any sound. Most of the loop lengths are very short - a single sub-step (1/128th note) on the last sequencer button, doubling every sequencer button you move to the left, up to 8 main steps (1/2 note) on the 10th sequencer button. Chances are good that with the smaller loop increments, there are no triggers on the looped sub-steps.
Here's the thing - to help with looping the smaller increments, *the looper uses the quantize amount*. ie, if you set quantize to 1/16, the loop will always start on a main step. If quantize is off, chances are good that if you use a short loop, it is not starting on the sub-step that actually contains the trigger, and you will hear silence.
So make sure quantize is on (try 16ths). If the looper is still producing silence on steps you don't expect it to, with quantize on, then send over the settings file and I'll see if there's something interfering. Also, again, make sure you're using the latest firmware file (ie - go download it again now and load it up).
Hope that helps! Just for kicks, I tried chaining some patterns and using the looper, because that wasn't something I had thought of when I wrote the code in. What happens is that the pattern changes, but the loop points stay the same. I'm not sure if that's cool or not. I kinda like it. It can produce some very nifty musical effects, but it's not really what one would 100% expect from a "looper". I'll leave it up for discussion. Thoughts?