This tiny abstraction takes in notes as midi values and transposes them according to a given scale and root note. I hope that everything is correct musically.
-
[mscale] – Transpose notes according to given scale and root
-
I haven't touched PD in months and I started a project the day you posted this, used mscale not realizing that you had posted it just hours before.
Weird!
Thanks for the helpful object!
-
@Matt-Stalcup Glad, that it is helpful.
-
Just updated this because i think it is more accurate to first subtract the root then make the transposition to the scale and then add the root again.
-
Ah, this still contained a bug, it is now updated and should work as expected.
Anyhow, i included a small demo, where three random players improvise on triads of the twelve-bar blues chord progression. Have fun!
-
Glad I found this one! Can be very valuable for a project I have in mind.
Long story short (for now): would you have insight on tweaking mscale so that it moves to a valid note instead of filtering it out?
Come to think of it… Based on your description, it might be a more specific issue having to do with my setup… I’m using a MIDI controller which sends legato notes. When I go from a valid note to one outside the scale, it just stops playing instead of moving up or down to a valid note.I’m still very inexperienced with Pd so I’m having a difficult time understanding how the object does its magic. Which object does what? I’m outputting numbers everywhere to tell how things work. Really puzzled when it comes to the second [moses] object
It sounds like you’re splitting the incoming note’s “pitch class” (0–11) from the octave, you filter that using the list, and then you add back the octave to send out the note if it’s valid.
Is that right?Now… how can I prevent the MIDI stream from cutting?
-
Hi Everyone,
I have a quick question about this. I am still very new to PD and learning (slowly). How could this abstraction be modified to
- Use a slider/knob to select the root;
- Use a slider/knob to select the scale;
- Have the root and scale name be displayed?
Thanks in advance for your help!
-
-
You should insert a Hslider or a Vslider, right click, properties, set the range from 0 to 11, and then connect it to an int object, when then goes into the root input.
-
You should use the technique above to get a slider with the range with the number of scales that you want, and use a sel object to send a message with the appropriate list to the right input.
-
Similarly, use a sel object to manually map the numbers to symbols for the scale and the root note, and connect them to a GUI box or send a message to a canvas to display text.
-
-
Thank you very much!!