Piano: Difference between revisions

From wikiluntti
No edit summary
Line 83: Line 83:
   nappain  = nappain + 1
   nappain  = nappain + 1
end
end
</syntaxhighlight >
== Functions ==
The [https://duckduckgo.com/?q=simple+piano+jingle+bells&iar=images&iax=images&ia=images&iai=http%3A%2F%2Fwww.pianosongdownload.com%2Fjingle_bells_easy_piano.jpg Jingle Bells] is a very famous Christmas song.  Note that there is a lot of repeating, and thus we code the lines in own functions:
<syntaxhighlight >
use_bpm 70
define :line1 do
  play :E
  sleep 0.5
  play :E
  sleep 0.5
  play :E
  sleep 0.5
  play :E
  sleep 0.5
  play :E
  sleep 0.5
  play :E
 
  sleep 0.5
  play :E
  sleep 0.5
  play :G
  sleep 0.5
  play :C
  sleep 0.5
  play :D
  sleep 0.5
  play :E
  sleep 0.5
end
define :line2 do
  play :F
  sleep 0.5
  play :F
  sleep 0.5
  play :F
  sleep 0.5
  play :F
  sleep 0.5
  play :F
  sleep 0.5
  play :E
  sleep 0.5
  play :E
  sleep 0.5
  play :E
  sleep 0.5
end
define :line3 do
  play :E
  sleep 0.5
  play :D
  sleep 0.5
  play :D
  sleep 0.5
  play :E
  sleep 0.5
  play :D
  sleep 0.5
  play :G
end
define :line4 do
  play :G
  sleep 0.5
  play :G
  sleep 0.5
  play :F
  sleep 0.5
  play :D
  sleep 0.5
  play :C
  sleep 0.5
end
line1
line2
line3
line1
line2
line4
</syntaxhighlight >
The lines can be written shorter as
<syntaxhighlight >
use_bpm 70
define :line1 do
  play_pattern_timed [:e, :e, :e, :e, :e, :e], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
  sleep 0.5
  play_pattern_timed [:e, :g, :c, :d, :e], [0.5, 0.5, 0.5, 0.5, 0.5]
  sleep 0.5
end
define :line2 do
  play_pattern_timed [:f, :f, :f, :f, :f, :e, :e, :e], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
  sleep 0.5
end
define :line3 do
  play_pattern_timed [:e, :d, :d, :e, :d, :g], [0.5, 0.5, 0.5, 0.5, 0.5]
 
end
define :line4 do
  play_pattern_timed [:g, :g, :f, :d, :c], [0.5, 0.5, 0.5, 0.5, 0.5]
  sleep 0.5
end
line1
line2
line3
line1
line2
line4
</syntaxhighlight >
</syntaxhighlight >

Revision as of 17:18, 12 October 2020

The Piano

Sonic Pi plays all piano keys. The command play 70 means the 70th key, play 71 plays the next to the right. Sonic Pi plays also decimal notes, try play 71.67. Also, you can play multiple notes at the time:

play 72
play 75
play 79


Melody

Use sleep command in between.

s  = 0.5
play 72
sleep s
play 75
sleep s
play 79


Notes

The notes C, D, E, F, G, A, B are available. Also, the black keys are there; use s as sharp or b as flat.

play :C
sleep 0.5
play :D
sleep 0.5
play :E

The different octaves are available as numbers, try play :C3 or play :Fs3.

https://upload.wikimedia.org/wikipedia/commons/c/c0/Klaviatur-3-en.svg


Chords

Chords are usually written on top of the charts.

play chord(:D, :minor7)
sleep 1
play chord(:D, :major7)
sleep 1
play chord(:D, "7")
sleep 1
play chord(:Db, "7")
sleep 1
play chord(:Db, :major7)
sleep 1

play chord(:E3, :minor)
sleep 1
play chord(:E3, :major)
sleep 1
play chord(:E, "7")
sleep 1
play chord(:G, :minor7)
sleep 1
play chord(:A, :major)
sleep 1
play chord(:G, "m7-5")

Also, you can type the chord in once: play_chord [:c4, :e4, :g4]. More chords are available at e.g. Chord progression map.

Variables

Play all the keys starting from the 60th key.

nappain = 60
live_loop :kaikki do
  play nappain, attack:0.01, sustain:0.1, release:0.9
  sleep 1.5
  nappain  = nappain + 1
end


Functions

The Jingle Bells is a very famous Christmas song. Note that there is a lot of repeating, and thus we code the lines in own functions:

use_bpm 70

define :line1 do
  play :E
  sleep 0.5
  play :E
  sleep 0.5
  play :E
  sleep 0.5
  play :E
  sleep 0.5
  play :E
  sleep 0.5
  play :E
  
  sleep 0.5
  play :E
  sleep 0.5
  play :G
  sleep 0.5
  play :C
  sleep 0.5
  play :D
  sleep 0.5
  play :E
  sleep 0.5
end

define :line2 do
  play :F
  sleep 0.5
  play :F
  sleep 0.5
  play :F
  sleep 0.5
  play :F
  sleep 0.5
  play :F
  sleep 0.5
  play :E
  sleep 0.5
  play :E
  sleep 0.5
  play :E
  sleep 0.5
end


define :line3 do
  play :E
  sleep 0.5
  play :D
  sleep 0.5
  play :D
  sleep 0.5
  play :E
  sleep 0.5
  play :D
  sleep 0.5
  play :G
end


define :line4 do
  play :G
  sleep 0.5
  play :G
  sleep 0.5
  play :F
  sleep 0.5
  play :D
  sleep 0.5
  play :C
  sleep 0.5
end

line1
line2
line3 
line1
line2
line4


The lines can be written shorter as

use_bpm 70

define :line1 do
  play_pattern_timed [:e, :e, :e, :e, :e, :e], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
  sleep 0.5
  play_pattern_timed [:e, :g, :c, :d, :e], [0.5, 0.5, 0.5, 0.5, 0.5]
  sleep 0.5
end

define :line2 do
  play_pattern_timed [:f, :f, :f, :f, :f, :e, :e, :e], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
  sleep 0.5
end

define :line3 do
  play_pattern_timed [:e, :d, :d, :e, :d, :g], [0.5, 0.5, 0.5, 0.5, 0.5]
  
end

define :line4 do
  play_pattern_timed [:g, :g, :f, :d, :c], [0.5, 0.5, 0.5, 0.5, 0.5]
  sleep 0.5
end

line1
line2
line3
line1
line2
line4