music-transcription 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. data/.document +3 -0
  2. data/.gitignore +7 -0
  3. data/.rspec +1 -0
  4. data/.yardopts +1 -0
  5. data/ChangeLog.rdoc +4 -0
  6. data/Gemfile +3 -0
  7. data/LICENSE.txt +20 -0
  8. data/README.rdoc +28 -0
  9. data/Rakefile +54 -0
  10. data/bin/transcribe +176 -0
  11. data/lib/music-transcription.rb +20 -0
  12. data/lib/music-transcription/arrangement.rb +31 -0
  13. data/lib/music-transcription/instrument_config.rb +38 -0
  14. data/lib/music-transcription/interval.rb +66 -0
  15. data/lib/music-transcription/link.rb +115 -0
  16. data/lib/music-transcription/note.rb +156 -0
  17. data/lib/music-transcription/part.rb +128 -0
  18. data/lib/music-transcription/pitch.rb +297 -0
  19. data/lib/music-transcription/pitch_constants.rb +204 -0
  20. data/lib/music-transcription/profile.rb +105 -0
  21. data/lib/music-transcription/program.rb +136 -0
  22. data/lib/music-transcription/score.rb +122 -0
  23. data/lib/music-transcription/tempo.rb +44 -0
  24. data/lib/music-transcription/transition.rb +71 -0
  25. data/lib/music-transcription/value_change.rb +85 -0
  26. data/lib/music-transcription/version.rb +7 -0
  27. data/music-transcription.gemspec +36 -0
  28. data/samples/arrangements/glissando_test.yml +71 -0
  29. data/samples/arrangements/hip.yml +952 -0
  30. data/samples/arrangements/instrument_test.yml +119 -0
  31. data/samples/arrangements/legato_test.yml +237 -0
  32. data/samples/arrangements/make_glissando_test.rb +27 -0
  33. data/samples/arrangements/make_hip.rb +75 -0
  34. data/samples/arrangements/make_instrument_test.rb +34 -0
  35. data/samples/arrangements/make_legato_test.rb +37 -0
  36. data/samples/arrangements/make_missed_connection.rb +72 -0
  37. data/samples/arrangements/make_portamento_test.rb +27 -0
  38. data/samples/arrangements/make_slur_test.rb +37 -0
  39. data/samples/arrangements/make_song1.rb +84 -0
  40. data/samples/arrangements/make_song2.rb +69 -0
  41. data/samples/arrangements/missed_connection.yml +481 -0
  42. data/samples/arrangements/portamento_test.yml +71 -0
  43. data/samples/arrangements/slur_test.yml +237 -0
  44. data/samples/arrangements/song1.yml +640 -0
  45. data/samples/arrangements/song2.yml +429 -0
  46. data/spec/instrument_config_spec.rb +47 -0
  47. data/spec/interval_spec.rb +38 -0
  48. data/spec/link_spec.rb +22 -0
  49. data/spec/musicality_spec.rb +7 -0
  50. data/spec/note_spec.rb +65 -0
  51. data/spec/part_spec.rb +87 -0
  52. data/spec/pitch_spec.rb +139 -0
  53. data/spec/profile_spec.rb +24 -0
  54. data/spec/program_spec.rb +55 -0
  55. data/spec/score_spec.rb +55 -0
  56. data/spec/spec_helper.rb +23 -0
  57. data/spec/transition_spec.rb +13 -0
  58. data/spec/value_change_spec.rb +19 -0
  59. metadata +239 -0
@@ -0,0 +1,34 @@
1
+ require 'music-transcription'
2
+ require 'yaml'
3
+
4
+ include Music::Transcription
5
+
6
+ arrangement = Arrangement.new(
7
+ :score => TempoScore.new(
8
+ :program => Program.new(
9
+ :segments => [0...1.0]
10
+ ),
11
+ :tempo_profile => profile(tempo(120)),
12
+ :parts => {
13
+ 1 => Part.new(
14
+ :loudness_profile => profile(0.5),
15
+ :notes => [
16
+ note(0.125, [ interval(C3) ] ),
17
+ note(0.125, [ interval(D3) ] ),
18
+ note(0.25, [ interval(C3) ] ),
19
+ note(0.50, [ interval(C3), interval(E3) ] ),
20
+ ]
21
+ )
22
+ }
23
+ ),
24
+ :instrument_configs => {
25
+ 1 => InstrumentConfig.new(
26
+ :plugin_name => 'synth_instr_3',
27
+ :initial_settings => ["blend", "short attack", "long decay"]
28
+ ),
29
+ }
30
+ )
31
+
32
+ File.open("instrument_test.yml", "w") do |file|
33
+ file.write arrangement.to_yaml
34
+ end
@@ -0,0 +1,37 @@
1
+ require 'music-transcription'
2
+ require 'yaml'
3
+
4
+ include Music::Transcription
5
+
6
+ arrangement = Arrangement.new(
7
+ :score => TempoScore.new(
8
+ :program => Program.new(
9
+ :segments => [0...4.0]
10
+ ),
11
+ :tempo_profile => profile(tempo(120)),
12
+ :parts => {
13
+ 1 => Part.new(
14
+ :notes => [
15
+ note(0.25, [ interval(C3) ]),
16
+ note(0.25, [ interval(D3) ]),
17
+ note(0.25, [ interval(E3) ]),
18
+ note(0.25, [ interval(F3) ]),
19
+ note(0.25, [ interval(E3) ]),
20
+ note(0.25, [ interval(D3) ]),
21
+ note(0.5, [ interval(C3) ]),
22
+ note(0.25, [ interval(C3, legato(D3)) ]),
23
+ note(0.25, [ interval(D3, legato(E3)) ]),
24
+ note(0.25, [ interval(E3, legato(F3)) ]),
25
+ note(0.25, [ interval(F3, legato(E3)) ]),
26
+ note(0.25, [ interval(E3, legato(D3)) ]),
27
+ note(0.25, [ interval(D3, legato(C3)) ]),
28
+ note(0.5, [ interval(C3) ]),
29
+ ]
30
+ )
31
+ }
32
+ )
33
+ )
34
+
35
+ File.open("legato_test.yml", "w") do |file|
36
+ file.write arrangement.to_yaml
37
+ end
@@ -0,0 +1,72 @@
1
+ require 'music-transcription'
2
+ require 'yaml'
3
+
4
+ include Music::Transcription
5
+
6
+ arrangement = Arrangement.new(
7
+ :score => TempoScore.new(
8
+ :program => Program.new(
9
+ :segments => [0...8.0]
10
+ ),
11
+ :tempo_profile => profile(tempo(120)),
12
+ :parts => {
13
+ "bass" => Part.new(
14
+ :notes => [
15
+ # 0.0
16
+ note(0.25, [ interval(Eb2) ]),
17
+ note(0.25),
18
+ note(0.25, [ interval(Bb2) ]),
19
+ note(0.25),
20
+ note(0.25, [ interval(Eb2) ]),
21
+ note(0.125),
22
+ note(0.125, [ interval(B2) ]),
23
+ note(0.25, [ interval(Bb2) ]),
24
+ note(0.25, [ interval(Ab2) ]),
25
+
26
+ # 2.0
27
+ note(0.25, [ interval(Eb2) ]),
28
+ note(0.25),
29
+ note(0.25, [ interval(Bb2) ]),
30
+ note(0.25),
31
+ note(0.25, [ interval(Eb2) ]),
32
+ note(0.125),
33
+ note(0.125, [ interval(B2) ]),
34
+ note(0.25, [ interval(Bb2) ]),
35
+ note(0.25, [ interval(Ab2) ]),
36
+
37
+ # 4.0
38
+ note(0.25, [ interval(Bb2) ]),
39
+ note(0.125),
40
+ note(0.125, [ interval(F3, tie(F3)) ]),
41
+ note(0.5, [ interval(F3) ]),
42
+ note(0.25, [ interval(Bb2) ]),
43
+ note(0.125),
44
+ note(0.125, [ interval(F3, tie(F3)) ]),
45
+ note(0.5, [ interval(F3) ]),
46
+
47
+ # 6.0
48
+ note(0.25, [ interval(B2) ]),
49
+ note(0.125),
50
+ note(0.125, [ interval(Gb3, tie(Gb3)) ]),
51
+ note(0.5, [ interval(Gb3) ]),
52
+ note(0.25, [ interval(B2) ]),
53
+ note(0.125),
54
+ note(0.125, [ interval(Gb3, tie(Gb3)) ]),
55
+ note(0.5, [ interval(Gb3) ]),
56
+
57
+ #8.0
58
+ ]
59
+ )
60
+ }
61
+ ),
62
+ :instrument_configs => {
63
+ "bass" => InstrumentConfig.new(
64
+ :plugin_name => 'synth_instr_3',
65
+ :initial_settings => "blend"
66
+ ),
67
+ }
68
+ )
69
+
70
+ File.open("missed_connection.yml", "w") do |file|
71
+ file.write arrangement.to_yaml
72
+ end
@@ -0,0 +1,27 @@
1
+ require 'music-transcription'
2
+ require 'yaml'
3
+
4
+ include Music::Transcription
5
+
6
+ arrangement = Arrangement.new(
7
+ :score => TempoScore.new(
8
+ :program => Program.new(
9
+ :segments => [0...4.0]
10
+ ),
11
+ :tempo_profile => profile(tempo(120)),
12
+ :parts => {
13
+ 1 => Part.new(
14
+ :loudness_profile => profile(0.5),
15
+ :notes => [
16
+ note(0.75, [ interval(C3, portamento(F3)) ]),
17
+ note(0.75, [ interval(F3, portamento(C3)) ]),
18
+ note(0.5, [ interval(C3) ]),
19
+ ]
20
+ )
21
+ }
22
+ )
23
+ )
24
+
25
+ File.open("portamento_test.yml", "w") do |file|
26
+ file.write arrangement.to_yaml
27
+ end
@@ -0,0 +1,37 @@
1
+ require 'music-transcription'
2
+ require 'yaml'
3
+
4
+ include Music::Transcription
5
+
6
+ arrangement = Arrangement.new(
7
+ :score => TempoScore.new(
8
+ :program => Program.new(
9
+ :segments => [0...4.0]
10
+ ),
11
+ :tempo_profile => profile(tempo(120)),
12
+ :parts => {
13
+ 1 => Part.new(
14
+ :notes => [
15
+ note(0.25, [ interval(C3) ]),
16
+ note(0.25, [ interval(D3) ]),
17
+ note(0.25, [ interval(E3) ]),
18
+ note(0.25, [ interval(F3) ]),
19
+ note(0.25, [ interval(E3) ]),
20
+ note(0.25, [ interval(D3) ]),
21
+ note(0.5, [ interval(C3) ]),
22
+ note(0.25, [ interval(C3, slur(D3)) ]),
23
+ note(0.25, [ interval(D3, slur(E3)) ]),
24
+ note(0.25, [ interval(E3, slur(F3)) ]),
25
+ note(0.25, [ interval(F3, slur(E3)) ]),
26
+ note(0.25, [ interval(E3, slur(D3)) ]),
27
+ note(0.25, [ interval(D3, slur(C3)) ]),
28
+ note(0.5, [ interval(C3) ]),
29
+ ]
30
+ )
31
+ }
32
+ )
33
+ )
34
+
35
+ File.open("slur_test.yml", "w") do |file|
36
+ file.write arrangement.to_yaml
37
+ end
@@ -0,0 +1,84 @@
1
+ require 'music-transcription'
2
+ require 'yaml'
3
+
4
+ include Music::Transcription
5
+
6
+ arrangement = Arrangement.new(
7
+ :score => TempoScore.new(
8
+ :program => Program.new(
9
+ :segments => [
10
+ 0...4.0,
11
+ 0...4.0
12
+ ]
13
+ ),
14
+ :tempo_profile => profile(tempo(120)),
15
+ :parts => {
16
+ 1 => Part.new(
17
+ :notes => [
18
+ note(0.375, [interval(C2) ]),
19
+ note(0.25, [interval(Eb2) ]),
20
+ note(0.3125, [interval(F2) ]),
21
+ note(0.0625, [interval(Eb2) ]),
22
+ # 1.0
23
+ note(0.125),
24
+ note(0.25, [interval(C2) ]),
25
+ note(0.25, [interval(Eb2) ]),
26
+ note(0.375),
27
+ # 2.0
28
+ note(0.375, [interval(C2) ]),
29
+ note(0.25, [interval(Eb2) ]),
30
+ note(0.3125, [interval(F2) ]),
31
+ note(0.0625, [interval(Eb2) ]),
32
+ # 3.0
33
+ note(0.125),
34
+ note(0.25, [interval(C2) ]),
35
+ note(0.25, [interval(Eb2) ]),
36
+ ]
37
+ ),
38
+ 2 => Part.new(
39
+ :notes => [
40
+ # 0.0
41
+ note(0.125),
42
+ note(0.125, [interval(Bb3) ]),
43
+ note(0.125, [interval(Bb3) ]),
44
+ note(0.125, [interval(Bb3) ]),
45
+ note(0.125, [interval(Bb3) ]),
46
+ note(0.25, [interval(C4) ]),
47
+ note(0.25, [interval(A3) ]),
48
+ note(0.125, [interval(G3) ]),
49
+ note(0.125, [interval(F3) ]),
50
+ note(0.3125, [interval(G3, slur(F3)) ]),
51
+ note(0.0625, [interval(F3, slur(E3)) ]),
52
+ note(0.125, [interval(E3) ]),
53
+ note(0.125),
54
+ # 2.0
55
+ note(0.125),
56
+ note(0.125, [interval(Bb3) ]),
57
+ note(0.125, [interval(Bb3) ]),
58
+ note(0.125, [interval(Bb3) ]),
59
+ note(0.125, [interval(Bb3) ]),
60
+ note(0.25, [interval(C4) ]),
61
+ note(0.125, [interval(A3) ]),
62
+ note(0.125, [interval(E4) ]),
63
+ note(0.125, [interval(E4, slur(D4)) ]),
64
+ note(0.125, [interval(D4, slur(C4)) ]),
65
+ note(0.125, [interval(C4) ]),
66
+ ]
67
+ )
68
+ }
69
+ ),
70
+ :instrument_configs => {
71
+ 1 => InstrumentConfig.new(
72
+ :plugin_name => 'synth_instr_3',
73
+ :initial_settings => "blend"
74
+ ),
75
+ 2 => InstrumentConfig.new(
76
+ :plugin_name => 'synth_instr_3',
77
+ :initial_settings => "blend"
78
+ ),
79
+ }
80
+ )
81
+
82
+ File.open("song1.yml", "w") do |file|
83
+ file.write arrangement.to_yaml
84
+ end
@@ -0,0 +1,69 @@
1
+ require 'music-transcription'
2
+ require 'yaml'
3
+
4
+ include Music::Transcription
5
+
6
+ arrangement = Arrangement.new(
7
+ :score => TempoScore.new(
8
+ :program => Program.new(
9
+ :segments => [0...4.0, 0...4.0 ]
10
+ ),
11
+ :tempo_profile => profile(tempo(120)),
12
+ :parts => {
13
+ 1 => Part.new(
14
+ :notes => [
15
+ note(1.0, [ interval(C4) ]),
16
+ note(1.0, [ interval(Bb3) ]),
17
+ note(1.0, [ interval(Ab3) ]),
18
+ note(0.5, [ interval(G3) ]),
19
+ note(0.5, [ interval(Bb3) ]),
20
+ ]
21
+ ),
22
+ 2 => Part.new(
23
+ :notes => [
24
+ note(0.375, [ interval(E5) ]),
25
+ note(1.0, [ interval(D5)]),
26
+ note(1.0, [ interval(C5)]),
27
+ note(0.625, [ interval(C5)]),
28
+ note(0.5, [ interval(C5)]),
29
+ note(0.5, [ interval(D5)])
30
+ ]
31
+ ),
32
+ 3 => Part.new(
33
+ :notes => [
34
+ note(0.125),
35
+ note(0.25, [interval(G5)] ),
36
+ note(0.5, [interval(F5)] ),
37
+ note(0.25),
38
+ note(0.25, [interval(F5)] ),
39
+ note(0.5, [interval(Eb5)] ),
40
+ note(0.25),
41
+ note(0.25, [interval(Eb5)] ),
42
+ note(0.5, [interval(Eb5)] ),
43
+ note(0.125),
44
+ note(0.5, [interval(Eb5)] ),
45
+ note(0.5, [interval(F5)] ),
46
+ ]
47
+ )
48
+ }
49
+ ),
50
+ :instrument_configs => {
51
+ 1 => InstrumentConfig.new(
52
+ :plugin_name => 'synth_instr_3',
53
+ :initial_settings => "blend"
54
+ ),
55
+ 2 => InstrumentConfig.new(
56
+ :plugin_name => 'synth_instr_3',
57
+ :initial_settings => "blend"
58
+ ),
59
+ 3 => InstrumentConfig.new(
60
+ :plugin_name => 'synth_instr_3',
61
+ :initial_settings => "blend"
62
+ )
63
+ }
64
+ )
65
+
66
+ File.open("song2.yml", "w") do |file|
67
+ file.write arrangement.to_yaml
68
+ end
69
+
@@ -0,0 +1,481 @@
1
+ --- !ruby/object:Music::Transcription::Arrangement
2
+ score: !ruby/object:Music::Transcription::TempoScore
3
+ tempo_profile: !ruby/object:Music::Transcription::Profile
4
+ start_value: !ruby/object:Music::Transcription::Tempo
5
+ beats_per_minute: 120
6
+ beat_duration: !ruby/object:Rational
7
+ denominator: 4
8
+ numerator: 1
9
+ value_changes: {}
10
+ parts:
11
+ bass: !ruby/object:Music::Transcription::Part
12
+ offset: 0
13
+ loudness_profile: !ruby/object:Music::Transcription::Profile
14
+ start_value: 0.5
15
+ value_changes: {}
16
+ notes:
17
+ - !ruby/object:Music::Transcription::Note
18
+ duration: 0.25
19
+ intervals:
20
+ - !ruby/object:Music::Transcription::Interval
21
+ pitch: &21122960 !ruby/object:Music::Transcription::Pitch
22
+ cents_per_octave: 1200
23
+ octave: 2
24
+ semitone: 3
25
+ cent: 0
26
+ base_freq: 16.351597831287414
27
+ link: !ruby/object:Music::Transcription::Link
28
+ target_pitch: !ruby/object:Music::Transcription::Pitch
29
+ cents_per_octave: 1200
30
+ octave: 0
31
+ semitone: 0
32
+ cent: 0
33
+ base_freq: 16.351597831287414
34
+ relationship: :none
35
+ sustain: 0.5
36
+ attack: 0.5
37
+ separation: 0.5
38
+ - !ruby/object:Music::Transcription::Note
39
+ duration: 0.25
40
+ intervals: []
41
+ sustain: 0.5
42
+ attack: 0.5
43
+ separation: 0.5
44
+ - !ruby/object:Music::Transcription::Note
45
+ duration: 0.25
46
+ intervals:
47
+ - !ruby/object:Music::Transcription::Interval
48
+ pitch: &21119760 !ruby/object:Music::Transcription::Pitch
49
+ cents_per_octave: 1200
50
+ octave: 2
51
+ semitone: 10
52
+ cent: 0
53
+ base_freq: 16.351597831287414
54
+ link: !ruby/object:Music::Transcription::Link
55
+ target_pitch: !ruby/object:Music::Transcription::Pitch
56
+ cents_per_octave: 1200
57
+ octave: 0
58
+ semitone: 0
59
+ cent: 0
60
+ base_freq: 16.351597831287414
61
+ relationship: :none
62
+ sustain: 0.5
63
+ attack: 0.5
64
+ separation: 0.5
65
+ - !ruby/object:Music::Transcription::Note
66
+ duration: 0.25
67
+ intervals: []
68
+ sustain: 0.5
69
+ attack: 0.5
70
+ separation: 0.5
71
+ - !ruby/object:Music::Transcription::Note
72
+ duration: 0.25
73
+ intervals:
74
+ - !ruby/object:Music::Transcription::Interval
75
+ pitch: *21122960
76
+ link: !ruby/object:Music::Transcription::Link
77
+ target_pitch: !ruby/object:Music::Transcription::Pitch
78
+ cents_per_octave: 1200
79
+ octave: 0
80
+ semitone: 0
81
+ cent: 0
82
+ base_freq: 16.351597831287414
83
+ relationship: :none
84
+ sustain: 0.5
85
+ attack: 0.5
86
+ separation: 0.5
87
+ - !ruby/object:Music::Transcription::Note
88
+ duration: 0.125
89
+ intervals: []
90
+ sustain: 0.5
91
+ attack: 0.5
92
+ separation: 0.5
93
+ - !ruby/object:Music::Transcription::Note
94
+ duration: 0.125
95
+ intervals:
96
+ - !ruby/object:Music::Transcription::Interval
97
+ pitch: &21119280 !ruby/object:Music::Transcription::Pitch
98
+ cents_per_octave: 1200
99
+ octave: 2
100
+ semitone: 11
101
+ cent: 0
102
+ base_freq: 16.351597831287414
103
+ link: !ruby/object:Music::Transcription::Link
104
+ target_pitch: !ruby/object:Music::Transcription::Pitch
105
+ cents_per_octave: 1200
106
+ octave: 0
107
+ semitone: 0
108
+ cent: 0
109
+ base_freq: 16.351597831287414
110
+ relationship: :none
111
+ sustain: 0.5
112
+ attack: 0.5
113
+ separation: 0.5
114
+ - !ruby/object:Music::Transcription::Note
115
+ duration: 0.25
116
+ intervals:
117
+ - !ruby/object:Music::Transcription::Interval
118
+ pitch: *21119760
119
+ link: !ruby/object:Music::Transcription::Link
120
+ target_pitch: !ruby/object:Music::Transcription::Pitch
121
+ cents_per_octave: 1200
122
+ octave: 0
123
+ semitone: 0
124
+ cent: 0
125
+ base_freq: 16.351597831287414
126
+ relationship: :none
127
+ sustain: 0.5
128
+ attack: 0.5
129
+ separation: 0.5
130
+ - !ruby/object:Music::Transcription::Note
131
+ duration: 0.25
132
+ intervals:
133
+ - !ruby/object:Music::Transcription::Interval
134
+ pitch: &21120620 !ruby/object:Music::Transcription::Pitch
135
+ cents_per_octave: 1200
136
+ octave: 2
137
+ semitone: 8
138
+ cent: 0
139
+ base_freq: 16.351597831287414
140
+ link: !ruby/object:Music::Transcription::Link
141
+ target_pitch: !ruby/object:Music::Transcription::Pitch
142
+ cents_per_octave: 1200
143
+ octave: 0
144
+ semitone: 0
145
+ cent: 0
146
+ base_freq: 16.351597831287414
147
+ relationship: :none
148
+ sustain: 0.5
149
+ attack: 0.5
150
+ separation: 0.5
151
+ - !ruby/object:Music::Transcription::Note
152
+ duration: 0.25
153
+ intervals:
154
+ - !ruby/object:Music::Transcription::Interval
155
+ pitch: *21122960
156
+ link: !ruby/object:Music::Transcription::Link
157
+ target_pitch: !ruby/object:Music::Transcription::Pitch
158
+ cents_per_octave: 1200
159
+ octave: 0
160
+ semitone: 0
161
+ cent: 0
162
+ base_freq: 16.351597831287414
163
+ relationship: :none
164
+ sustain: 0.5
165
+ attack: 0.5
166
+ separation: 0.5
167
+ - !ruby/object:Music::Transcription::Note
168
+ duration: 0.25
169
+ intervals: []
170
+ sustain: 0.5
171
+ attack: 0.5
172
+ separation: 0.5
173
+ - !ruby/object:Music::Transcription::Note
174
+ duration: 0.25
175
+ intervals:
176
+ - !ruby/object:Music::Transcription::Interval
177
+ pitch: *21119760
178
+ link: !ruby/object:Music::Transcription::Link
179
+ target_pitch: !ruby/object:Music::Transcription::Pitch
180
+ cents_per_octave: 1200
181
+ octave: 0
182
+ semitone: 0
183
+ cent: 0
184
+ base_freq: 16.351597831287414
185
+ relationship: :none
186
+ sustain: 0.5
187
+ attack: 0.5
188
+ separation: 0.5
189
+ - !ruby/object:Music::Transcription::Note
190
+ duration: 0.25
191
+ intervals: []
192
+ sustain: 0.5
193
+ attack: 0.5
194
+ separation: 0.5
195
+ - !ruby/object:Music::Transcription::Note
196
+ duration: 0.25
197
+ intervals:
198
+ - !ruby/object:Music::Transcription::Interval
199
+ pitch: *21122960
200
+ link: !ruby/object:Music::Transcription::Link
201
+ target_pitch: !ruby/object:Music::Transcription::Pitch
202
+ cents_per_octave: 1200
203
+ octave: 0
204
+ semitone: 0
205
+ cent: 0
206
+ base_freq: 16.351597831287414
207
+ relationship: :none
208
+ sustain: 0.5
209
+ attack: 0.5
210
+ separation: 0.5
211
+ - !ruby/object:Music::Transcription::Note
212
+ duration: 0.125
213
+ intervals: []
214
+ sustain: 0.5
215
+ attack: 0.5
216
+ separation: 0.5
217
+ - !ruby/object:Music::Transcription::Note
218
+ duration: 0.125
219
+ intervals:
220
+ - !ruby/object:Music::Transcription::Interval
221
+ pitch: *21119280
222
+ link: !ruby/object:Music::Transcription::Link
223
+ target_pitch: !ruby/object:Music::Transcription::Pitch
224
+ cents_per_octave: 1200
225
+ octave: 0
226
+ semitone: 0
227
+ cent: 0
228
+ base_freq: 16.351597831287414
229
+ relationship: :none
230
+ sustain: 0.5
231
+ attack: 0.5
232
+ separation: 0.5
233
+ - !ruby/object:Music::Transcription::Note
234
+ duration: 0.25
235
+ intervals:
236
+ - !ruby/object:Music::Transcription::Interval
237
+ pitch: *21119760
238
+ link: !ruby/object:Music::Transcription::Link
239
+ target_pitch: !ruby/object:Music::Transcription::Pitch
240
+ cents_per_octave: 1200
241
+ octave: 0
242
+ semitone: 0
243
+ cent: 0
244
+ base_freq: 16.351597831287414
245
+ relationship: :none
246
+ sustain: 0.5
247
+ attack: 0.5
248
+ separation: 0.5
249
+ - !ruby/object:Music::Transcription::Note
250
+ duration: 0.25
251
+ intervals:
252
+ - !ruby/object:Music::Transcription::Interval
253
+ pitch: *21120620
254
+ link: !ruby/object:Music::Transcription::Link
255
+ target_pitch: !ruby/object:Music::Transcription::Pitch
256
+ cents_per_octave: 1200
257
+ octave: 0
258
+ semitone: 0
259
+ cent: 0
260
+ base_freq: 16.351597831287414
261
+ relationship: :none
262
+ sustain: 0.5
263
+ attack: 0.5
264
+ separation: 0.5
265
+ - !ruby/object:Music::Transcription::Note
266
+ duration: 0.25
267
+ intervals:
268
+ - !ruby/object:Music::Transcription::Interval
269
+ pitch: *21119760
270
+ link: !ruby/object:Music::Transcription::Link
271
+ target_pitch: !ruby/object:Music::Transcription::Pitch
272
+ cents_per_octave: 1200
273
+ octave: 0
274
+ semitone: 0
275
+ cent: 0
276
+ base_freq: 16.351597831287414
277
+ relationship: :none
278
+ sustain: 0.5
279
+ attack: 0.5
280
+ separation: 0.5
281
+ - !ruby/object:Music::Transcription::Note
282
+ duration: 0.125
283
+ intervals: []
284
+ sustain: 0.5
285
+ attack: 0.5
286
+ separation: 0.5
287
+ - !ruby/object:Music::Transcription::Note
288
+ duration: 0.125
289
+ intervals:
290
+ - !ruby/object:Music::Transcription::Interval
291
+ pitch: &21116120 !ruby/object:Music::Transcription::Pitch
292
+ cents_per_octave: 1200
293
+ octave: 3
294
+ semitone: 5
295
+ cent: 0
296
+ base_freq: 16.351597831287414
297
+ link: !ruby/object:Music::Transcription::Link
298
+ target_pitch: *21116120
299
+ relationship: :tie
300
+ sustain: 0.5
301
+ attack: 0.5
302
+ separation: 0.5
303
+ - !ruby/object:Music::Transcription::Note
304
+ duration: 0.5
305
+ intervals:
306
+ - !ruby/object:Music::Transcription::Interval
307
+ pitch: *21116120
308
+ link: !ruby/object:Music::Transcription::Link
309
+ target_pitch: !ruby/object:Music::Transcription::Pitch
310
+ cents_per_octave: 1200
311
+ octave: 0
312
+ semitone: 0
313
+ cent: 0
314
+ base_freq: 16.351597831287414
315
+ relationship: :none
316
+ sustain: 0.5
317
+ attack: 0.5
318
+ separation: 0.5
319
+ - !ruby/object:Music::Transcription::Note
320
+ duration: 0.25
321
+ intervals:
322
+ - !ruby/object:Music::Transcription::Interval
323
+ pitch: *21119760
324
+ link: !ruby/object:Music::Transcription::Link
325
+ target_pitch: !ruby/object:Music::Transcription::Pitch
326
+ cents_per_octave: 1200
327
+ octave: 0
328
+ semitone: 0
329
+ cent: 0
330
+ base_freq: 16.351597831287414
331
+ relationship: :none
332
+ sustain: 0.5
333
+ attack: 0.5
334
+ separation: 0.5
335
+ - !ruby/object:Music::Transcription::Note
336
+ duration: 0.125
337
+ intervals: []
338
+ sustain: 0.5
339
+ attack: 0.5
340
+ separation: 0.5
341
+ - !ruby/object:Music::Transcription::Note
342
+ duration: 0.125
343
+ intervals:
344
+ - !ruby/object:Music::Transcription::Interval
345
+ pitch: *21116120
346
+ link: !ruby/object:Music::Transcription::Link
347
+ target_pitch: *21116120
348
+ relationship: :tie
349
+ sustain: 0.5
350
+ attack: 0.5
351
+ separation: 0.5
352
+ - !ruby/object:Music::Transcription::Note
353
+ duration: 0.5
354
+ intervals:
355
+ - !ruby/object:Music::Transcription::Interval
356
+ pitch: *21116120
357
+ link: !ruby/object:Music::Transcription::Link
358
+ target_pitch: !ruby/object:Music::Transcription::Pitch
359
+ cents_per_octave: 1200
360
+ octave: 0
361
+ semitone: 0
362
+ cent: 0
363
+ base_freq: 16.351597831287414
364
+ relationship: :none
365
+ sustain: 0.5
366
+ attack: 0.5
367
+ separation: 0.5
368
+ - !ruby/object:Music::Transcription::Note
369
+ duration: 0.25
370
+ intervals:
371
+ - !ruby/object:Music::Transcription::Interval
372
+ pitch: *21119280
373
+ link: !ruby/object:Music::Transcription::Link
374
+ target_pitch: !ruby/object:Music::Transcription::Pitch
375
+ cents_per_octave: 1200
376
+ octave: 0
377
+ semitone: 0
378
+ cent: 0
379
+ base_freq: 16.351597831287414
380
+ relationship: :none
381
+ sustain: 0.5
382
+ attack: 0.5
383
+ separation: 0.5
384
+ - !ruby/object:Music::Transcription::Note
385
+ duration: 0.125
386
+ intervals: []
387
+ sustain: 0.5
388
+ attack: 0.5
389
+ separation: 0.5
390
+ - !ruby/object:Music::Transcription::Note
391
+ duration: 0.125
392
+ intervals:
393
+ - !ruby/object:Music::Transcription::Interval
394
+ pitch: &21115700 !ruby/object:Music::Transcription::Pitch
395
+ cents_per_octave: 1200
396
+ octave: 3
397
+ semitone: 6
398
+ cent: 0
399
+ base_freq: 16.351597831287414
400
+ link: !ruby/object:Music::Transcription::Link
401
+ target_pitch: *21115700
402
+ relationship: :tie
403
+ sustain: 0.5
404
+ attack: 0.5
405
+ separation: 0.5
406
+ - !ruby/object:Music::Transcription::Note
407
+ duration: 0.5
408
+ intervals:
409
+ - !ruby/object:Music::Transcription::Interval
410
+ pitch: *21115700
411
+ link: !ruby/object:Music::Transcription::Link
412
+ target_pitch: !ruby/object:Music::Transcription::Pitch
413
+ cents_per_octave: 1200
414
+ octave: 0
415
+ semitone: 0
416
+ cent: 0
417
+ base_freq: 16.351597831287414
418
+ relationship: :none
419
+ sustain: 0.5
420
+ attack: 0.5
421
+ separation: 0.5
422
+ - !ruby/object:Music::Transcription::Note
423
+ duration: 0.25
424
+ intervals:
425
+ - !ruby/object:Music::Transcription::Interval
426
+ pitch: *21119280
427
+ link: !ruby/object:Music::Transcription::Link
428
+ target_pitch: !ruby/object:Music::Transcription::Pitch
429
+ cents_per_octave: 1200
430
+ octave: 0
431
+ semitone: 0
432
+ cent: 0
433
+ base_freq: 16.351597831287414
434
+ relationship: :none
435
+ sustain: 0.5
436
+ attack: 0.5
437
+ separation: 0.5
438
+ - !ruby/object:Music::Transcription::Note
439
+ duration: 0.125
440
+ intervals: []
441
+ sustain: 0.5
442
+ attack: 0.5
443
+ separation: 0.5
444
+ - !ruby/object:Music::Transcription::Note
445
+ duration: 0.125
446
+ intervals:
447
+ - !ruby/object:Music::Transcription::Interval
448
+ pitch: *21115700
449
+ link: !ruby/object:Music::Transcription::Link
450
+ target_pitch: *21115700
451
+ relationship: :tie
452
+ sustain: 0.5
453
+ attack: 0.5
454
+ separation: 0.5
455
+ - !ruby/object:Music::Transcription::Note
456
+ duration: 0.5
457
+ intervals:
458
+ - !ruby/object:Music::Transcription::Interval
459
+ pitch: *21115700
460
+ link: !ruby/object:Music::Transcription::Link
461
+ target_pitch: !ruby/object:Music::Transcription::Pitch
462
+ cents_per_octave: 1200
463
+ octave: 0
464
+ semitone: 0
465
+ cent: 0
466
+ base_freq: 16.351597831287414
467
+ relationship: :none
468
+ sustain: 0.5
469
+ attack: 0.5
470
+ separation: 0.5
471
+ program: !ruby/object:Music::Transcription::Program
472
+ segments:
473
+ - !ruby/range
474
+ begin: 0
475
+ end: 8.0
476
+ excl: true
477
+ instrument_configs:
478
+ bass: !ruby/object:Music::Transcription::InstrumentConfig
479
+ plugin_name: synth_instr_3
480
+ initial_settings: blend
481
+ setting_changes: {}