Created
May 13, 2009 08:52
-
-
Save localhost/110939 to your computer and use it in GitHub Desktop.
warp-o-mat: my 2nd Bloopsaphone tune (currently unfinished)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# -=) warp-o-mat (=- | |
# tune coded/composed by freQvibez | |
# (c) 2009 Alex Brem | |
# | |
# exclusively for why's BloopSaphone | |
# | |
# from Farbrausch with ♥ | |
# | |
module LousyBloopMachine | |
class Tune | |
BPM = 67 | |
### | |
### sequences | |
### | |
SEQUENCES = { | |
:bass => %w^ | |
01 02 01 02 01 02 01 02 | |
01 02 01 02 01 02 01 02 | |
01 02 01 02 01 02 01 02 | |
01 02 01 02 01 02 01 02 | |
^, | |
:base => %w^ | |
00 01 01 01 01 01 01 01 | |
01 01 01 01 01 01 01 01 | |
01 01 01 01 01 01 01 01 | |
01 01 01 01 01 01 01 01 | |
^, | |
:snare => %w^ | |
00 00 00 00 01 01 01 02 | |
01 01 01 02 01 01 01 02 | |
01 01 01 02 01 01 01 02 | |
01 01 01 02 01 01 01 02 | |
^, | |
:hihat => %w^ | |
00 00 01 01 01 01 01 01 | |
01 01 01 01 01 01 01 01 | |
01 01 01 01 01 01 01 01 | |
01 01 01 01 01 01 01 01 | |
^, | |
:rhodes_1 => %w^ | |
00 00 00 00 | |
01 02 03 04 | |
01 02 03 04 | |
01 02 03 04 | |
^, | |
:rhodes_2 => %w^ | |
00 00 00 00 | |
01 02 03 04 | |
01 02 03 04 | |
01 02 03 04 | |
^, | |
:rhodes_3 => %w^ | |
00 00 00 00 | |
01 02 03 04 | |
01 02 03 04 | |
01 02 03 04 | |
^, | |
:rhodes_4 => %w^ | |
00 00 00 00 | |
01 02 03 04 | |
01 02 03 04 | |
01 02 03 04 | |
^, | |
:silent => %w^ | |
00 | |
00 | |
01 | |
01 | |
^, | |
:naughty => %w^ | |
00 | |
00 | |
00 | |
01 | |
^ | |
} | |
### | |
### patterns | |
### | |
PATTERNS = { | |
:bass => { | |
01 => %q^ | |
32a1[attack 0.1][sustain 0.05] 32a | |
32a 32a | |
32a 32a2 | |
32a1 32a | |
32a[sustain 0.1] 32a | |
32a 32a | |
32a[sustain 0.15] 32a | |
32a2[sustain 0.1] 32a1 | |
^, | |
02 => %q^ | |
8 16a[attack 0.2][psweep 0.5][square 0.2] 16a[attack 0.1] | |
8 16a 16 | |
16a 8 16a | |
16 16a 16 16a | |
8 16a 32a 16a 32a | |
32a 32 16a 32 | |
^ | |
}, | |
:base => { | |
00 => %q^ | |
1 | |
^, | |
01 => %q^ | |
8d2 8d 8d 8d | |
8d 8d 8d 8d | |
^ | |
}, | |
:snare => { | |
00 => %q^ | |
1 | |
^, | |
01 => %q^ | |
8 8a 8 8a | |
8 8a 8 8a | |
^, | |
02 => %q^ | |
8 8a 8 8a | |
16 16 8a 32 32a[volume 0.05] 16 8a[volume 0.25] | |
^ | |
}, | |
:hihat => { | |
00 => %q^ | |
1 | |
^, | |
01 => %q^ | |
16 16a 16 16a 16 16a 16 16a | |
16 16a 16 16a 16 16a 16 16a | |
^ | |
}, | |
:rhodes_1 => { | |
00 => %q^ | |
1 1 | |
^, | |
01 => %q^ | |
1c4 1e4 | |
^, | |
02 => %q^ | |
1c4 1e4 | |
^, | |
03 => %q^ | |
1d4 1c4 | |
^, | |
04 => %q^ | |
1e4 1eb4 | |
^ | |
}, | |
:rhodes_2 => { | |
00 => %q^ | |
1 1 | |
^, | |
01 => %q^ | |
1e4 1g4 | |
^, | |
02 => %q^ | |
1e4 1g4 | |
^, | |
03 => %q^ | |
1g4 1d4 | |
^, | |
04 => %q^ | |
1gb4 1gb4 | |
^ | |
}, | |
:rhodes_3 => { | |
00 => %q^ | |
1 1 | |
^, | |
01 => %q^ | |
1g4 1b4 | |
^, | |
02 => %q^ | |
1g4 1b4 | |
^, | |
03 => %q^ | |
1a4 1g4 | |
^, | |
04 => %q^ | |
1g4 1g4 | |
^ | |
}, | |
:rhodes_4 => { | |
00 => %q^ | |
1 1 | |
^, | |
01 => %q^ | |
1b4 1d4 | |
^, | |
02 => %q^ | |
1b4 1d4 | |
^, | |
03 => %q^ | |
1c4 1b4 | |
^, | |
04 => %q^ | |
1c4 1b4 | |
^ | |
}, | |
:silent => { | |
00 => %q^ | |
1 1 1 1 | |
1 1 1 1 | |
^, | |
01 => %q^ | |
1b4 1d5 | |
2b4 2g4 1e4 | |
1c4 2gb5 2b4 | |
1c4 1b3 | |
^ | |
}, | |
:naughty => { | |
00 => %q^ | |
1 1 1 1 | |
1 1 1 1 | |
^, | |
01 => %q^ | |
2 | |
1b4 1e4 | |
2b3 2d4 2b4 | |
1a4 2gb4 2a3 | |
1eb4 1gb4 | |
^ | |
} | |
} | |
end | |
### | |
### playroutine | |
### | |
require 'yaml' | |
require './bloops' | |
extend self | |
def init | |
@bloops ||= Bloops.new | |
@bloops.tempo = Tune::BPM | |
return if @sounds | |
@sounds = {} | |
YAML.load(DATA.read).each do |track,instrument| | |
@sounds[track] = @bloops.sound instrument['sound'].split("::").inject(Object) { |c1,c2| c1.const_get(c2) } | |
instrument.reject{|k,v| k == 'sound'}.each do |sound,value| | |
@sounds[track].send "#{sound}=", value | |
end | |
end | |
Tune::SEQUENCES.each do |track,sequences| | |
instr = track.to_s.split('_')[0] | |
next unless @sounds[instr] | |
next unless Tune::PATTERNS[track] | |
notes = '' | |
sequences.each do |seq| | |
seq = seq.to_i | |
next unless Tune::PATTERNS[track][seq] | |
notes << Tune::PATTERNS[track][seq] | |
end | |
@bloops.tune @sounds[instr], notes | |
end | |
end | |
def play | |
init unless @bloops | |
@bloops.play | |
sleep 0.05 while [email protected]? | |
end | |
def play_endless | |
while true do play; end | |
end | |
end | |
LousyBloopMachine.play_endless if $0 == __FILE__ | |
### | |
### instruments | |
### | |
__END__ | |
bass: | |
sound: Bloops::SQUARE | |
volume: 0.9 | |
attack: 0.1 | |
decay: 0.15 | |
sustain: 0.05 | |
square: 0.05 | |
phase: 0.5 | |
psweep: -0.255 | |
base: | |
sound: Bloops::SINE | |
volume: 0.6 | |
attack: 0.0 | |
decay: 0.25 | |
sustain: 0.15 | |
lpf: 0.45 | |
resonance: 0.4 | |
dslide: -0.3 | |
snare: | |
sound: Bloops::NOISE | |
volume: 0.25 | |
attack: 0.01 | |
decay: 0.305 | |
sustain: 0 | |
hpf: 0.65 | |
resonance: 0.24 | |
dslide: -0.452 | |
hihat: | |
sound: Bloops::NOISE | |
volume: 0.25 | |
attack: 0.150 | |
decay: 0.105 | |
sustain: 0.205 | |
hpf: 0.95 | |
rhodes: | |
sound: Bloops::SAWTOOTH | |
volume: 0.09 | |
attack: 0.55 | |
decay: 1.0 | |
sustain: 0.45 | |
lpf: 0.55 | |
lsweep: -0.005 | |
resonance: 0.35 | |
vibe: 0.035 | |
vspeed: 0.292 | |
phase: 0.305 | |
psweep: -0.025 | |
vdelay: 0.9 | |
silent: | |
sound: Bloops::SINE | |
volume: 0.45 | |
attack: 0.35 | |
decay: 0.95 | |
sustain: 0.85 | |
lpf: 0.25 | |
lsweep: -0.025 | |
hpf: 0.25 | |
hsweep: -0.025 | |
resonance: 0.75 | |
vibe: 0.055 | |
vspeed: -0.325 | |
phase: 0.505 | |
psweep: -0.025 | |
naughty: | |
sound: Bloops::SQUARE | |
volume: 0.15 | |
attack: 0.45 | |
decay: 0.95 | |
sustain: 0.85 | |
lpf: 0.25 | |
lsweep: -0.025 | |
hpf: 0.25 | |
hsweep: -0.025 | |
resonance: 0.65 | |
vibe: 0.065 | |
vspeed: -0.325 | |
phase: 0.305 | |
psweep: -0.025 | |
square: 0.75 | |
phase: 0.0 | |
psweep: 0.555 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment