music-transcription 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: {}