Hey hey please help me build a sequencer without event table display.

Bolle
Bolle Member Posts: 349 Pro
edited July 2022 in Building With Reaktor

Hi all!

So: i'm building my first sequencer.

This is what i got so far from reading the manual and applying some of my own little ideas. The Sync Rate macro is nothing more than a bunch of A = B comparitors resulting in the sync rate and display.

What it does now is count. Now i need it to not count untill the end of time, but to 32 and back to 1. I also need to be able to adjust that step count/sequence length with a knob.

One extra extra feature i will try to incorporate in this sequencer is that the GUI will automatically switch between 16 or 32 step sequencer, depending on if the step count is lower or higher than 16. I'm thinking stacked macros? Hmmm.

As far as i can tell, build tutorials in the R6 manual all include using an Event Table and its display. I don't want no big ol' display in my GUI. Just blinky LEDs and push buttons.

If i can get it to loop 32 steps and adjust the step count (4,8,16,24,32 for example) with a knob that would be super awesome. With the resulting numbers i should be able to control everything i need to.

If you can point me in the right direction, i will be most grateful.

This is for a thing that will eventually end up in the UL for everyone to enjoy.

Greetings and thank yous,

Bolle

Comments

  • bolabo
    bolabo Member Posts: 97 Advisor
    edited July 2022

    Hey Bolle

    A lot of sequencers use a clock source and a counter to count the clocks, but your method of using a continuous position signal and modulo is really good, and has lot's of advantages in terms of being able to synchronise the playback to the host.

    In order to get it to 'wrap' back around to zero you just need to use another modulo module, just use the 'Mod' port for the wrapping, something like this:


  • Bolle
    Bolle Member Posts: 349 Pro

    BOOM that is it! Totally great.

    My goal is to use this for the 32 step 303 i posted in the other thread. There's a few hurdles still to come, but having this wrap function allows me to control (almost) everything i need in this instrument.

    I'll leave a word of credit with the upload when i'm done building and designing.

    Thanks so much, David!

    Greets,

    Bolle

  • Quietschboy
    Quietschboy Member Posts: 45 Helper
    edited July 2022

    Hi Bolle,

    building the clock is only the halth truth of a complete sequencer. You made the correct approach to sync to Host clock by Song Position 96e. If the seq should be able to run standalone too, i would add a switchable option to clock it internally (SR - Sample Rate as finest and only possible source). Look at the Blocks Clock Block.

    The other half is the informational storage per step of Pitch values and Accent values in case of the 303. And at this point the Event Table is great. If you would try it without Event Table, you maybe would end up with Value Modules for each step, driven by a Router 1->M. With this approach, all Value Modules of course represent only one Pattern. With the Event Table, you could store a lot of Patterns in a clear way. I.e. havings steps on X-axis and patterns on y-axis.

    You can simply deactivate the Event table´s Panel representation! I usualy use Event Tables to just hold some data, mostly as a shared memory from one Table to another Table. Unluckily Event Table´s data can´t be shared into Core...

    The Event Table holds it´s data over an initialization (in contrast to Value Modules), and with correct settings, the data can be saved with the Ensemble.

    EDIT: If you want to add Snapshot capability for patterns, things get a little bit more complex but these are absolutely solvable (parallel Snap Array, i.e.).

  • Bolle
    Bolle Member Posts: 349 Pro
    edited July 2022

    Doesn't Song Position sync to Reaktor's native clock in standalone? The few tests i've done don't show any immediate time deviation. I could be totally wrong though (and probably am). Another thing i'm thinking is that i would want the ability for people to midi sync this 303/Reaktor to external devices. Both sending and receiving clock info. As long as it doesn't take up too much GUI space.

    Event Tables (to me) are complicated, but probably doable if i can get some help. Basically, what you're describing is exactly what i need. Storing one or multiple patterns in a snapshot, with pitch, glide and accent values stored in all the right places and editable.

    I'll spend some more time on this project next weekend. I guess i better learn how to use Event Tables. 😁

    Greets,

    Bolle

  • Bolle
    Bolle Member Posts: 349 Pro

    So: i'm incorporating Event tables. I think three. One for 0 -> ON events, one for velocity Accents and one for pitch glide events.

    The thing is, this would be a LOT easier using the Event Table drawable displays. But i don't want that. I want a traditional 303 look.

    Like so:

    But i have no idea yet how to set up 32 single buttons to affect 0... 0.5 events, add another 0.5 for accents AND set glide events for every step AND send all of them into every one of the three Event Tables to set position and values for each step.

    Headaches! If anyone has any ideas about how to handle such a scenario, you are most welcome to share. And i most grateful. This is going onto the UL so credits are yours if i can get this finished in a way that is pleasing to work with.

    Greets,

    Bolle

  • Bolle
    Bolle Member Posts: 349 Pro
    edited July 2022

    Don't mind the knobs for the Event Table. They're there to test what every port does.

  • Bolle
    Bolle Member Posts: 349 Pro
    edited July 2022

    Imma have a look at some other sequencers. See if i can find some inspiration.

    Greets,

    Bolle

  • Quietschboy
    Quietschboy Member Posts: 45 Helper
    edited July 2022

    Sorry for my late response, Bolle, too much around..

    • In Standalone Mode, the Song Position (and tempo) is of course synced to Reaktor´s clock, beeing the Host at that moment. My statement was misleading. What i meant was if you want your 303 beeing the clock master (as a standalone Instrument), then you would need to build up your own clock and position.
    • For Midi sync you should use Reaktor´s sync options if Reaktor beeing standalone or the DAW´s sync options.
    • Event Tables have 2-dimensions. That means, if you want to store several 303-Patterns with several parameters for several steps in it you could do it in two ways. Both ways use only one single Event table!:
    • A) Steps on X, Parameters like Gate, Pitch, Glide, Accent on Y. Then you need 4 Y-columns for that 4 Parameters for each pattern. So when the first Pattern starts on Y=0, the next Pattern starts on Y=0+4 or Y=0+n (with n=Pattern number starting at 0).
    • B) Steps and Parameters and Pattern folded into a 1-dimensional Array. That means using only Y=0 of the Event Table. Everything is stored in one X-Line: (Pattern1, Step1) Gate, pitch, Glide Accent, (Step2) Gate, Pitch, Glide, Accent,....(Step32) Gate, Pitch, Glide, Accent, (Pattern2, Step1) Gate, Pitch, glide, Accent, ........ etc. This approach would at least be necessary if you want to store and read to/from a Snap Value Array! It is 1-dimensional, only. But, as you see, it is possible to store sveeral parameters and several patterns in a Snap.

    I am not very familiar with building sequencers of this type. Maybe it might be an advantage doing it directly into Snap Value Arrays instead of Event Tables. Mabe it is worth to drive them both in parallel. I can´t answer that for now.

    But: i doubt if it is really an advantage for user expierience to store multiple patterns in single Snapshots. It would sound more comfortable to me having the patterns globally available over all Sound-Snaps. OK, at least a pattern number should be saved with a Snap.. But this is on yourself, of course ;-)

    For your personal beginning, i recommend to just store a single pattern and sound per snap. You can pimp this later on ;-)

    However, if you go into Event Tables or Snap Value Arrays or both, the event order and Iteration are absolutely necessary elements of your programming. No matter which kind of Memory you use, the read and write techniques are similar. Notice that the Snap Value Array have an "self-iteration" option on start-up (Ensemble Load or turning Reaktor On (Initialization) or Snap change). At this time, the Array iterates itself over all cells and gives them out. This can be a nice feature to update the downstream structure, i.e. staus lamps! Else you have do do that iteration yourself.

    Edit2: Sorry Bolle that i forgot to appreciate your very, very nice tunes in Panel design! It is absolutely great!

  • Quietschboy
    Quietschboy Member Posts: 45 Helper
    edited July 2022

    "But i have no idea yet how to set up 32 single buttons to affect 0... 0.5 events, add another 0.5 for accents AND set glide events for every step"

    I assume you want to representate these three parameters on one LED per step? Look at the Original and the rest is math. I suggest to always use 0-1 values for digital and analog parameters and to convert them when necessary.

    Just by curiosity: is Glide representated in the hardware?

    EDIT: Ah, ok, maybe i got your problem? Is it about updating the lamps when editing steps? In general, you need to update the lamps and the storage (Event Table or whatever) both in parallel when editing. In the same manner, you need to merge update input from user and recall input from event table before the LEDs or other Panel representations.

  • Bolle
    Bolle Member Posts: 349 Pro

    Thank you so much for your informative and thoughtful replies. There's a lot for me to try out and test.

    I think I might have an idea of the LED representation of the 3 states (gate, accent and glide), by layering them on top of the running sequencer LEDS with slight transparency. So that they mix colors when they're all turned on. I'll try it out over the weekend.

    Thanks again for your kind and helpful replies. I have a lot to think about regarding this project.

    Greets,

    Bolle

Back To Top