2015-08-08 10:25:39 +02:00
|
|
|
require '/home/pi/world-o-techno/gps/gps.rb'
|
2015-08-16 11:38:38 +02:00
|
|
|
use_debug true
|
2015-08-08 10:25:39 +02:00
|
|
|
|
|
|
|
gps = Gps::Receiver.create('gpsd',:host => 'localhost', :port => 2947)
|
|
|
|
|
|
|
|
gps.start
|
|
|
|
|
2015-08-16 11:38:38 +02:00
|
|
|
define :gpsSatelliteCount do
|
|
|
|
s = 0;
|
|
|
|
if gps != nil && gps.satellites != nil && gps.satellites != 0
|
|
|
|
s = gps.satellites.count
|
|
|
|
end
|
|
|
|
print "Satellites: #{s}"
|
|
|
|
return s;
|
|
|
|
end
|
2015-08-08 10:25:39 +02:00
|
|
|
|
2015-08-16 11:38:38 +02:00
|
|
|
define :gotFix do
|
|
|
|
g = false;
|
2015-08-08 10:25:39 +02:00
|
|
|
|
2015-08-16 11:38:38 +02:00
|
|
|
print gps
|
2015-08-08 10:25:39 +02:00
|
|
|
|
2015-08-16 11:38:38 +02:00
|
|
|
if gps != nil
|
|
|
|
g = gps.latitude != nil
|
|
|
|
end
|
2015-08-08 10:25:39 +02:00
|
|
|
|
2015-08-16 11:38:38 +02:00
|
|
|
return g
|
|
|
|
end
|
2015-08-08 10:25:39 +02:00
|
|
|
|
2015-08-16 11:38:38 +02:00
|
|
|
define :lat do
|
|
|
|
l = 0.0
|
|
|
|
if gps != nil && gps.latitude != nil
|
|
|
|
l = gps.latitude
|
|
|
|
end
|
|
|
|
return l
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
define :lon do
|
|
|
|
l = 0.0
|
|
|
|
if gps != nil && gps.longitude != nil
|
|
|
|
l = gps.longitude
|
|
|
|
end
|
|
|
|
return l
|
2015-08-08 10:25:39 +02:00
|
|
|
end
|
|
|
|
|
2015-08-16 11:38:38 +02:00
|
|
|
|
|
|
|
define :speed do
|
|
|
|
l = 0.0
|
|
|
|
if gps != nil && gps.speed != nil
|
|
|
|
l = gps.speed
|
|
|
|
end
|
|
|
|
return l
|
|
|
|
end
|
|
|
|
|
|
|
|
sleep 2
|
|
|
|
load_sample :bd_fat
|
|
|
|
load_sample :bd_boom
|
|
|
|
load_sample :bd_haus
|
|
|
|
|
|
|
|
define :playSatelliteCount do
|
|
|
|
|
|
|
|
i = 0
|
|
|
|
print "loop"
|
|
|
|
4.times do
|
|
|
|
c = gpsSatelliteCount()
|
|
|
|
if i == 0
|
|
|
|
sample :bd_boom, amp:10
|
|
|
|
else
|
|
|
|
if i <= c
|
|
|
|
sample :bd_fat, amp: 6
|
|
|
|
else
|
|
|
|
sample :bd_haus, amp: 1
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
sleep 0.5
|
|
|
|
i = i+1
|
|
|
|
end
|
|
|
|
|
2015-08-08 10:25:39 +02:00
|
|
|
end
|
|
|
|
|
2015-08-16 11:38:38 +02:00
|
|
|
define :playTune do
|
2015-08-08 10:25:39 +02:00
|
|
|
cue :foo
|
|
|
|
4.times do |i|
|
2015-08-16 11:38:38 +02:00
|
|
|
long = (lon().abs * 10**9) % 100
|
2015-08-08 10:25:39 +02:00
|
|
|
use_random_seed long
|
2015-08-16 11:38:38 +02:00
|
|
|
4.times do
|
|
|
|
sample :bd_fat, amp: 5
|
|
|
|
4.times do
|
|
|
|
use_synth :tb303
|
|
|
|
play chord(:e5, :minor).choose, attack: 0, release: 0.1, cutoff: rrand_i(50, 90) + i * 10
|
|
|
|
sleep 0.125
|
|
|
|
end
|
2015-08-08 10:25:39 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-08-16 11:38:38 +02:00
|
|
|
if ! gotFix()
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
2015-08-08 10:25:39 +02:00
|
|
|
cue :bar
|
|
|
|
use_synth :tb303
|
2015-08-16 11:38:38 +02:00
|
|
|
8.times do |i|
|
|
|
|
sample :bd_fat, amp: 5
|
|
|
|
4.times do
|
|
|
|
gspeed = speed().modulo(1)
|
|
|
|
puts gspeed
|
|
|
|
play chord(:b4, :minor).choose, attack: 0, release: 0.05, cutoff: rrand_i(70, 98) + i, res: gspeed
|
|
|
|
sleep 0.125
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if ! gotFix()
|
|
|
|
return
|
2015-08-08 10:25:39 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
cue :baz
|
|
|
|
with_fx :reverb, mix: 0.3 do |r|
|
2015-08-16 11:38:38 +02:00
|
|
|
8.times do |m|
|
|
|
|
sample :bd_fat, amp: 5
|
|
|
|
4.times do
|
|
|
|
control r, mix: 0.3 + (0.5 * (m.to_f / 32.0)) unless m == 0 if m % 8 == 0
|
|
|
|
use_synth :prophet
|
|
|
|
play chord(:e6, :minor).choose, attack: 0, release: 0.08, cutoff: rrand_i(110, 130)
|
|
|
|
sleep 0.125
|
|
|
|
end
|
2015-08-08 10:25:39 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-08-16 11:38:38 +02:00
|
|
|
if ! gotFix()
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
2015-08-08 10:25:39 +02:00
|
|
|
cue :quux
|
|
|
|
in_thread do
|
|
|
|
use_random_seed 668
|
2015-08-16 11:38:38 +02:00
|
|
|
slat = (lat().abs * 10**7).modulo(1) + 0.1
|
2015-08-08 10:25:39 +02:00
|
|
|
with_fx :slicer, mix: 0.75, wave: 3, phase: slat do
|
2015-08-16 11:38:38 +02:00
|
|
|
4.times do
|
|
|
|
sample :bd_fat, amp: 5
|
|
|
|
4.times do
|
|
|
|
use_synth :tb303
|
|
|
|
play chord(:d3, :major).choose, attack: 0, release: 0.1, cutoff: rrand(50, 100)
|
|
|
|
sleep 0.25
|
|
|
|
end
|
2015-08-08 10:25:39 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-08-16 11:38:38 +02:00
|
|
|
if ! gotFix()
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
sleep 4
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
loop do
|
|
|
|
if gotFix()
|
|
|
|
playTune()
|
|
|
|
else
|
|
|
|
playSatelliteCount()
|
|
|
|
end
|
|
|
|
end
|