Your first synth: superpiano

So far we’ve been entirely using samples, which are audio files that are being played back when triggered, but now we want to start using synthesizers. A synth is something that creates, or synthesizes, the sound right when it’s asked to play. Synthesizers can be based in hardware, meaning that physical circuits are generating the sound waves out of electricity, or they can be based in software where it’s code calculating what the shape of the sound wave should be and then passing that along to the computer’s sound interface. While Tidal can be used to control hardware synths, for the purposes of this course we’re just going to deal with software synths defined in Supercollider

Our first such synth is going to be superpiano, which is a really good piano synthesizer that comes with Tidal. To whit, try typing the following into Atom and hitting ctrl+enter

d1 $ s "superpiano"

You’ll hear a single plinky note happening once per cycle. Of course, we’ll want to play actual notes and not just a single tone. To do that we’re going to introduce a new concept pattern modifiers. Unlike pattern transformations that are separated by dollars signs, pattern transformations are separated by the hash mark (#). Now we’re going to create a pattern of notes and modify that pattern with # s "superpiano" in order to tell Tidal that we want to make our pattern of notes be played with the superpiano synth

d1 $ n "f a c e" # s "superpiano"

And now you should hear a sequence of notes instead. To make patterns of notes we can use either numbers or the musical names for notes: c d e f g b a. All of the following are equivalent as patterns of notes

n "f a c e"
n "5 9 0 4"
n "f5 a5 c5 e5"

In that last example, the number after the letters is the octave number. If you’ve ever learned a musical instrument or heard any music theory, c4 is middle c. Higher numbers correspond to higher pitches. In fact, each higher octave is twice as high-pitched as the previous octave.

Now, we can start using the tricks we learned in the previous section to make a more complicated melody.

d1 $ n "[<c e> [d [a c]]? <[e f]*2 [a b]> < g f e>]" # s "superpiano"

If you play this, it’s a little fast. Thankfully, Tidal has another transformation that can be used to slow it down a little

d1 $ slow 2 $ n "[<c e> [d [a c]]? <[e f]*2 [a b]> < g f e>]" # s "superpiano"

Like the other transformation we’ve seen we put it between the d1 and the pattern, separated by dollar signs.

If you’re listening to this and thinking “okay, but it doesn’t really sound like a good lo-fi piano” you’d be right. We can do a lot to modify the sound! Change your code so that it looks like the following example, making sure to indent the second line :

d1 $ slow 2 $ n "[<c e> [d [a c]]? <[e f]*2 [a b]> < g f e>]" 
   # s "superpiano" # sustain 4 # lpf 1250 # room 0.3 # shape 0.3 # gain 0.9

Let’s summarize what these other modifiers are doing

  • sustain keeps the note hanging in the air longer, so it sounds more like a real piano
  • lpf is a low-pass filter, which is the effect responsible for whenever music sounds kinda quiet and distant like you’re hearing it on speakers far away. The smaller the number you give it the more of the high-pitches of the sound are removed.
  • room is a reverb, it takes a number between 0 and 1 with the larger the number the larger the reverb effect
  • shape is an amplification that causes a little bit of interesting distortion, which in this case I feel makes it more piano like. It takes values between 0 and up to but not including 1. If you put shape at 1 you’re going to create some very, very loud and very nasty sounds. Take care of those ears!
  • gain controls the overall loudness of the sound. If gain is set to a value less than 1 it will be quieter than normal, if it’s set to a value larger than 1 it’ll be louder than normal

Now with all of these effects combined it’s going to sound really different, but a bit richer than before. Try playing with these modifiers and with the piano lick itself to see what you can do.

In the next section, we’ll be covering how to use scales in Tidal and a little bit of music theory.