Sequencers are, by definition, all about controlling sets of events. Having unlocked the mysteries of time — the clock and timing data you need to keep your sequencer in sync — Peter Dines now tackles how a table can organize a sequence of events or steps. Take it away, Chef! -PK
Here’s the next puzzle piece in our series dissecting the guts of the Roux step sequencer macro – the event table. As you might guess from the name, the event table receives and sends event rather than audio data.
By default, the event table holds values between zero and one, and I know I bang on about this lot, but that’s a super convenient range because it’s so easy to scale. Ed.: It’s what’s called a “normalized” range for this reason – and easy to scale, indeed. Want 0 to 127, for instance? Just multiply by 127.) -PK We dealt with scaling the output in the last post on the Roux sequencer.
Notice that the X size of the table is 64, which I reasoned was a large enough length to hold drum machine and modulation sequences. The Y size is set to 1. That means the table only holds one sequence at a time. Given a larger Y size, each Y value is like a separate row holding an X range or data sequence, and that’s how a lot of instruments have been built in the past. However, we’re using snap value modules to store different sequences per snapshot, so we won’t be using the extra rows. Some builders are still keen on using the Y range of the table to store different sequences in order to shift rapidly between them; that’s a design choice you might want to explore too, especially if you’d like to change data sequences without having to change snapshots.
Now let’s look at the input ports on the event table. The first one is the RX port, which determines which of the 64 values in the table will be read. We’re using a clock macro to repeatedly tick up through the sequence of values, and the clock connects here.
We’re not using the RY port to select a row in the table, since it only has one row. So on to the R port. An event received here reads the current value in the sequence and sends it out of the event table. So if the cursor is at the third position in the sequence, an event here reads out the third value.
The WX and WY ports are the complement of the RX and RY ports – they select where a value will be written rather than read. And where does this value come from? You send it to the In port right below. This value can come from anywhere – from mouse movement, from MIDI data, from the OSC (OpenSoundControl) modules and so on. If you’re ambitious, you could use an Arduino electronics platform to read data from sensors and populate the table with those values.
The last connected port on the event table in this macro is the XR or X range input. This selects how much of the sequence will be visible. If you’re only using 16 out of the 64 possible values in the sequence, a value of 16 here will “zoom in” so only those 16 are visible. In this sequencer macro, the same control that sets the sequence length also sends the zoom value to this port.
If you ever get confused working with the event table, remember to hover your mouse over the input ports for a hint.
Next time we’ll look at the snap value array module and how the data gets from your mouse into it and then into the table.