-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support polyphonic sequences #3
Comments
This has been something I've thought about a lot. My current plan for a simple, low-overhead solution is to alter the live recording code to scan for any sequence that is configured to send on the same channel as the current active sequence, and record one voice from the Voices array into each one. This would keep all the rest of the program logic the same, and you can technically do something similar already if you record one part at a time. The difficulty with supporting it another way is just ram. There are currently two note banks (the live one and one for storage) so there would be at least enough room for duophonic sequences, but when I first implemented the storage bank, the program crashed almost immediately after running it and I had to make a major memory optimization pass through the code just to fit it in, so I don't think there's room for three or more notes per step. |
Hm, okay I really did not think about the RAM issue. I think there are mainly two use cases for a polyphonic sequencer: Sequencing DrumsMany drum machines use notes instead of channels per step, so here with the current implementation you would need multiple tracks for multiple drums ChordsUsing the sequencer to generate Chords or arpeggios. This could be as easy as generate a Maj/Min/7 chord based on the current root note in the sequencer step. Thinking about these use cases in terms of memory is interesting. The chord mode could actually be implemented without consuming much ram. And then for the drum machine mode one thing became clear to me: actually not many people would need the ability to zoom into a finer grid for drums. Meaning, maybe you could save some ram by having a true 8 step sequencer without the ability for a finer grid. To be honest I don't think many people actually expect this zoom functionality at all in a 8x8 grid sequencer. I personally would prefer a true 8 step sequencer based on 16th notes. By using pages this could then make the sequencer 8, 16, 24, 32... in step lengths. This would be similar to the way Elektron does it's sequencer. |
There are a lot of ideas for this. I think there are probably multiple things that are worth doing and the problem will be deciding which ones can be implemented in an intuitive way that works well with the rest of the program. The first thing is the currently available option of setting multiple tracks to the same channel and creating polyphonic sequences by entering one part at a time. This is nice because it doesn't need any special implementation or new interface elements to be learned. It also fits with one of my assumptions about how people would use Subsequencely, which is that you wouldn't necessarily want to actually use all 8 sequences at once, but instead you'd do things like link together multiple sequences to make longer ones, put the kick drum in a separate sequence from the rest of the drums so you could mute it as necessary, etc. It makes it easy to reason about the behavior of the program, and makes it flexible to use. The thing that could be improved would be nicer workflows for the polyphonic use case, which would include the live recording feature I mentioned in my previous comment, and the ability for multiple tracks' notes to be displayed in sequencer mode so that you wouldn't have to constantly switch between tracks. The automatic chords is a good idea that wouldn't be too hard to implement at a basic level, although it could create some tricky edge cases. Would this be a per-sequence toggle where all notes would be played as chords, or a performance modifier that would be stored per-note? For drums, I think you can do more or less what you're describing by turning off pattern steps in session mode with quantise+pad (leaving only 2 pads on if you want 8 steps), then go into sequencer mode and zoom in all the way, at which point you will see 8 16th notes, which is the entire pattern. Of course, this isn't a very quick workflow, and it leaves most of the rest of the sequence unused. One idea is to have the unused steps be overlaid on the enabled ones to create more polyphony. So if you only needed 8 steps, you could fit four parts in one 32 step sequence. |
I guess this would be a lot of work but supporting polyphonic sequences would actually be huge.
Supporting polyphonic sequences in live record mode would be good to start with. For the actually sequencer it might be a little bit challenging for the users. But devices like Ableton Push support polyphonic sequencing as well and people tend to generally like it.
The text was updated successfully, but these errors were encountered: