From chord to sound

Hi,

I apologize for asking something that is probably very basic but I am just a noob and currently I am a bit stuck…

What I want to do is to play piano-chords via supercollider and pianoteq but unfortunately I know nothing about about either supercollider or music theory (my plan is to learn the two together as I go along).

So far I have figured out how to use pianoteq as a plugin and to use it to play notes via a simple Pbind specifying midinotes.

I also have installed the MusicalNotation-quark but now I don’t know how to proceed as I lack some basic understanding.

What I can do with the quark is something like this:

Chord.at(\m7Flat5)

and that gives me

Chord([ 0, 3, 6, 10 ], "Minor 7 Flat 5")

So this seems to be the series of intervals that make up said chord.

So now I want to hear such a chord and I don’t know what to do as I don’t really understand the concepts.

Does it even make sense to play m7Flat5-chord as such? Or do I need to pick a starting note onto which I apply the intervals? If so how would I do that?

So in short: What do I need to do to make a such a chord audible?

play{Splay.ar(SinOsc.ar(256*Chord.at(\m7Flat5).notes.midiratio)*Env.perc(0,2).ar(2,1))}

Don’t know anything about Pianoteq, but to just get the notes try Chord.at(\m7Flat5).notes

( // This could be so much more elegant but works to run through all the chords (:
c=Chord.names;
fork{	
	while({c.size>0},
		{   a=c.pop;
			play{
				Splay.ar(SinOsc.ar(220*Chord.at(a.postln).notes.midiratio)*Env.perc.ar(2,1))};
			1.wait;
		});
});

Edit: Forget everything i wrote, @jamshark70 got it right! (:

Then you’re 99.99999% of the way there.

[0, 3, 6, 10] aren’t exactly the intervals (those would be 3, 3, 4). They’re the semitones in the chord: 3 = minor 3rd, 6 = diminished 5th, 10 = minor 7th.

To play them, transpose them chromatically to the desired root pitch. In semitones, transposition is +.

[0, 3, 6, 10] + 60
-> [ 60, 63, 66, 70 ]

… and these are MIDI notes that you can stick into your pattern. Patterns support math so you can also have Pseq( ... chord forms ... ) + Pseq( ... root notes ... ).

What I don’t recall offhand is whether the vst_midi event type expects chords as [note, note, note] or [[note, note, note]] but you could try them both and see which one works (or maybe they both do). I expect the first will be fine though, I’m probably overthinking a bit.

hjh

1 Like

This! It’s just regular Pbind multichannel expansion.

Thanks a lot, that was very helpful.

Thanks for the reply, would you mind explaining your thinking behind your solution as there may be something for me to learn…

I guess i should have written this instead.

Pbind(\degree,Chord.at(\m7Flat5).notes).play

My first overly bloated example involved creating a SinOsc synth playing you chord with a 256hz as root freq and then applying an envelope.