|
|
@@ -0,0 +1,230 @@ |
|
|
############################################## |
|
|
## Example 1 - play a note |
|
|
play 60 |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 2 - play 4 random notes |
|
|
4.times do |
|
|
play rrand_i(60, 90) |
|
|
sleep 0.5 |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 3 - play a major chord |
|
|
play chord(60, :M) |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 4 - play an arpeggio |
|
|
loop do |
|
|
play chord(60, :M7).tick |
|
|
sleep 0.5 |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 5 - play a chord with an arpeggio |
|
|
loop do |
|
|
play chord(60, :M7), release: 3 |
|
|
16.times do |
|
|
play chord(60, :M7).choose |
|
|
sleep 0.25 |
|
|
end |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 6 - play a shifting chord with an arpeggio |
|
|
start_notes = ring(60, 62, 63, 62) |
|
|
loop do |
|
|
my_chord = chord(start_notes.tick, :M7) |
|
|
play my_chord, release: 2 |
|
|
16.times do |
|
|
play my_chord.choose |
|
|
sleep 0.125 |
|
|
end |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 7 - play a sample |
|
|
sample :drum_bass_hard |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 8 - play a simple drum beat |
|
|
loop do |
|
|
sample :bd_haus |
|
|
sleep 0.5 |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 9 - alternate kick and snare |
|
|
loop do |
|
|
if tick.even? |
|
|
sample :bd_haus |
|
|
else |
|
|
sample :sn_dolf |
|
|
end |
|
|
sleep 0.5 |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 10 - combine kick, snare and hi-hat |
|
|
loop do |
|
|
sample :drum_cymbal_closed |
|
|
if tick.even? |
|
|
sample :bd_haus |
|
|
else |
|
|
sample :sn_dolf |
|
|
end |
|
|
sleep 0.25 |
|
|
sample :drum_cymbal_closed |
|
|
sleep 0.25 |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 11 - play a drum loop once |
|
|
sample :loop_amen |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 12 - play a drum loop as a loop |
|
|
loop do |
|
|
sample :loop_amen |
|
|
sleep sample_duration(:loop_amen) |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 13 - try to combine melody, harmony, rhythm (doesn't work) |
|
|
loop do |
|
|
start_note = ring(60, 62, 63, 62).tick |
|
|
my_chord = chord(start_note, :M7) |
|
|
play my_chord, release: 2 |
|
|
16.times do |
|
|
play my_chord.choose, release: 0.25, amp: [0.75, 0.5, 0.25].choose |
|
|
sleep 0.125 |
|
|
end |
|
|
end |
|
|
|
|
|
loop do |
|
|
sample :loop_amen |
|
|
sleep sample_duration(:loop_amen) |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 14 - a fix for Example 13, using threads (drums out of sync) |
|
|
in_thread do |
|
|
loop do |
|
|
start_note = ring(60, 62, 63, 62).tick |
|
|
my_chord = chord(start_note, :M7) |
|
|
play my_chord, release: 2 |
|
|
16.times do |
|
|
play my_chord.choose, release: 0.25, amp: [0.75, 0.5, 0.25].choose |
|
|
sleep 0.125 |
|
|
end |
|
|
end |
|
|
end |
|
|
|
|
|
loop do |
|
|
sample :loop_amen |
|
|
sleep sample_duration(:loop_amen) |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 15 - a fix for Example 14, drums now in sync |
|
|
in_thread do |
|
|
loop do |
|
|
start_note = ring(60, 62, 63, 62).tick |
|
|
my_chord = chord(start_note, :M7) |
|
|
play my_chord, release: 2 |
|
|
16.times do |
|
|
play my_chord.choose, release: 0.25, amp: [0.75, 0.5, 0.25].choose |
|
|
sleep 0.125 |
|
|
end |
|
|
end |
|
|
end |
|
|
|
|
|
loop do |
|
|
sample :loop_amen, beat_stretch: 2 |
|
|
sleep 2 |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 16 - a better way to thread |
|
|
live_loop :beeps do |
|
|
start_note = ring(60, 62, 63, 62).tick |
|
|
my_chord = chord(start_note, :maj9) |
|
|
play my_chord, release: 2 |
|
|
16.times do |
|
|
play my_chord.choose, release: 0.25, amp: [0.75, 0.5, 0.25].choose |
|
|
sleep 0.125 |
|
|
end |
|
|
end |
|
|
|
|
|
live_loop :drums do |
|
|
sample :loop_amen, beat_stretch: 2 |
|
|
sleep 2 |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 17 - use a different synth |
|
|
use_synth :saw |
|
|
loop do |
|
|
play scale(60, :major).choose |
|
|
sleep 0.25 |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 18 - a simple pattern to demo effects |
|
|
play 50 |
|
|
sleep 0.5 |
|
|
sample :elec_plip |
|
|
sleep 0.5 |
|
|
play 62 |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 19 - adding reverb |
|
|
with_fx :reverb do |
|
|
play 50 |
|
|
sleep 0.5 |
|
|
sample :elec_plip |
|
|
sleep 0.5 |
|
|
play 62 |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 20 - adding echo |
|
|
with_fx :echo do |
|
|
play 50 |
|
|
sleep 0.5 |
|
|
sample :elec_plip |
|
|
sleep 0.5 |
|
|
play 62 |
|
|
end |
|
|
|
|
|
|
|
|
############################################## |
|
|
## Example 21 - adding reverb and echo together |
|
|
with_fx :echo do |
|
|
with_fx :reverb do |
|
|
play 50 |
|
|
sleep 0.5 |
|
|
sample :elec_plip |
|
|
sleep 0.5 |
|
|
play 62 |
|
|
end |
|
|
end |