mxb, you seem to be doing the heavy lifting lifting here, so you should definitely indulge your own desires - a sequencer “done right” can change one’s approach to music making - for example, I consider N.O.W. my secret weapon, as I have the feeling that only a few people understand what it’s capable of (I don’t mind tho, already one album down, and lots of sketches that explore new and exciting possibilities)
PS: Someone should write a Renoise sequencer round-up !!
All of my tools are written as experiments, just to learn new things. I have this API to a powerful piece of audio software, how can I make it do something unique / useful / impressive?
There does appear to have been an explosion of sequencers recently.
While I do like this praise (who doesn’t? ), anyone can write these tools really. Combine programming experience and a knowledge of the API and most things are possible. My problem is a lack of ideas!
Yes, I’ll read the code for ideas. I’m just emphasizing that it won’t be there immediately so people don’t get their hopes up!
Note: Development of Cells Device has ceased (it was only a test). The live performance capabilities have been developed into Cells!. The Glitch like features may occur in the future as a separate tool.
Early alpha version attached. This is how it works:
The current pattern is divided into beats (quarter notes).
Each beat is subdivided into 2, 4 or 8 sub-beats
You indicate instruments you want to use with this tool by adding “[L]” into their name
Select one of these instruments before starting the tool
Tools -> Cell Device -> 2 / 4 or 8 PPQN
The GUI will magically appear if everythings ok and playback will start
The pattern is looped and the current track cleared
Playback position is highlighted in green
Click a cell command and click cells (red = mute, blue = reverse, yellow = repeat the previous cell)
Operations on cells are not commutative
Select different loops in realtime with the buttons on the left, the same cell commands will be applied
You can also change the BPM if you wish
I have an example file with some loops ready for use here
edit: initialized the tool with ppqn of 4, but upped the lbp to 8 as the loop didn’t sound right, colored a bunch of blocks and received notice, so probably the same struggling to keep up as the previous bug.
Opened up a second instance of yer tool on an empty track, got a message first that the loop didn’t fit the pattern if I remember correctly, then when I closed that particular notice, this error message popped up. Also noticed the tools stopped highlighting the blocks while the pattern is running.
Really cool stuff, mxb!
No bug reports from me (apart from the one Jonas already posted [std::logic_error: 'trying to access a no longer available pattern_line note column.]).
Yeah, I’m trying to do this right clicking all the time since I started testing!
Opened up a tool instance, I think at 4 ppqn, listened to the loop, didn’t like the sound, closed the tool, and tried opening up a new instance of the tool at a higher ppqn of 8, got the following notice:
edit:
after this bug, I tried opening a second tool instance for a neighbor track, trying to layer sounds.
I think trying to create a second tool instance for another tracks has messed up the already initialized tool, running the original tool now adds the events in the other track, no matter where the cursor resides. Got the following bug notice when deleting all tracks in the song but the first used track, and running the script:
Sorry for the confusing descriptions, I need sleep.
I have a little question about this. It’s nice to use a GUI like this to modify a sample that is playing. Can these variations of a loop be committed into the pattern as pattern-data? Can these be “read” from the current pattern, modified and written back in? Would I be able to have 10 patterns which all use the same drumbeat, but each pattern having a different bunch of colored tiles and then ditch the whole GUI/script and still retain the modifications in the patterns themselves?
since the API allows for offline/realtime rendering, could this modification of a beat also be rendered into a new instrument as a loop? will i be able to use the GUI to switch between this newly-rendered-sample and the previous-unmodified-sample, without having to close & re-open the GUI?
could this also be used in such a way that you already have a drum pattern ready, and just import that to the GUI and then be able to control which drumhits are reversed and which aren’t, without the gui caring that it’s a 512 row pattern and there’s about 43 drumhits overall in a certain track of the pattern, so the gui would show 43 buttons ( just as an example ).
also, could there be an easy cloning method where if you have a nice 16 cell beat going, you might want to enlarge the gui to 32 cells and copy the 1-16 cells to 17-32 cells to make some additional modifications and then dump this stuff back to the patterndata? so a 16 row pattern would become a 32 row pattern in light of this modification? or the second 16 rows would be placed to the next pattern? (so patterns could be, for instance, 48 rows in length, but the beat you’re modifying over the course of the whole song is a 32 row/cell beat, and it just keeps playing over the course of the whole song, so first 32 rows would be played 1-31, then the next 32 rows would be played 32-48-15 … etc. for more fluid drumprogramming? i think this is somewhat similar to what Joule was thinking of doing a while ago (with pattern templates or what was his name for it… instrument table? anyway…))
is there a good n.o.w. video where you show the stuff that hasn’t dawned on it’s users, please?
but yes, a workflow “done right” will change quite a bit, and in non-obvious ways, too!
feature request: when changing from pattern1 to pattern2, update the gui to conform to pattern2 stuff, i.e. if you open the gui once, it follows your selected track + selected pattern, and changes accordingly to which pattern you are in (i dont much care about which track you’re in, cos that’s a completely different can of worms)
btw, maybe just a status line in the gui which says which pattern you are editing. maybe that’s easier to do than auto-read.
i see that a 4ppqn some cells will sometimes end up (at 114bpm) staying green even if they shouldn’t.
i’m trying to replicate the notifier bugs i’m getting but not sure how to get them going, it seems related to clicking the cell that’s already playing, and also i went and did a hatchet job on the pattern data by deleting random notes and lines and sometimes i get a notifier error when it’s trying to access a note column which has no data in it (or something). i’m trying to make this wreck up in replicable ways but so far no luck
okay, if you have the gui open and create a new song, and close the gui and run 4ppqn, you’ll constantly get an error such as this:
std::logic_error: 'trying to access a no longer available pattern_line note column.'
stack traceback:
[C]: ?
[C]: in function '__index'
[string "do..."]:12: in function
./actions.lua:60: in function 'update_cell_in_pattern'
./actions.lua:36: in function 'populate_pattern_with_defaults'
main.lua:82: in function 'start_celldevice'
main.lua:111: in function <111><br>```
<br>
<br>
<br>
one more request: please provide a way of opening the gui up (i get an error after it slices up a sample to the pattern, and then can't actually ignore the error and start slamming in reverses, repeats etc.<br>
<br>
<br>
<br>
ok, closing a 512 row pattern resultant 4ppqn gui will actually kill renoise <img src="https://files.renoise.com/forum/emoticons/default/smile.gif" class="bbc_emoticon" alt=":)"></111>
This was the result of running the 4ppqn thing a couple of times (first at 32 rows, then 64, then 128, then 256) - i finally got it to start chopping, only for it to then die in the middle of it.
it’s not an amazingly complex wav or anything. so i decided to just ditch the auto-slicing and just use this little script which chops the sample to either 4 slices, 8, 16 or 32 slices…
so, after re-slicing to 16 equal parts, i ran the 4ppqn only to get loads and loads of rows full of the loop. the gui opens, i switch to 64 rows (that’s all i need of the loop to hear all of it, the rest seemed useless extra info and some silences, too) - only to realize i have no way of refreshing the gui to only show 64 rows worth of stuff instead of the 256 rows i needed to have to be able to chop them.
anyways!
another one, if there’s a bunch of mutes in cells (note-off in the pattern-data, it seems) and you start slapping in repeats on those cells, the note off will stay there, instead of being killed off by the logic of “cell has mute cell has trigger -> trigger takes presedence and pattern-row column is reset to the actual note instead of noteoff”
btw, while playback was on, i was clicking in some triggers and got the same note_column not there error, which was weird (i had 8 cells with mute, and was clicking in trigger to each of the 8 cells and one of them shot me the error)… i still can’t seem to figure out where the notecolumn not there error even comes from.