i've been thinking about writing a sequencer for the yocto
i checked the current FW source code, wtf.. arduino? i don't want to learn this uino thing right now
a better option would be to start from zero
there are some things which i don't like, like:
- the eeprom being i2c (which is slow, plus i'm not familiar with that interface)
- the button debouncing is bad/broken
- the way the sync mode (internal/dinsync/midisync) is put on the function selector like with the x0xb0x stock FW this is annoying
these are somewhat fixable - there's a 16KB RAM on this chip, so (i haven't actually calculated it but) most of the sequencer memory can be thrown into the RAM and periodically stored in the eeprom, button debouncing can be fixed, the function selector could be reorganized and sync mode can be a global setting
unfortunately there are a few things which are harder to overcome:
- the lack of buttons
- a fast way to reflash the chip as part of the developement process (frequent recompilation and testing)
since the yocto has only MIDI as a serial communication, i assume the bootloader is flashed via sysex
and i guess it's borrowed from one of the existing places which provide a sysex-enabled avr bootloader, i've heard bad things about one of those, i bet it's not buffered and packets break unless you intentionally slow down the sysex transmit, as if midi isn't already slow enough for this job
i've put sysex onto an stk500v2-based avr bootloader already as part of another project, and it's buffered there, doesn't require special configuration, the data can be sent without additional pauses/delays
but changing the bootloader is practically not an option for those who already have the chips (a programmer is required)
-------------------------
so there are a few options i can think of
- i could (since i have a programmer) change the bootloader on mine, just to make it easier (if possible) to reflash frequently
- rewrite the thing in C or maybe C++ but minus those uino libraries
- reorganize the function selector and maybe the roles of some buttons
--- remove the sync mode from the selector
- abstract away the scary ugliness of the i2c eeprom
however, given the very limited amount of buttons, i have no real idea how to make accessible all of the functionality i'd like to put into a drum sequencer
to solve this, what's needed is a carefully crafted plan of features and functionalities that should be featured in this thing, which requires some tough decisions to be made, dillemas and compromises
i'm not familiar with the 808 sequencer, and i haven't even used the yocto sequencer too much yet, i've only figured out how to make a pattern, and use the mute function in pattern-play mode
so if anyone has time to think about a detailed plan of features and modes it'll be a good starting point
the stuff i'd personally like to have in it are:
- live pattern recording by tapping the instrument buttons
- shuffle
Is still someting going on here? Any dev-activity?
I would not add shuffle to the firmware.
- shuffle can be had by clocking via DIN Sync using an external device shuffling the clock
- there is no shuffle control on the unit
The 808 style handling is important, I think it's much better to manipulate the incoming clock than messing with the usability.
- shuffle can be had by clocking via DIN Sync using an external device shuffling the clock
- there is no shuffle control on the unit
The 808 style handling is important, I think it's much better to manipulate the incoming clock than messing with the usability.
Hi antto - thanks in advance for your detailed post.
And also, how would you like to have the sync mode selection to work? I haven't played around with it too much, but I feel about the same as you do... not practical.
Anyway, I'll try to summarize what I remember:
- MIDI SysEx pattern dump (single pattern and the whole "machine state")
- roll function synced when MIDI sync is on (actually not working)
- tap-record function
I guess some more could be added... and other ppl will for sure add their suggestions as well.
I'd be available for testing purposes as well
BR,
Flavio.
Can you explain what you mean with "button debouncing"?antto wrote:i've been thinking about writing a sequencer for the yocto
i checked the current FW source code, wtf.. arduino? i don't want to learn this uino thing right now
a better option would be to start from zero
there are some things which i don't like, like:
- the eeprom being i2c (which is slow, plus i'm not familiar with that interface)
- the button debouncing is bad/broken
- the way the sync mode (internal/dinsync/midisync) is put on the function selector like with the x0xb0x stock FW this is annoying
And also, how would you like to have the sync mode selection to work? I haven't played around with it too much, but I feel about the same as you do... not practical.
Would you be able to overcome this by using "double-tap" or "double-click" functions? Or button combinations?these are somewhat fixable - there's a 16KB RAM on this chip, so (i haven't actually calculated it but) most of the sequencer memory can be thrown into the RAM and periodically stored in the eeprom, button debouncing can be fixed, the function selector could be reorganized and sync mode can be a global setting
unfortunately there are a few things which are harder to overcome:
- the lack of buttons
Whatever brings improvement, I guess would be wellcome[...]
so there are a few options i can think of
- i could (since i have a programmer) change the bootloader on mine, just to make it easier (if possible) to reflash frequently
- rewrite the thing in C or maybe C++ but minus those uino libraries
- reorganize the function selector and maybe the roles of some buttons
--- remove the sync mode from the selector
- abstract away the scary ugliness of the i2c eeprom

I have already input some missing features I'd like to see in the Yocto, there are some posts of mine around here.[...]
the stuff i'd personally like to have in it are:
- live pattern recording by tapping the instrument buttons
- shuffle
Anyway, I'll try to summarize what I remember:
- MIDI SysEx pattern dump (single pattern and the whole "machine state")
- roll function synced when MIDI sync is on (actually not working)
- tap-record function
I guess some more could be added... and other ppl will for sure add their suggestions as well.
I'd be available for testing purposes as well

BR,
Flavio.
It looks like things are moving around here! This is great!
There is two selectors on the Yocto the Pattern selector and the Instruments selector. The Pattern selector has two "step/slot" available and the Instrument Selector has one available marked as N.C . Plus we could use the buttons Reset/Mute and Roll/End and Shift in combination with others buttons to command extra features.
Also I won't recommend to change the Pattern Selector system because I think it's pretty simple to use and it's quite logical from my point of view.
But I agree there is some features missing.
Flavio already started a list I would add the groove shuffle option, to be able to edit a pattern sync in midi or din sync, to chain several patterns to be played in a row (look what Arturia did for the Beatstep Pro https://youtu.be/whR7R0o2ZeA?t=3m17s ).
I think we need to draw a map or diagram of all the functions (see the manual of the kiwitechnics products http://kiwitechnics.com/index_htm_files ... 20v100.pdf ) it could be really useful for atto and others coder/dev to work with!
There is two selectors on the Yocto the Pattern selector and the Instruments selector. The Pattern selector has two "step/slot" available and the Instrument Selector has one available marked as N.C . Plus we could use the buttons Reset/Mute and Roll/End and Shift in combination with others buttons to command extra features.
Also I won't recommend to change the Pattern Selector system because I think it's pretty simple to use and it's quite logical from my point of view.
But I agree there is some features missing.
Flavio already started a list I would add the groove shuffle option, to be able to edit a pattern sync in midi or din sync, to chain several patterns to be played in a row (look what Arturia did for the Beatstep Pro https://youtu.be/whR7R0o2ZeA?t=3m17s ).
I think we need to draw a map or diagram of all the functions (see the manual of the kiwitechnics products http://kiwitechnics.com/index_htm_files ... 20v100.pdf ) it could be really useful for atto and others coder/dev to work with!
yes, a visual diagram of what kind of functionality should be available is great, it's exactly what i had in mind
it doesn't even have to be pretty like the kiwi one
it'll help visualise the whole thing and any obvious flaws will be seen there first, and hammered till everything looks like it makes sense
then, at that point implementing the functionality would be easier because there will be a plan/diagram which is well thought out
FlavioB: yes, tap-record mode is another thing i want to put, because sometimes it's easier to just hit the button corresponding to the drum at the right time, than to switch the instrument selector.. etc etc..
debouncing: when a tact switch is pressed - it usually bounces for some short time before it firmly lays down and makes proper electrical contact, this results in a short burst of noise, when the microcontroller polls this (the pin is a digital input) it will read it as pressed, then as released, then as pressed again.. during the noise. that's called bouncing and it's not good
to solve this issue one way is to put smoothing capacitors on each button, but this is overkill if you got many, the other way is to do it in software
the yocto (and many many other devices) does it in software, but the algorithm it uses is obviously not very good, especially when i edit a pattern and try to activate a few steps simultaneously.. i have to press each button sepparately which sux
sync mode: the x0xb0x also had the sync mode as part of the mode selector, i hated this
i mean.. it results in having the same mode at multiple positions, where the only difference is the sync mode
example:
- pattern play (master)
- pattern play (slaved to dinsync)
- pattern play (slaved to midisync)
- pattern edit (master)
- pattern edit (slaved to dinsync)
- pattern edit (slaved to mdisync)
... etc
it gets even worse when they are scrambled around the selector
so, in the x0xb0x i threw all this in the garbage, and i have:
- pattern edit
- pattern play
- track play
- track edit
- settings
... etc
and you can just switch to the mode you want, without thinking about sync
you can change the actual sync mode (master, slave, etc..) from settings mode
sadly this requires re-labeling the selector, but it improves the usability IMO
as for the lack of buttons: surely we have just a few options
i prefer button combinations, i don't like the idea of double-clicking a button too much, so i'd only use that if i really need to
sysex dump is doable, it's a matter of deciding how the sysex packet will be structured and making it easy to extract a specific pattern quickly and importing a pattern with the option to just hear it before deciding whether you want to actually store it in the yocto memory or not
i'm not familiar with the roll function, i know that it has to do with repeatedly hitting the drum, but no idea in what conditions, i remember the 909 had something like that, flam or so, but i'm not sure if this is the same thing
it doesn't even have to be pretty like the kiwi one
it'll help visualise the whole thing and any obvious flaws will be seen there first, and hammered till everything looks like it makes sense
then, at that point implementing the functionality would be easier because there will be a plan/diagram which is well thought out
FlavioB: yes, tap-record mode is another thing i want to put, because sometimes it's easier to just hit the button corresponding to the drum at the right time, than to switch the instrument selector.. etc etc..
debouncing: when a tact switch is pressed - it usually bounces for some short time before it firmly lays down and makes proper electrical contact, this results in a short burst of noise, when the microcontroller polls this (the pin is a digital input) it will read it as pressed, then as released, then as pressed again.. during the noise. that's called bouncing and it's not good
to solve this issue one way is to put smoothing capacitors on each button, but this is overkill if you got many, the other way is to do it in software
the yocto (and many many other devices) does it in software, but the algorithm it uses is obviously not very good, especially when i edit a pattern and try to activate a few steps simultaneously.. i have to press each button sepparately which sux
sync mode: the x0xb0x also had the sync mode as part of the mode selector, i hated this
i mean.. it results in having the same mode at multiple positions, where the only difference is the sync mode
example:
- pattern play (master)
- pattern play (slaved to dinsync)
- pattern play (slaved to midisync)
- pattern edit (master)
- pattern edit (slaved to dinsync)
- pattern edit (slaved to mdisync)
... etc
it gets even worse when they are scrambled around the selector
so, in the x0xb0x i threw all this in the garbage, and i have:
- pattern edit
- pattern play
- track play
- track edit
- settings
... etc
and you can just switch to the mode you want, without thinking about sync
you can change the actual sync mode (master, slave, etc..) from settings mode
sadly this requires re-labeling the selector, but it improves the usability IMO
as for the lack of buttons: surely we have just a few options
i prefer button combinations, i don't like the idea of double-clicking a button too much, so i'd only use that if i really need to
sysex dump is doable, it's a matter of deciding how the sysex packet will be structured and making it easy to extract a specific pattern quickly and importing a pattern with the option to just hear it before deciding whether you want to actually store it in the yocto memory or not
i'm not familiar with the roll function, i know that it has to do with repeatedly hitting the drum, but no idea in what conditions, i remember the 909 had something like that, flam or so, but i'm not sure if this is the same thing
Hi antto - it's starting to roll here, and I'm in! 
Your idea of hearing (playing) an about-to-import pattern, before writing it into Yocto's memory is interesting: if you have enough memory for this feature, why not. Anyway, it's not a priority to me.
So, now... what are the next steps and who'll be doing them?
BR,
F.

Never seen that from Kiwisix but it looks great - sadly I'm not good at such diagrams, so I have to leave it to others (maybe the one who will be somehow "leading" this development?!).antto wrote:yes, a visual diagram of what kind of functionality should be available is great, it's exactly what i had in mind
it doesn't even have to be pretty like the kiwi one
it'll help visualise the whole thing and any obvious flaws will be seen there first, and hammered till everything looks like it makes sense
then, at that point implementing the functionality would be easier because there will be a plan/diagram which is well thought out
I understand - like the original 808. Nice.FlavioB: yes, tap-record mode is another thing i want to put, because sometimes it's easier to just hit the button corresponding to the drum at the right time, than to switch the instrument selector.. etc etc..
Ah, ok! Now I understand and I also pretty well know, what you're talking about: it also happens to me that I have to activate steps individually...debouncing: when a tact switch is pressed - it usually bounces for some short time before it firmly lays down and makes proper electrical contact, this results in a short burst of noise, when the microcontroller polls this (the pin is a digital input) it will read it as pressed, then as released, then as pressed again.. during the noise. that's called bouncing and it's not good
to solve this issue one way is to put smoothing capacitors on each button, but this is overkill if you got many, the other way is to do it in software
the yocto (and many many other devices) does it in software, but the algorithm it uses is obviously not very good, especially when i edit a pattern and try to activate a few steps simultaneously.. i have to press each button sepparately which sux
[...]sync mode: the x0xb0x also had the sync mode as part of the mode selector, i hated this
OK - I'm interested to read on how you'd implement this with the least change necessary (re-labelling wouldn't be nice for me, but if that'd be the only way...)and you can just switch to the mode you want, without thinking about sync
you can change the actual sync mode (master, slave, etc..) from settings mode
sadly this requires re-labeling the selector, but it improves the usability IMO
Combinations are ok, personally I'm happy with the double-clicks I can work with on my TR-606 with Quicksilver mod.as for the lack of buttons: surely we have just a few options
i prefer button combinations, i don't like the idea of double-clicking a button too much, so i'd only use that if i really need to
Interesting would be here to have it like on the QS-606 (the above mentioned Quicksilver-modded TR-606): a full system dump, with all what is configured (pattern contents of course, but also other things, like maybe MIDI channel), along with the ability to manually dump single patterns.sysex dump is doable, it's a matter of deciding how the sysex packet will be structured and making it easy to extract a specific pattern quickly and importing a pattern with the option to just hear it before deciding whether you want to actually store it in the yocto memory or not
Your idea of hearing (playing) an about-to-import pattern, before writing it into Yocto's memory is interesting: if you have enough memory for this feature, why not. Anyway, it's not a priority to me.
707 has this thing called "flam", but that's not the "roll" function. Roll is simply repeatedly hitting the drum (it makes most sense to me for snares) in regular intervals. For example, on my QS-606 you can individually activate the roll function (you enable roll to act on SD and BD for example), then you press one of the switches for quarter hits, eights, sixteenth and so on... I don't know if I've been clear enough - I could eventually make a video or you check on YouTube for the official Social Entropy videos.i'm not familiar with the roll function, i know that it has to do with repeatedly hitting the drum, but no idea in what conditions, i remember the 909 had something like that, flam or so, but i'm not sure if this is the same thing
So, now... what are the next steps and who'll be doing them?
BR,
F.
Hi again...
You can get an idea of what's annoying me from following posts:
viewtopic.php?f=17&t=604
"I'm slaving my Yocto from a ZAQuencer and with DinSync the pattern simply continues, doesn't restart at beat 1.
Is this the default behavior on the Yocto?
Can this be modified (hard- or software)?"
viewtopic.php?f=17&t=924
viewtopic.php?f=17&t=175
F.
You can get an idea of what's annoying me from following posts:
viewtopic.php?f=17&t=604
"I'm slaving my Yocto from a ZAQuencer and with DinSync the pattern simply continues, doesn't restart at beat 1.
Is this the default behavior on the Yocto?
Can this be modified (hard- or software)?"
viewtopic.php?f=17&t=924
viewtopic.php?f=17&t=175
F.
It would be great if the Yocto could be midi sync'ed/start in PT Edit Mode also and not just PT Midi. It's a bit annoying to always switch back to PT Midi when sync to a daw.
I think this is somehow going into the same direction antto is suggesting to mod the Yocto: having a separate selector for the sync method (MIDI, internal, Din Sync) and another one for the mode would be nice...Ele wrote:It would be great if the Yocto could be midi sync'ed/start in PT Edit Mode also and not just PT Midi. It's a bit annoying to always switch back to PT Midi when sync to a daw.
Let's see what he's gonna do/suggest!
F.
Cool to read this thread, I was wondering how we can support some geeks to program new softwares versions ? At least to reach the original behavior 808 would be great (as for example "tap programming"
Cheers to all,

Cheers to all,