Converting incoming midi notes to custom chords


#1

Hi everyone! I'm trying to figure out how I can take incoming midi notes and create custom chords to send to midi out based on the note played. There is no specific pattern or logic that the chords would follow, but the idea is that I'm using the incoming notes as an index to assign to whatever chords I'd need.

I've made a small demonstration for anyone who uses Max, https://cycling74.com/forums/any-axoloti-users

Thank you in advance for any input/examples you may have :slight_smile:


#2

Do you want to be able to play a single note on a midi keyboard and then play some chord with that note as a root?

Like if you play note 64, then you create a whole chords out of that, like 64 68 71?

If that's the case, that wouldn't be to hard to make, using some arrays.


#3

Actually no, the incoming note will not necessarily be a part of the outgoing chord


#4

Ahh okay :slight_smile:

Since not evey one has Max MSP, I think it would be a good idea to explain it a bit more detailed, if you can :slight_smile:


#5

of course! Hopefully this visual explains what I'm trying to do better than I can with words


#6

I am not so good at reading such diagrams, so not really sure what the logic is there.


#7

No worries, I’m just trying to select incoming notes and assign them to each trigger other assignable midi notes(chords)


#8

So basically kind of rescaling of notes, but for several notes?

I made this object with some help from another user, that basically rescale notes to a certain scale, set by user. I did not try it for chords though only for single notes.

I don't think it's the same, but you can check it out in the community library, maybe you can get som inspiration from it.

Search for: jaffa/scale/drawscale


#9

You can patch something like this (see screenshot below), but you will probably end up using most of the available resources of the Axoloti since this approach will result in a lot of objects in your patch.

Best way to do this is to write a custom object. Taking a look at the code of the standard MIDI objects and the firmware might help you as a starting point. The help file of the midi/in/script object is also useful.


#10

Not sure if this is appropriate to what you are describing, but recall SSS has a tonnetz object, which generates chord progressions.....see here


#11

from what I'm reading you want to put certain chords under certain keys on your keyboard, even if the root noot of the chord isn't the key you're playing.

then this should enable to you create a chord for each key. Note though, that this will be the midi-number of the notes you play, going from 0 to 99 in this case (that's the range set to these int-controls in the code), so 64 would be E4 like the normal pitch knob. Of course, you can also change these to the normal pitch-knobs to have an easier way of reading out the notes of the chord, but you'll have to edit this yourself in the code. Anyway, it would function the same as what I'm showing here:
keyboard to chord demo.axp (25.1 KB)

for set more notes in a chord, you could add more rows. To set the amount of notes in a chord, you can add one more row again and use comparators and a logic-AND on the gate to set which midi-outs may actually respond (if the row-number is below the amount of notes in the chord, use it)


#12

thank you all for so much for your examples and references!! I will be trying these out as soon as possible. I'll let you know how it all goes.


#13

I ripped values from a Native Instrument chord maker and made both Max and Axoloti patch from it.
You basically choose a root note and a type of chord (Major/Minor) and your keyboard is full of chords you can use to make songs and become rich (last part is not guaranteed though). Is that what you want to achieve?


#14

Haha, yea essentially, just trying to figure out how to hard code into axoloti. I've got the Max side of things down, but want to have totally portable to use axoloti w/ my MPC or other hardware. I actually have ripped a lot of chords from Komplete Kontrol too. The voicings are so good. :). If all else fails w/ axo, I can get by w/ just arduino.


#15

I would say, use 4 tables (4 notes per chords). Each tables contains one note of the chord
Like this:

Table 1: 48, 52...
Table 2: 64, 64..
Table 3 :67, 67...
Table 4: 72, 71...

So when you call index 0 of all the tables at the same time you'll get this chord: 48 64 67 72
If you call the next one (index 1): 52 64 67 71
...and so on

Use your keyboard or other MIdi controller to control the index

Hope it helps.