performer
performer copied to clipboard
[WIP] Metro-like sequencing
This is a WIP PR, any suggestions and improvements either in code or in UX are welcome!
This PR adds basic Metropolis-like sequencing with steps repeats and few different gate modes.
Metropolis gate modes for reference
**This works only in Free track mode, so make sure your track Play Mode is set to "Free" under Track page
Under Gate layout you can find 2 (for now) new layers
REPEAT` which repeats current step N times
REPEAT MODE` which is like a switch on metropolis that determines how to send gates
-
EACH
-- sends a gate for each step -
FIRST
-- sends first gate and waits for N - 1 pulses -
ODD
-- sends gate for each odd step (1, 3, 5) -
TRIPLET
-- sends gate for each third step, (1, 4, 7) creating triplet feel.
Some gate modes were available on unit already mode 1 (gate for N steps long) -- simply go to step LENGTH and increase it to 100% mode 4 (no gate for N steps) -- simply disable the gate in GATE page
TODO
- [ ] add step Skip function (stage button double tap on metropolis).
- [ ] new modes shortcuts
If I would be a programmer, I would like to help; not the case. If is there anything else I can do, I'm in; I would really like to see this feature implemented in Performer. Here is an image with the RYK M185 gate modes, maybe it helps. EDIT:
- the ----------- mode is mute step
- the last mode is continuous sound
- the ?????? mode is the random mode (random meaning chosing one of the presets)
Maybe editing the gates mode sequence could be an option, apart from preset ones?!
Hey this looks amazing!
So, stupid question....how do I put this into my Performer to test?
@hotelbachelard Thanks for the interest!
To install this follow installation guide from README page but instead of
git clone --recursive https://github.com/westlicht/performer.git
do
git clone --recursive https://github.com/vafu/performer.git
cd performer
git checkout vafu/metro-pr
and proceed with installation
@hotelbachelard Thanks for the interest! To install this follow installation guide from README page but instead of
git clone --recursive https://github.com/westlicht/performer.git
do cd performergit clone --recursive https://github.com/vafu/performer.git cd performer git checkout vafu/metro-pr
and proceed with installation
oh boy, ok. i'll have to read through that. thanks for taking the time to develop all these features!!! the screenshots look really promising already :)
@hotelbachelard how do you update the module usually ?
@hotelbachelard how do you update the module usually ?
I've only updated the module once for the latest firmware, and just copied the firmware file onto SD card.
@hotelbachelard oh, ok, I think I can prepare the update so you could update is without compiling code yourself
@hotelbachelard please try this, it contains some update files, I'm not sure which you've used before so included some of them. metro_update.zip
LMK if it worked for you!
@hotelbachelard please try this, it contains some update files, I'm not sure which you've used before so included some of them. metro_update.zip
LMK if it worked for you!
Works great!! Just needed to put the UPDATE.DAT onto the SD and follow the manual update procedure.
Would you mind putting your negative gate offset test on this too?


This is awesome man! Thank you!
@hotelbachelard this is a version with offsets metro_offset_update.zip
Amazing, thanks so much!! Thanks for taking all this time to develop these amazing features on the module.
Just popped it into the Westlicht, works great.
Another challenge - is there a way to allow fine-tuning of all the probability and offset percentages, instead of just those 4 or 5 values?
Thanks again, REALLY appreciate all your work and communication.Heidi
---------------Music: http://www.bachelard.bandcamp.com
On Sunday, December 6, 2020, 2:20:42 p.m. EST, vafu <[email protected]> wrote:
@hotelbachelard this is a version with offsets metro_offset_update.zip
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.
@hotelbachelard unfortunately there's a memory limit which doesn't allow us to go any more detailed that those few values. this would require hardware changes, using another MCU etc.
Glad to help, thanks for testing this!
It's very cool to see some firmware hacking happening, after all, this is part of the reason why I made this project open source from the beginning, so people can add new functionality as they see fit. I know that the multi-stage feature was requested by quite some people for quite some time now and the reason it hasn't happened yet is that I haven't really found a good way to implement this properly. Some background: Up until a few month ago, I was under the false assumption that I don't really have enough bits per step left to add these additional layers. Originally the step data was 6 bytes and pretty much used up. I then realised that a step was actually using 8 bytes due to alignment in the struct, which was a silly mistake. So yay, an extra 16bits was suddenly available for extensions. However, the multi-stage feature still seemed quite tricky to get right. Your current implementation is sort of "added on top" triggering the same step multiple times. Now this works, but is breaking some assumptions. To begin with, as you mention right from the beginning this only works if play mode is set to "free". I always try to make things in a consistent way, this means that it should also work with the aligned mode. It's arguable that this is not really necessary, but I don't like breaking existing concepts. So there are two possibilities, either this is implemented in a way that allows it to work in aligned mode, which is tricky, or we would implicitly switch to "free" mode when there is a step with multiple stages. It's weird if a feature is not working just because some seemingly unrelated settings are used. But even when implicitly switching, things are not behaving as expected, which is confusing IMO. It doesn't stop there. This interacts with so many existing things it's hard to make sure nothing breaks. Is this working properly (in an expected way) with track linking, recording, conditions, gate lengths, etc etc. Back when I put some thought into this I found it super tricky to get consistent and "right". So what I ended up doing was adding a new track mode which would offer a different sequencing concept more in line with the RYK/metropolis style of sequencing. This allowed me to make something that is self-contained and easier to understand/reason about. The downside is that it adds a whole new track mode and will probably leave out a lot of features that are already in the note track. So naturally people will ask why feature X is not available in stage mode when it is in note mode. Bottom line of all of this, I didn't yet come up with a concept to make this all work without it feeling "out of place".
Now, I really don't want to discourage this kind of development and I really hope you don't take this the wrong way. But I hope you understand when I don't merge this pull request right away and cannot even offer concrete steps to make the merge happen. This change has far reaching consequences and I really need to think about it before deciding which way to go. The great thing here is that people can still use the modified firmware and get their hands on this feature even if it's not in the main release. And I always hoped for this to happen, so please keep up the great work!
@westlicht I absolutely understand your concerns, that's why PR is still marked as WIP and probably will be that way for quite some time until it will be extensively tested by me and anyone willing to help :) Though so far from my testing everything works as I would expect it to, including track linking, gate length, conditions etc. I've not yet tested tons of things but I've tried to touch as less code as possible and not break everything else. Regarding Aligned/Free -- yes, I don't like either that we see some new NO-OP layers in Aligned mode so I was thinking to make every new layer this PR adds appear only if Free mode is selected. Or maybe to keep everything consistent we can create new Stage track mode which will be using same NoteTrackEngine but with Free mode by default and no way to switch to Aligned. By no means I'm not trying to merge this right away, I've been in development for quite some time and I'd rather make sure that my PR is working as expected instead of creating tons of bugfixes later :D
I really love the codebase, it's a pleasure to work with the code, it's very well-thought and transparent, so thank you so much for this platform and making it open source!
@dragosandriana As suggested by you, I've added few more gate modes:
-
EACH
(||||
) -- sends a gate for each step -
FIRST
(|...
) -- sends first gate and waits for N - 1 pulses -
ODD
(|.|.
) -- sends gate for each odd step of the stage (1, 3, 5) -
TRIPLET
(|..|
) -- sends gate for each third step of the stage, (1, 4, 7) creating triplet feel.
compiled firmware is in description
@hotelbachelard Please try this as well :)
Also, as I wanted I've changed shift+function a bit for quick access
-
Shift
+RETRIG
enablesREPEAT
layer -
Shift
+LENGTH
enables gate mode layer
Hi @westlicht - so great to hear from you, and thanks for taking the time to respond to these recent changes that @vafu made. I absolutely appreciate your principles as a designer, and agree that for a module this complex and flexible and, as you say, where each part of the sequencer is related to many other functions, consistency and rigorous and thorough testing and thinking through implementation of new features are really important. And to be honest, being far, far away from being a designer and programmer, I was just excited primarily about the musical and rhythmic possibilities of the Step Repeat addition, as well as the negative offset.
I played with vafu's unofficial update today, and so far things are working pretty consistently on my end as well. Overdubbing the note track will erase any Step Repeat, as expected. I do like that the Step Repeat is part of the Gate menu rather than in a totally different track mode – for now. Even in its current state,
The only thing I found, as mentioned above, is that now, Gate on/off is now affected on every page/menu in the Step sequence, and not just available with the Gate page. I would like that fixed if possible, as I've been inadvertently turning steps off when I'm changing notes or other things.
Again, really really appreciate Simon's original fantastic design on the Westlicht and vafu's current flurry of work on it. It's really become a centerpiece in my system.
@hotelbachelard Ah, gate on/off from each page was my own changes that I did not intend to add here, sorry about that, let me revert those!
has this version the midi fixes and improvements added on v0.1.38?
hi, @franq87, yes, this is branched out from latest upstream master (after v0.1.39)
hi, @franq87, yes, this is branched out from latest upstream master (after v0.1.39)
Cool, will check it this week for sure, thanks for this @vafu
@vafu I think I found an issue, when you copy a track that has different repeat values to another track, it copy the values but it only works as a x1 value, you can modify the value but it still playing only at x1
I'm having a lot of fun with this btw
@vafu Hi, just wondering if you had your branch updated to last v1.40
also, thanks for this branch
cheers
@franq87 sorry it took me so long to get back to you! I tried to reproduce the issue you've described, but copying all values to another track worked for me. did I get the steps right?
- set track 1 and track 2 mode to "Free"
- create a sequence using repeats on track 1
- copy pattern
- go to track 2
- paste pattern
@franq87 here are firmware files with metro updated to latest upstream version only stage sequencing with negative offsets.zip
@franq87 sorry it took me so long to get back to you! I tried to reproduce the issue you've described, but copying all values to another track worked for me. did I get the steps right?
- set track 1 and track 2 mode to "Free"
- create a sequence using repeats on track 1
- copy pattern
- go to track 2
- paste pattern
Hey hi! I've just repeated again and it is all working, It seems I forgot to put the track on free mode
all working like a charm, super thanks for the update!
@vafu this is not related with metropolis sequencing but, I was just wondering if you see possible to enable step up as a destination on the CV assignments? Maybe running the track in free mode as your metropolis sequencer does? This would be super handy for using the performer to quantize random trigs/gates when dropping some s&h in
@franq87 what do you mean by "step up" in this context? like advancing the step by external trig?