Stupid fat fingers on phone keyboard hahapinki wrote:A slight exaggeration....3, not 5!bungle wrote:1 month shy of 5 years, it really has to be the greatest plugin ever made at this point lol well either that or the biggest waste of developer time ever, i dont even dare to think what sequent could have been with this much development time !!
(the product formerly known as) Epoch
-
- KVRAF
- 1889 posts since 12 Mar, 2004
Duh
-
- KVRAF
- 2678 posts since 25 Aug, 2003 from Bournemouth, UK
It just FEELS like 5 years.
It's a lot more complicated with Epoch - I've probably spent six months working on various lock-free and message passing routines over the past few years - but it means all changes can be made without interrupting the audio. It also deals with things like reclamation, (ie, how do we know that a module is safe to delete); a doubly-complicated issue because modules have both real-time and non real-time elements (and by that, I don't mean that the modules don't run in real-time, it's just that the non real-time elements - the UI, the arrangement, the scenes - exist on a different thread to the real-time audio thread.)
Once this is out of the door, if anyone is interested, I could take the time to write up the details of how it all works. It's very clever, if I do say so myself, although not necessarily pioneering to those who've already studied the literature. Still, with these routines now coded, I'd be happy to never have to think about this ever again; it's one of the most difficult areas of code I've ever tackled.
And apologies; I've nearly put myself to sleep just writing that, so I can't imagine how boring it must be for everyone else to have to read it!
It's actually fairly boring, unless you're interested in the technical details of lock-free structures, but it's the method that all our plug-ins now use to communicate changes from one system to another. In the case of Sequent, for example, parameter change may be due to a preset loading, or tweaking the UI's rotary control, or the pattern changing, via MIDI or even (future teaser) via OSC. This system collates all the messages together in a lock-free way, which guarantees - absolutely ensures - that it will be handled in a fixed amount of time. It's essential if you want proper real-time operation.? ? ? wrote:What exactly is this? Can you explain in more detail please? Sounds interesting.colin@loomer wrote: I developed a lock-free event system for dealing with real-time parameter changes and interface synchronisation, which has already found its way back into Sequent.
It's a lot more complicated with Epoch - I've probably spent six months working on various lock-free and message passing routines over the past few years - but it means all changes can be made without interrupting the audio. It also deals with things like reclamation, (ie, how do we know that a module is safe to delete); a doubly-complicated issue because modules have both real-time and non real-time elements (and by that, I don't mean that the modules don't run in real-time, it's just that the non real-time elements - the UI, the arrangement, the scenes - exist on a different thread to the real-time audio thread.)
Once this is out of the door, if anyone is interested, I could take the time to write up the details of how it all works. It's very clever, if I do say so myself, although not necessarily pioneering to those who've already studied the literature. Still, with these routines now coded, I'd be happy to never have to think about this ever again; it's one of the most difficult areas of code I've ever tackled.
And apologies; I've nearly put myself to sleep just writing that, so I can't imagine how boring it must be for everyone else to have to read it!
Architect, the modular MIDI toolkit, beta now available for macOS, Windows, and Linux.
-
- KVRAF
- 1629 posts since 11 Dec, 2005 from Malmö, Sweden
Nah. As a developer in other areas of computing I'm very interested to read more about it. Maybe start another thread or if you have a blog where you out some stuff on...?
Thanks for the explanation btw.
Thanks for the explanation btw.
-
- KVRAF
- 2678 posts since 25 Aug, 2003 from Bournemouth, UK
No; what you actually hear is me swearing angrily at installer scripts and Linux virtual machines.
I can't remember who first brought up the subject of micro tuning, but I must admit I've become quite taken with various MIDI tuning presets. My current micro tuner patch, as simple and minimal as I suspect this could be, consists of just five modules (plus some constants, which define the various pitch bend ranges for each pitch class; a MIDI input module, and a MIDI output module.)
MIDI In goes to a Note Priority module [*1], which then goes to an Unpack Note module [*2]. We then take the unpacked pitch value, and perform modulo 12 arithmetic on it [*3], essentially producing a CV stream with 0 for C, 1 for C#, 2 for D, etc, up to 11 for B. This then controls a 16:1 switch (although we need only twelve of the 16 inputs, there is no harm nor cpu usage in leaving the unused inputs unconnected), where inputs 0 to 11 are connected to constants which dictate the amount of pitch-bend per pitch class.
This value is routed into a Pack Pitch Bend module [*4], which takes the trigger and channel from our Unpack Note and the value from the multiplexing switch. We then connect both the MIDI input and Pack Pitch Bend to the MIDI output module. Result: a simple MIDI micro tuner.
For bonus points, you may also want to use an Order MIDI [*5] module before the MIDI output to ensure that the pitch-bend messages occur before the note ons.
*1 Which takens a potentially polyphonic MIDI stream and produces a monophonic MIDI stream of either the lowest, highest, or last MIDI note. This isn't the only way of monophonic-ising polyphonic MIDI, but it's generally the one you'll use most.
*2 This converts a MIDI note to discrete trigger, gate, pitch, velocity, and channel CV streams. (There is also a Pack Note which takes the trigger, gate, pitch, velocity, and channel, and convert them to MIDI notes. The fun occurs when things are wired between these two.)
*3 A modulo module has two inputs, a and b, and produces a single value equal to the remainder when a is divided by b.
*4 Takes a trigger, value, and channel, and produces a MIDI pitch bend message.
*5 Order MIDI has two inputs and one output, and guarantees that MIDI messages to input a are processed before MIDI messages to input b. You can cascade them if you need to order more than two streams. A very rarely used module, but handy for those occasions when you have two MIDI message occurring at the same logical time and absolutely need one message to be handled before the other.
I can't remember who first brought up the subject of micro tuning, but I must admit I've become quite taken with various MIDI tuning presets. My current micro tuner patch, as simple and minimal as I suspect this could be, consists of just five modules (plus some constants, which define the various pitch bend ranges for each pitch class; a MIDI input module, and a MIDI output module.)
MIDI In goes to a Note Priority module [*1], which then goes to an Unpack Note module [*2]. We then take the unpacked pitch value, and perform modulo 12 arithmetic on it [*3], essentially producing a CV stream with 0 for C, 1 for C#, 2 for D, etc, up to 11 for B. This then controls a 16:1 switch (although we need only twelve of the 16 inputs, there is no harm nor cpu usage in leaving the unused inputs unconnected), where inputs 0 to 11 are connected to constants which dictate the amount of pitch-bend per pitch class.
This value is routed into a Pack Pitch Bend module [*4], which takes the trigger and channel from our Unpack Note and the value from the multiplexing switch. We then connect both the MIDI input and Pack Pitch Bend to the MIDI output module. Result: a simple MIDI micro tuner.
For bonus points, you may also want to use an Order MIDI [*5] module before the MIDI output to ensure that the pitch-bend messages occur before the note ons.
*1 Which takens a potentially polyphonic MIDI stream and produces a monophonic MIDI stream of either the lowest, highest, or last MIDI note. This isn't the only way of monophonic-ising polyphonic MIDI, but it's generally the one you'll use most.
*2 This converts a MIDI note to discrete trigger, gate, pitch, velocity, and channel CV streams. (There is also a Pack Note which takes the trigger, gate, pitch, velocity, and channel, and convert them to MIDI notes. The fun occurs when things are wired between these two.)
*3 A modulo module has two inputs, a and b, and produces a single value equal to the remainder when a is divided by b.
*4 Takes a trigger, value, and channel, and produces a MIDI pitch bend message.
*5 Order MIDI has two inputs and one output, and guarantees that MIDI messages to input a are processed before MIDI messages to input b. You can cascade them if you need to order more than two streams. A very rarely used module, but handy for those occasions when you have two MIDI message occurring at the same logical time and absolutely need one message to be handled before the other.
Architect, the modular MIDI toolkit, beta now available for macOS, Windows, and Linux.
- KVRist
- 492 posts since 5 Sep, 2011 from Sussex, UK
You can't stop us feeling cheered at reading those wordscolin@loomer wrote:[interesting stuff] ... installer scripts ... [interesting stuff]
- KVRAF
- 6305 posts since 9 Dec, 2008 from Berlin
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." - Rumi
ScreenDream Instagram Mastodon
ScreenDream Instagram Mastodon
-
- KVRian
- Topic Starter
- 1177 posts since 2 Nov, 2006
See I knew it!colin@loomer wrote:No; what you actually hear is me swearing angrily at installer scripts and Linux virtual machines.
I can't remember who first brought up the subject of micro tuning, but I must admit I've become quite taken with various MIDI tuning presets. My current micro tuner patch, as simple and minimal as I suspect this could be, consists of just five modules (plus some constants, which define the various pitch bend ranges for each pitch class; a MIDI input module, and a MIDI output module.)
MIDI In goes to a Note Priority module [*1], which then goes to an Unpack Note module [*2]. We then take the unpacked pitch value, and perform modulo 12 arithmetic on it [*3], essentially producing a CV stream with 0 for C, 1 for C#, 2 for D, etc, up to 11 for B. This then controls a 16:1 switch (although we need only twelve of the 16 inputs, there is no harm nor cpu usage in leaving the unused inputs unconnected), where inputs 0 to 11 are connected to constants which dictate the amount of pitch-bend per pitch class.
This value is routed into a Pack Pitch Bend module [*4], which takes the trigger and channel from our Unpack Note and the value from the multiplexing switch. We then connect both the MIDI input and Pack Pitch Bend to the MIDI output module. Result: a simple MIDI micro tuner.
For bonus points, you may also want to use an Order MIDI [*5] module before the MIDI output to ensure that the pitch-bend messages occur before the note ons.
*1 Which takens a potentially polyphonic MIDI stream and produces a monophonic MIDI stream of either the lowest, highest, or last MIDI note. This isn't the only way of monophonic-ising polyphonic MIDI, but it's generally the one you'll use most.
*2 This converts a MIDI note to discrete trigger, gate, pitch, velocity, and channel CV streams. (There is also a Pack Note which takes the trigger, gate, pitch, velocity, and channel, and convert them to MIDI notes. The fun occurs when things are wired between these two.)
*3 A modulo module has two inputs, a and b, and produces a single value equal to the remainder when a is divided by b.
*4 Takes a trigger, value, and channel, and produces a MIDI pitch bend message.
*5 Order MIDI has two inputs and one output, and guarantees that MIDI messages to input a are processed before MIDI messages to input b. You can cascade them if you need to order more than two streams. A very rarely used module, but handy for those occasions when you have two MIDI message occurring at the same logical time and absolutely need one message to be handled before the other.
This thing aint ever gonna see the light of day. 2016 if we're lucky but more likely 2017
-
- KVRist
- 119 posts since 16 Jun, 2009
Today I am going out to buy a new fast MacBook for the waiting the next years with Numerology working!
At the end of 2014 there it were only a few hours more.
Have to find a developer here to define or to be more specific about the term "a few"
At the end of 2014 there it were only a few hours more.
Have to find a developer here to define or to be more specific about the term "a few"
-
- KVRian
- Topic Starter
- 1177 posts since 2 Nov, 2006
Well "early 2015" is the latest. So that means...what....at the latest .....APRIL? I think May does not count as "early 2015"
Therefore absolute MAXIMUM time to release is, as of today...
93 days
(2015)
Therefore absolute MAXIMUM time to release is, as of today...
93 days
(2015)
-
- KVRist
- 194 posts since 31 Dec, 2008
It does seem like time is beginning to be of essence now.
The MAC boys are already sorted with Numo but...
Namm 2015 has seen a real surge in the development of cross platform sw/hw sequencing tools arrive.
The Koma elektronik komplex sequencer (daddy) midi/cv/gate $pricey$
The Beatstep Pro midi/cv/gate $reasonable$
The Korg SQ-1 midi/cv/gate ...ect $as chips$
People are craving step-sequencers and the devs are listening. I fear Colin might arrive too late to the party if he doesn't make haste and release soon.
The MAC boys are already sorted with Numo but...
Namm 2015 has seen a real surge in the development of cross platform sw/hw sequencing tools arrive.
The Koma elektronik komplex sequencer (daddy) midi/cv/gate $pricey$
The Beatstep Pro midi/cv/gate $reasonable$
The Korg SQ-1 midi/cv/gate ...ect $as chips$
People are craving step-sequencers and the devs are listening. I fear Colin might arrive too late to the party if he doesn't make haste and release soon.
- KVRAF
- 6305 posts since 9 Dec, 2008 from Berlin
Don't panic
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." - Rumi
ScreenDream Instagram Mastodon
ScreenDream Instagram Mastodon
-
- KVRist
- 194 posts since 31 Dec, 2008
Panic?
Isn't that the heightened emotional state reserved for when something suddenly happens that you were neither prepared for or expecting, thus causing your thinking pattern to be disrupted and your reactions compromised?
Not much chance of that then ;D
Isn't that the heightened emotional state reserved for when something suddenly happens that you were neither prepared for or expecting, thus causing your thinking pattern to be disrupted and your reactions compromised?
Not much chance of that then ;D