Delta MIDI Computer

This forum is for discussing Rack Extensions. Devs are all welcome to show off their goods.
Tweak
Posts: 125
Joined: 16 Jan 2015

17 Jun 2021

A third party application called Harmony Navigator allows you to understand chord progressions in terms of these diagrams:

https://www.cognitone.com/products/nav/intro/page.stml

The application uses a colouring system to denote a level of continuation, or function of the next chord, so you can see which chords might naturally follow the one you've just entered. It also does stuff like auto-inversions to make chords sound nicer next to one another. It has MIDI out and can be used with Reason. I use the light edition with Reason as an alternative to Scales & Chords to noodle around progressions. Comes with a demo, but took a bit of setting up to work happily with Reason if I remember correctly.

Apologies for derailing the thread slightly.

PhillipOrdonez
Posts: 3732
Joined: 20 Oct 2017
Location: Norway
Contact:

17 Jun 2021

challism wrote:
16 Jun 2021
I think the only way for him to build something like that would be to build some kind of timing node, which would allow all notes played within a certain amount of time to be treated the same way, as a group. Because nothing really happens exactly at the same time. A chord, when played, is played imperfectly, and there are slight variations in timing and velocity for each note, even for advanced players. And even for chords generated by sequencers, at least that's they way Reason handles them, as different events; two notes played at the same time with the same velocity are sent thru the instruments with a tiny delay between them. At least, that is how I understand it.
That would work, or a note(s) on/off maybe? Idk. Socram knows better. I know I've mentioned this to him in the past, so I was wondering if there was any progress on the matter 🙂

User avatar
Billy+
Posts: 4157
Joined: 09 Dec 2016

17 Jun 2021

Socram wrote:
16 Jun 2021

Hmm okay maybe I'm misinterpreting (again) but this sounds more like generative musical randomization to add variety to a melody or chord progression, while staying in key?

This is an area Delta really excels already, and if that's more or less what you're picturing a couple ideas come to mind.

The simplest would be a Random Transpose that feeds into a Quantize Node set to the proper scale of the song.

You could add further control by using a Chance Switch node before the Random Transpose to only do random transpositions some of the time, but not all of the time. Depending on the % you go with this can go from a very subtle effect to a very dramatic one.

You could also make things less random by using Chance Switch to randomly transpose to specific diatonic transpose values such as octaves or 7ths. For even more controllable modification you could work in sequential switches and really get quite nuanced with the transpositions.

There should also be examples of these sorts of patches in the Chord and Melody folders

You got the idea sport on variety to while staying in key.
I will hunt down the patches in the chords and melody folders :thumbs_up:

I also see someone has said that delay is introduced to the midi which isn't a problem as I'm happy to bounce or record in place and adjust as needed as I don't necessarily want delta to constantly regenerate but just give some variety ideas.

Again thanks for your quick and speedy response :clap:

User avatar
Billy+
Posts: 4157
Joined: 09 Dec 2016

17 Jun 2021

Tweak wrote:
17 Jun 2021
A third party application called Harmony Navigator allows you to understand chord progressions in terms of these diagrams:

https://www.cognitone.com/products/nav/intro/page.stml

The application uses a colouring system to denote a level of continuation, or function of the next chord, so you can see which chords might naturally follow the one you've just entered. It also does stuff like auto-inversions to make chords sound nicer next to one another. It has MIDI out and can be used with Reason. I use the light edition with Reason as an alternative to Scales & Chords to noodle around progressions. Comes with a demo, but took a bit of setting up to work happily with Reason if I remember correctly.

Apologies for derailing the thread slightly.
I actually have the mixed in keys captain bundle but you say that midi out works in Reason? So I will definitely check it out as currently the midi routing doesn't allow me to route captain to instruments within Reason.

Tweak
Posts: 125
Joined: 16 Jan 2015

17 Jun 2021

Billy+ wrote:
17 Jun 2021
I actually have the mixed in keys captain bundle but you say that midi out works in Reason? So I will definitely check it out as currently the midi routing doesn't allow me to route captain to instruments within Reason.
Yeah, this is working for me on my Mac. I use an IAC Loopback and specify Harmony Navigator as a generic keyboard/control surface in Reason. I can then record HN created chord progressions into Reason's main sequencer, or a player like Sequences for further manipulation.

User avatar
Billy+
Posts: 4157
Joined: 09 Dec 2016

17 Jun 2021

Socram wrote:
16 Jun 2021
There should also be examples of these sorts of patches in the Chord and Melody folders
Ok so after a quick look through the manual I think that I could do with a modified if node that allows for midi note to be in any octave so that I can detect the notes across the entire keyboard rather than a specific octave. Spotted it note name ignores octave.


And also a new chord node that can be used to detect the chords and the scale degree with the option to pipe from each degree to a choice node for further processing. Much like the chord generation node but in reverse with individual outputs for each chord.

Forgive me if this is already possible as I'm currently using the manual not the device/internal help.

User avatar
challism
Moderator
Posts: 4642
Joined: 17 Jan 2015
Location: Fanboy Shill, Boomertown

17 Jun 2021

Socram wrote:
16 Jun 2021
PhillipOrdonez wrote:
17 Jun 2021
challism wrote:
16 Jun 2021
I think the only way for him to build something like that would be to build some kind of timing node, which would allow all notes played within a certain amount of time to be treated the same way, as a group. Because nothing really happens exactly at the same time. A chord, when played, is played imperfectly, and there are slight variations in timing and velocity for each note, even for advanced players. And even for chords generated by sequencers, at least that's they way Reason handles them, as different events; two notes played at the same time with the same velocity are sent thru the instruments with a tiny delay between them. At least, that is how I understand it.
That would work, or a note(s) on/off maybe? Idk. Socram knows better. I know I've mentioned this to him in the past, so I was wondering if there was any progress on the matter 🙂
I don't mean to speak for him, and hope I didn't come across that way. I was just giving my thoughts with my basic understanding of the complications of such a feature request. There is a lot going on under the hood of Delta, and while I do envy Marcos' ability to build such a device, I don't envy the job he has ahead of him for any possible updates. So many things seem to be interconnected that a small change can disrupt everything else. Marcos would definitely know best; perhaps he will address your question.
Players are to MIDI what synthesizers are to waveforms.

ReasonTalk Rules and Guidelines

Dionisio
Posts: 47
Joined: 21 Sep 2020

20 Jun 2021

This is a real beast machine and it will be my next buy.
I imagine what it will be with a module that warp/open midi plugins like Scaler, Code FN42, Kirnu, Thesys, Cthulhu and many others...
Maybe it is not possible, but i believe it will a great voyage! "My God, it's full of stars!"

User avatar
Socram
RE Developer
Posts: 172
Joined: 04 Jul 2015

21 Jun 2021

Billy+ wrote:
17 Jun 2021
I also see someone has said that delay is introduced to the midi which isn't a problem as I'm happy to bounce or record in place and adjust as needed as I don't necessarily want delta to constantly regenerate but just give some variety ideas.
I think there's some confusion, so I want to clarify that Delta introduces no delay whatsoever to the MIDI it processes, no matter how complicated your flow graph is. The exception would be of course using the Delay node, but I hope that's a given and even that has "Play Dry Event" enabled by default. ;)
Billy+ wrote:
17 Jun 2021
And also a new chord node that can be used to detect the chords and the scale degree with the option to pipe from each degree to a choice node for further processing. Much like the chord generation node but in reverse with individual outputs for each chord.
This is a cool idea, but unfortunately impossible for the same reason I explain below. Really glad to hear you're diving into the manual and its helping you find the stuff you need.
PhillipOrdonez wrote:
16 Jun 2021
Hey Socram, are there any plans for nodes that treat a chord as one event instead of 4 or 5 events (one event per note)?
To be honest I don't think this will ever happen, it is a fundamental issue and no good workaround has come to mind. Basically the issue boils down to the fact that Delta can not predict the future. So deciding what gets treated as a single note, and what gets treated as a chord, is impossible to know. If you care a bit of the technicals, read on.

If chords always were played such that every note fell on the EXACT same frame in Reason (we're talking millisecond precision), it would maybe be possible to do this. Unfortuntately that would rule out everyone playing any sort of chord by hand. So then you might start to think... well maybe have a short window of time where multiple close enough notes are treated as chords? The problem with that is you then have to introduce a delay at least as long as that window, which would be unacceptable in this sort of device. There's even more nuance to this I'm hand waving but that covers the essentials of the issue.

As a result of all of the above Delta is not actually polyphonic, at least not technically, and is what I would call "parallel mono". When a chord is processed by Delta, each note has to be treated as if they were coming in one at a time. They can occur very closely together, or even on the same frame, but Delta doesn't know that it just processed a chord, it just processes them as 3 separate notes (as you already know).

I apologize if this seems like a missed opportunity but I genuinely don't see a way around it. I do wonder if there's any product that tries to do something like that without introducing delay. I think this falls into a category of computer theory known as a "undecideable problems" which are fundamentally impossible.
Last edited by Socram on 21 Jun 2021, edited 2 times in total.
Static Cling - Rack Extension Developer of Tome, Index, Optic, Chord Detector, Delta, and AutoLatch.
www.StaticCling.io
info@StaticCling.io

spencer335
Posts: 59
Joined: 25 Jun 2015

21 Jun 2021

Socram wrote:
21 Jun 2021


As a result of all of the above Delta is not actually polyphonic, at least not technically, and is what I would call "parallel mono". When a chord is processed by Delta, each note has to be treated as if they were coming in one at a time. They can occur very closely together, or even on the same frame, but Delta doesn't know that it just processed a chord, it just processes them as 3 separate notes (as you already know).
To the extent that a Delta node does receive parallel mono notes on the same frame, will it process those notes in a consistent (e.g. bottom up or top down) way? I've been playing with the Sequential switch processing incoming chords a bit and I think I am getting predictable results, but curious to know the design.

User avatar
Socram
RE Developer
Posts: 172
Joined: 04 Jul 2015

22 Jun 2021

spencer335 wrote:
21 Jun 2021
To the extent that a Delta node does receive parallel mono notes on the same frame, will it process those notes in a consistent (e.g. bottom up or top down) way? I've been playing with the Sequential switch processing incoming chords a bit and I think I am getting predictable results, but curious to know the design.
Incoming notes that arrive on the exact same frame are processed in order of lowest note to highest note. This makes things like extracting the root note of a chord possible under the right circumstances, by using a Sequential Switch with "Reset When All Released" enabled.
Static Cling - Rack Extension Developer of Tome, Index, Optic, Chord Detector, Delta, and AutoLatch.
www.StaticCling.io
info@StaticCling.io

User avatar
Billy+
Posts: 4157
Joined: 09 Dec 2016

22 Jun 2021

Thanks for the explanation Socram it makes total sense.
and just to be clear I wasn't saying delta caused delay only that it wouldn't concern me..

With that said can I feed multiple if nodes from input to create the choice nodes.

And rather than a chord detection node what about a degree detection node ?
So I could set a scale that would then output based on the degree? [1-7]
That way I could detect single notes from the degree detection fed into choice nodes that use chord generator at the final stage?

User avatar
Socram
RE Developer
Posts: 172
Joined: 04 Jul 2015

22 Jun 2021

Billy+ wrote:
22 Jun 2021
Thanks for the explanation Socram it makes total sense.
and just to be clear I wasn't saying delta caused delay only that it wouldn't concern me..

With that said can I feed multiple if nodes from input to create the choice nodes.

And rather than a chord detection node what about a degree detection node ?
So I could set a scale that would then output based on the degree? [1-7]
That way I could detect single notes from the degree detection fed into choice nodes that use chord generator at the final stage?
Need some clarification again to be sure I understand.

You set the scale, let's keep it simple and play C Major. Then, when this node receives a note, lets say a C, it would output through Output 1 as its the first degree, a D would output from Ouput 2 as its the second degree, etc etc.?

What would happen if you played an out of scale note, such as C#?

If that's what you mean, it seems a tad specific but definitely interesting so I can add it to the feature request tracker. You could also build this by hand as I think you pointed out with a series of chained If nodes. Not nearly as flexible or quick, but definitely reasonable to set up once and then save as a template.
Static Cling - Rack Extension Developer of Tome, Index, Optic, Chord Detector, Delta, and AutoLatch.
www.StaticCling.io
info@StaticCling.io

User avatar
Billy+
Posts: 4157
Joined: 09 Dec 2016

22 Jun 2021

Socram wrote:
22 Jun 2021
Billy+ wrote:
22 Jun 2021
Thanks for the explanation Socram it makes total sense.
and just to be clear I wasn't saying delta caused delay only that it wouldn't concern me..

With that said can I feed multiple if nodes from input to create the choice nodes.

And rather than a chord detection node what about a degree detection node ?
So I could set a scale that would then output based on the degree? [1-7]
That way I could detect single notes from the degree detection fed into choice nodes that use chord generator at the final stage?
Need some clarification again to be sure I understand.

You set the scale, let's keep it simple and play C Major. Then, when this node receives a note, lets say a C, it would output through Output 1 as its the first degree, a D would output from Ouput 2 as its the second degree, etc etc.?

What would happen if you played an out of scale note, such as C#?

If that's what you mean, it seems a tad specific but definitely interesting so I can add it to the feature request tracker. You could also build this by hand as I think you pointed out with a series of chained If nodes. Not nearly as flexible or quick, but definitely reasonable to set up once and then save as a template.
Spot on.

As for non scale tones you got me.....
Maybe output 0 would be non scale?

freshkidblaze
Posts: 158
Joined: 20 Oct 2020

27 Jul 2021

I know during May madness the dev said an update is coming soon. Did he hint at what the new modules would be?

Bes
Competition Winner
Posts: 1128
Joined: 22 Feb 2017

07 Nov 2021

ive just had an idea for a new module. its an 'if >=<'node that remembers the value of the previous note that passed through it. the node has 3 outputs for >, = and < and its function could be applied to note or velocity value like the current if node. first note passes through the = i guess
- Certified Reason expert

User avatar
selig
RE Developer
Posts: 11685
Joined: 15 Jan 2015
Location: The NorthWoods, CT, USA

07 Nov 2021

As for the delay involved with chord detection, Reason would need to add MIDI Latency Compensation for this to work in real time, much the same way that look-ahead works. But that’s not likely to happen, and i’m not sure if it’s even feasible with the complexity of possible routings etc. but IF air ever happens, seems like chord detection would be fairly straightforward…
And as far as controller data and Players, I too was disappointed to learn you can’t even process sustain pedal or mod wheel data, let alone pitch bend or expression etc… this put me off of making a phrase launcher since it’s quite a limitation for a “sequencer/player” to not record/playback anything but not on/off velocity…
Selig Audio, LLC

Tinnitus
Posts: 134
Joined: 15 Apr 2018

28 Jul 2022

Hi, just wondering when setting up a control flow to perform an inversion 1 if d0 is pressed or inversion 2 if e0 is pressed, whether you can filter out/remove the control notes (d0 or e0)?

Bes
Competition Winner
Posts: 1128
Joined: 22 Feb 2017

28 Jul 2022

Tinnitus wrote:
28 Jul 2022
Hi, just wondering when setting up a control flow to perform an inversion 1 if d0 is pressed or inversion 2 if e0 is pressed, whether you can filter out/remove the control notes (d0 or e0)?
if you are using the trigger overrides of the trigger switch then those notes are already not passing through. there are so many possibilities tho, want to post a screen shot or diagram?
trigger switch overrides E0 F0.jpg
trigger switch overrides E0 F0.jpg (30.73 KiB) Viewed 1470 times
in this example the 'if node' is directing any incoming notes below F#0 to the trigger which is listening for E0 or F0 to change the switch but only the incoming notes above F#0 will pass through to the either be transposed or not
- Certified Reason expert

Post Reply
  • Information
  • Who is online

    Users browsing this forum: Adabler and 15 guests