For example, to play a middle C, you can use
play :c4
To play the B one note before it, which is in the next lowest octave, you would use
play :b3
The Log shows that Sonic Pi plays notes 60 and 59 respectively. You can check the note names and numbers to confirm that this is what you expected.
Note | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
C | 0 | 12 | 24 | 36 | 48 | 60 | 72 | 84 | 96 | 108 | 120 |
C# | 1 | 13 | 25 | 37 | 49 | 61 | 73 | 85 | 97 | 109 | 121 |
D | 2 | 14 | 26 | 38 | 50 | 62 | 74 | 86 | 98 | 110 | 122 |
D# | 3 | 15 | 27 | 39 | 51 | 63 | 75 | 87 | 99 | 111 | 123 |
E | 4 | 16 | 28 | 40 | 52 | 64 | 76 | 88 | 100 | 112 | 124 |
F | 5 | 17 | 29 | 41 | 53 | 65 | 77 | 89 | 101 | 113 | 125 |
F# | 6 | 18 | 30 | 42 | 54 | 66 | 78 | 90 | 102 | 114 | 126 |
G | 7 | 19 | 31 | 43 | 55 | 67 | 79 | 91 | 103 | 115 | 127 |
G# | 8 | 20 | 32 | 44 | 56 | 68 | 80 | 92 | 104 | 116 | |
A | 9 | 21 | 33 | 45 | 57 | 69 | 81 | 93 | 105 | 117 | |
A# | 10 | 22 | 34 | 46 | 58 | 70 | 82 | 94 | 106 | 118 | |
B | 11 | 23 | 35 | 47 | 59 | 71 | 83 | 95 | 107 | 119 |
Here's how you could code a fanfare using note names instead of numbers:
play :c4
sleep 0.5
play :e4
sleep 0.5
play :g4
sleep 0.5
play :c5
If you want to use a sharp note, insert the letter s in the note name (for example, play :cs4
) and use b for a flat note (play :cb4
).
You can also use names to play chords. You tell Sonic Pi the lowest note in the chord and add which type of chord you want (try :major
, :minor
, or :diminished
). There are also options for :major7
, :minor7
, :diminished7
, and :dom7
, among others. For a complete list, click Lang in the Help pane, and then select Chord. Try this:
play chord(:a3, :major)
sleep 1
play chord(:a3, :minor)
In each case, it plays three notes at the same time. If you look at the note numbers in the Log, you can see that the middle note was one pitch lower in the second chord because it’s a minor chord. Again, you can use Table 14-1 to check the note numbers Sonic Pi displays against the musical note names.
The chord is returned as a list, and you can use play_pattern
to hear the notes of the chord in a sequence, like this:
play_pattern chord(:a3, :major)
play_pattern chord(:a3, :minor)