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,44 @@
1
+ module Music
2
+ module Transcription
3
+
4
+ # Represent the musical tempo, with beats ber minute and beat duration.
5
+ class Tempo
6
+ include Comparable
7
+ include Hashmake::HashMakeable
8
+
9
+ attr_reader :beats_per_minute, :beat_duration
10
+
11
+ ARG_SPECS = {
12
+ :beats_per_minute => arg_spec(:reqd => true, :type => Numeric, :validator => ->(a){a > 0} ),
13
+ :beat_duration => arg_spec(:reqd => false, :type => Numeric, :validator => ->(a){a > 0}, :default => Rational(1,4))
14
+ }
15
+
16
+ def initialize args
17
+ hash_make args
18
+ end
19
+
20
+ def notes_per_second
21
+ (@beats_per_minute * @beat_duration) / 60.0
22
+ end
23
+
24
+ def between? a, b
25
+ notes_per_second.between? a, b
26
+ end
27
+
28
+ def <=>(other)
29
+ if other.is_a? Tempo
30
+ notes_per_second <=> other.notes_per_second
31
+ else
32
+ notes_per_second <=> other
33
+ end
34
+ end
35
+ end
36
+
37
+ module_function
38
+
39
+ def tempo beats_per_minute, beat_duration = Tempo::ARG_SPECS[:beat_duration].default
40
+ Tempo.new(:beats_per_minute => beats_per_minute, :beat_duration => beat_duration)
41
+ end
42
+
43
+ end
44
+ end
@@ -0,0 +1,71 @@
1
+ module Music
2
+ module Transcription
3
+
4
+ # Describes how to transition from one value to another.
5
+ class Transition
6
+ include Hashmake::HashMakeable
7
+
8
+ IMMEDIATE = :transitionImmediate # no transition really. Immediately change value.
9
+ LINEAR = :transitionLinear # transition in a linear fashion.
10
+ SIGMOID = :transitionSigmoid # transition smoothly
11
+ TYPES = [ IMMEDIATE, LINEAR, SIGMOID ] # the transitions which are valid and expected
12
+
13
+ # hashed-arg specs (for hash-makeable idiom)
14
+ ARG_SPECS = {
15
+ :duration => arg_spec(:reqd => false, :type => Numeric, :default => 0.0, :validator => ->(a){ a >= 0.0 } ),
16
+ :type => arg_spec(:reqd => false, :type => Symbol, :default => IMMEDIATE, :validator => ->(a) { Transition::TYPES.include?(a)}),
17
+ :abruptness => arg_spec(:reqd => false, :type => Numeric, :default => 0.5, :validator => ->(a){ a.between?(0,1) })
18
+ }
19
+
20
+ attr_reader :type, :duration, :abruptness
21
+
22
+ def initialize args = {}
23
+ hash_make args, Transition::ARG_SPECS
24
+ end
25
+
26
+ # Compare the equality of another Transition object.
27
+ def == other
28
+ return (@type == other.type) &&
29
+ (@duration == other.duration) &&
30
+ (@abruptness) == other.abruptness
31
+ end
32
+
33
+ # Change the transition duration.
34
+ def duration= duration
35
+ Transition::ARG_SPECS[:duration].validate_value duration
36
+ @duration = duration
37
+ end
38
+
39
+ # Change the transition type.
40
+ def type= type
41
+ Transition::ARG_SPECS[:type].validate_value type
42
+ @type = type
43
+ end
44
+
45
+ def abruptness= abruptness
46
+ Transition::ARG_SPECS[:abruptness].validate_value abruptness
47
+ @abruptness = abruptness
48
+ end
49
+ end
50
+
51
+ module_function
52
+
53
+ # Create a Transition object with 0 duration and of IMMEDIATE type.
54
+ def immediate
55
+ Transition.new(:duration => 0.0, :type => Transition::IMMEDIATE)
56
+ end
57
+
58
+
59
+ # Create a Transition object of IMMEDIATE type, with the given duration.
60
+ def linear duration
61
+ Transition.new(:duration => duration, :type => Transition::LINEAR)
62
+ end
63
+
64
+
65
+ # Create a Transition object of SIGMOID type, with the given duration.
66
+ def sigmoid duration, abruptness = Transition::ARG_SPECS[:abruptness].default
67
+ Transition.new(:duration => duration, :type => Transition::SIGMOID, :abruptness => abruptness)
68
+ end
69
+
70
+ end
71
+ end
@@ -0,0 +1,85 @@
1
+ module Music
2
+ module Transcription
3
+
4
+ # A value change event, with a value and transition.
5
+ #
6
+ # @author James Tunnell
7
+ #
8
+ # @!attribute [rw] duration
9
+ # @return [Numeric] The duration of the event. Must be in the range MIN_OFFSET..MAX_OFFSET
10
+ #
11
+ # @!attribute [rw] value
12
+ # @return [Numeric] The value of the event.
13
+ #
14
+ class ValueChange
15
+ include Hashmake::HashMakeable
16
+
17
+ attr_reader :value, :transition
18
+
19
+ # hashed-arg specs (for hash-makeable idiom)
20
+ ARG_SPECS = {
21
+ :value => arg_spec(:reqd => true),
22
+ :transition => arg_spec(:reqd => false, :type => Transition, :default => ->(){ immediate() })
23
+ }
24
+
25
+ # New instance of ValueChange.
26
+ # @param [Hash] args Hashed arguments for initialization.
27
+ def initialize args
28
+ hash_make args, ValueChange::ARG_SPECS
29
+ end
30
+
31
+ # Compare the equality of another ValueChange object.
32
+ def == other
33
+ return (@value == other.value) &&
34
+ (@transition == other.transition)
35
+ end
36
+
37
+ # Produce an identical ValueChange object
38
+ def clone
39
+ return ValueChange.new(:value => @value, :transition => @transition)
40
+ end
41
+
42
+ # Set the event value. Can be any object.
43
+ def value= value
44
+ ValueChange::ARG_SPECS[:value].validate_value value
45
+ @value = value
46
+ end
47
+
48
+ # Set the transition.
49
+ def transition= transition
50
+ ValueChange::ARG_SPECS[:transition].validate_value transition
51
+ @transition = transition
52
+ end
53
+ end
54
+
55
+ module_function
56
+
57
+ # Creates a ValueChange object
58
+ # @param [Object] value
59
+ # @param [Transition] transition
60
+ def value_change(value, transition = immediate())
61
+ return ValueChange.new(:value => value, :transition => transition)
62
+ end
63
+
64
+ # Creates a ValueChange object using an immediate transition.
65
+ # @param [Object] value
66
+ def immediate_change(value)
67
+ return ValueChange.new(:value => value, :transition => immediate())
68
+ end
69
+
70
+ # Creates a ValueChange object using a linear transition.
71
+ # @param [Object] value
72
+ # @param [Transition] transition_duration Length of the transition
73
+ def linear_change(value, transition_duration = 0.0)
74
+ return ValueChange.new(:value => value, :transition => linear(transition_duration))
75
+ end
76
+
77
+ # Creates a ValueChange object using a sigmoid transition.
78
+ # @param [Object] value
79
+ # @param [Transition] transition_duration Length of the transition
80
+ def sigmoid_change(value, transition_duration = 0.0, abruptness = Transition::ARG_SPECS[:abruptness].default)
81
+ return ValueChange.new(:value => value, :transition => sigmoid(transition_duration, abruptness))
82
+ end
83
+
84
+ end
85
+ end
@@ -0,0 +1,7 @@
1
+ # Representation musical constructs such as pitch, note, score, etc.
2
+ module Music
3
+ module Transcription
4
+ # music-transcription version
5
+ VERSION = "0.3.0"
6
+ end
7
+ end
@@ -0,0 +1,36 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.expand_path('../lib/music-transcription/version', __FILE__)
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "music-transcription"
7
+ gem.version = Music::Transcription::VERSION
8
+ gem.summary = %q{Classes for representing music notational features like pitch, note, loudness, tempo, etc.}
9
+ gem.description = <<DESCRIPTION
10
+ The goal of music-transcription is the abstract representation of standard
11
+ musical features such as pitch, note, loudness, tempo, etc. Establishing
12
+ a common representation enables composition and performance.
13
+ DESCRIPTION
14
+ gem.license = "MIT"
15
+ gem.authors = ["James Tunnell"]
16
+ gem.email = "jamestunnell@lavabit.com"
17
+ gem.homepage = "https://github.com/jamestunnell/music-transcription"
18
+
19
+ gem.files = `git ls-files`.split($/)
20
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
21
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
22
+ gem.require_paths = ['lib']
23
+
24
+ gem.add_dependency 'hashmake'
25
+ # gem.add_dependency 'spnet'
26
+ # gem.add_dependency 'spcore'
27
+ # gem.add_dependency 'micro-optparse'
28
+ # gem.add_dependency 'wavefile'
29
+
30
+ gem.add_development_dependency 'bundler', '~> 1.0'
31
+ gem.add_development_dependency 'rake', '~> 0.8'
32
+ gem.add_development_dependency 'rspec', '~> 2.4'
33
+ gem.add_development_dependency 'yard', '~> 0.8'
34
+ gem.add_development_dependency 'pry'
35
+ gem.add_development_dependency 'pry-nav'
36
+ end
@@ -0,0 +1,71 @@
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
+ 1: !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.75
19
+ intervals:
20
+ - !ruby/object:Music::Transcription::Interval
21
+ pitch: &12545940 !ruby/object:Music::Transcription::Pitch
22
+ cents_per_octave: 1200
23
+ octave: 3
24
+ semitone: 0
25
+ cent: 0
26
+ base_freq: 16.351597831287414
27
+ link: !ruby/object:Music::Transcription::Link
28
+ target_pitch: &12543700 !ruby/object:Music::Transcription::Pitch
29
+ cents_per_octave: 1200
30
+ octave: 3
31
+ semitone: 5
32
+ cent: 0
33
+ base_freq: 16.351597831287414
34
+ relationship: :glissando
35
+ sustain: 0.5
36
+ attack: 0.5
37
+ separation: 0.5
38
+ - !ruby/object:Music::Transcription::Note
39
+ duration: 0.75
40
+ intervals:
41
+ - !ruby/object:Music::Transcription::Interval
42
+ pitch: *12543700
43
+ link: !ruby/object:Music::Transcription::Link
44
+ target_pitch: *12545940
45
+ relationship: :glissando
46
+ sustain: 0.5
47
+ attack: 0.5
48
+ separation: 0.5
49
+ - !ruby/object:Music::Transcription::Note
50
+ duration: 0.5
51
+ intervals:
52
+ - !ruby/object:Music::Transcription::Interval
53
+ pitch: *12545940
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
+ program: !ruby/object:Music::Transcription::Program
66
+ segments:
67
+ - !ruby/range
68
+ begin: 0
69
+ end: 4.0
70
+ excl: true
71
+ instrument_configs: {}
@@ -0,0 +1,952 @@
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
+ lead: !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: !ruby/object:Rational
19
+ denominator: 6
20
+ numerator: 1
21
+ intervals:
22
+ - !ruby/object:Music::Transcription::Interval
23
+ pitch: &12144520 !ruby/object:Music::Transcription::Pitch
24
+ cents_per_octave: 1200
25
+ octave: 3
26
+ semitone: 10
27
+ cent: 0
28
+ base_freq: 16.351597831287414
29
+ link: !ruby/object:Music::Transcription::Link
30
+ target_pitch: !ruby/object:Music::Transcription::Pitch
31
+ cents_per_octave: 1200
32
+ octave: 0
33
+ semitone: 0
34
+ cent: 0
35
+ base_freq: 16.351597831287414
36
+ relationship: :none
37
+ sustain: 0.5
38
+ attack: 0.5
39
+ separation: 0.5
40
+ - !ruby/object:Music::Transcription::Note
41
+ duration: !ruby/object:Rational
42
+ denominator: 4
43
+ numerator: 1
44
+ intervals: []
45
+ sustain: 0.5
46
+ attack: 0.5
47
+ separation: 0.5
48
+ - !ruby/object:Music::Transcription::Note
49
+ duration: !ruby/object:Rational
50
+ denominator: 12
51
+ numerator: 1
52
+ intervals:
53
+ - !ruby/object:Music::Transcription::Interval
54
+ pitch: &12142600 !ruby/object:Music::Transcription::Pitch
55
+ cents_per_octave: 1200
56
+ octave: 4
57
+ semitone: 1
58
+ cent: 0
59
+ base_freq: 16.351597831287414
60
+ link: !ruby/object:Music::Transcription::Link
61
+ target_pitch: *12142600
62
+ relationship: :tie
63
+ sustain: 0.5
64
+ attack: 0.5
65
+ separation: 0.5
66
+ - !ruby/object:Music::Transcription::Note
67
+ duration: !ruby/object:Rational
68
+ denominator: 6
69
+ numerator: 1
70
+ intervals:
71
+ - !ruby/object:Music::Transcription::Interval
72
+ pitch: *12142600
73
+ link: !ruby/object:Music::Transcription::Link
74
+ target_pitch: *12142600
75
+ relationship: :tie
76
+ sustain: 0.5
77
+ attack: 0.5
78
+ separation: 0.5
79
+ - !ruby/object:Music::Transcription::Note
80
+ duration: !ruby/object:Rational
81
+ denominator: 36
82
+ numerator: 1
83
+ intervals:
84
+ - !ruby/object:Music::Transcription::Interval
85
+ pitch: *12142600
86
+ link: !ruby/object:Music::Transcription::Link
87
+ target_pitch: !ruby/object:Music::Transcription::Pitch
88
+ cents_per_octave: 1200
89
+ octave: 0
90
+ semitone: 0
91
+ cent: 0
92
+ base_freq: 16.351597831287414
93
+ relationship: :none
94
+ sustain: 0.5
95
+ attack: 0.5
96
+ separation: 0.5
97
+ - !ruby/object:Music::Transcription::Note
98
+ duration: !ruby/object:Rational
99
+ denominator: 36
100
+ numerator: 1
101
+ intervals:
102
+ - !ruby/object:Music::Transcription::Interval
103
+ pitch: !ruby/object:Music::Transcription::Pitch
104
+ cents_per_octave: 1200
105
+ octave: 4
106
+ semitone: 3
107
+ cent: 0
108
+ base_freq: 16.351597831287414
109
+ link: !ruby/object:Music::Transcription::Link
110
+ target_pitch: !ruby/object:Music::Transcription::Pitch
111
+ cents_per_octave: 1200
112
+ octave: 0
113
+ semitone: 0
114
+ cent: 0
115
+ base_freq: 16.351597831287414
116
+ relationship: :none
117
+ sustain: 0.5
118
+ attack: 0.5
119
+ separation: 0.5
120
+ - !ruby/object:Music::Transcription::Note
121
+ duration: !ruby/object:Rational
122
+ denominator: 36
123
+ numerator: 1
124
+ intervals:
125
+ - !ruby/object:Music::Transcription::Interval
126
+ pitch: *12142600
127
+ link: !ruby/object:Music::Transcription::Link
128
+ target_pitch: !ruby/object:Music::Transcription::Pitch
129
+ cents_per_octave: 1200
130
+ octave: 0
131
+ semitone: 0
132
+ cent: 0
133
+ base_freq: 16.351597831287414
134
+ relationship: :none
135
+ sustain: 0.5
136
+ attack: 0.5
137
+ separation: 0.5
138
+ - !ruby/object:Music::Transcription::Note
139
+ duration: !ruby/object:Rational
140
+ denominator: 6
141
+ numerator: 1
142
+ intervals:
143
+ - !ruby/object:Music::Transcription::Interval
144
+ pitch: !ruby/object:Music::Transcription::Pitch
145
+ cents_per_octave: 1200
146
+ octave: 3
147
+ semitone: 8
148
+ cent: 0
149
+ base_freq: 16.351597831287414
150
+ link: !ruby/object:Music::Transcription::Link
151
+ target_pitch: !ruby/object:Music::Transcription::Pitch
152
+ cents_per_octave: 1200
153
+ octave: 0
154
+ semitone: 0
155
+ cent: 0
156
+ base_freq: 16.351597831287414
157
+ relationship: :none
158
+ sustain: 0.5
159
+ attack: 0.5
160
+ separation: 0.5
161
+ - !ruby/object:Music::Transcription::Note
162
+ duration: !ruby/object:Rational
163
+ denominator: 12
164
+ numerator: 1
165
+ intervals:
166
+ - !ruby/object:Music::Transcription::Interval
167
+ pitch: *12142600
168
+ link: !ruby/object:Music::Transcription::Link
169
+ target_pitch: !ruby/object:Music::Transcription::Pitch
170
+ cents_per_octave: 1200
171
+ octave: 0
172
+ semitone: 0
173
+ cent: 0
174
+ base_freq: 16.351597831287414
175
+ relationship: :none
176
+ sustain: 0.5
177
+ attack: 0.5
178
+ separation: 0.5
179
+ - !ruby/object:Music::Transcription::Note
180
+ duration: !ruby/object:Rational
181
+ denominator: 6
182
+ numerator: 1
183
+ intervals:
184
+ - !ruby/object:Music::Transcription::Interval
185
+ pitch: *12144520
186
+ link: !ruby/object:Music::Transcription::Link
187
+ target_pitch: !ruby/object:Music::Transcription::Pitch
188
+ cents_per_octave: 1200
189
+ octave: 0
190
+ semitone: 0
191
+ cent: 0
192
+ base_freq: 16.351597831287414
193
+ relationship: :none
194
+ sustain: 0.5
195
+ attack: 0.5
196
+ separation: 0.5
197
+ - !ruby/object:Music::Transcription::Note
198
+ duration: !ruby/object:Rational
199
+ denominator: 4
200
+ numerator: 1
201
+ intervals: []
202
+ sustain: 0.5
203
+ attack: 0.5
204
+ separation: 0.5
205
+ - !ruby/object:Music::Transcription::Note
206
+ duration: !ruby/object:Rational
207
+ denominator: 12
208
+ numerator: 1
209
+ intervals:
210
+ - !ruby/object:Music::Transcription::Interval
211
+ pitch: *12142600
212
+ link: !ruby/object:Music::Transcription::Link
213
+ target_pitch: *12142600
214
+ relationship: :tie
215
+ sustain: 0.5
216
+ attack: 0.5
217
+ separation: 0.5
218
+ - !ruby/object:Music::Transcription::Note
219
+ duration: !ruby/object:Rational
220
+ denominator: 4
221
+ numerator: 1
222
+ intervals:
223
+ - !ruby/object:Music::Transcription::Interval
224
+ pitch: *12142600
225
+ link: !ruby/object:Music::Transcription::Link
226
+ target_pitch: *12142600
227
+ relationship: :tie
228
+ sustain: 0.5
229
+ attack: 0.5
230
+ separation: 0.5
231
+ - !ruby/object:Music::Transcription::Note
232
+ duration: !ruby/object:Rational
233
+ denominator: 8
234
+ numerator: 1
235
+ intervals:
236
+ - !ruby/object:Music::Transcription::Interval
237
+ pitch: *12142600
238
+ link: !ruby/object:Music::Transcription::Link
239
+ target_pitch: &12143500 !ruby/object:Music::Transcription::Pitch
240
+ cents_per_octave: 1200
241
+ octave: 4
242
+ semitone: 0
243
+ cent: 0
244
+ base_freq: 16.351597831287414
245
+ relationship: :portamento
246
+ sustain: 0.5
247
+ attack: 0.5
248
+ separation: 0.5
249
+ - !ruby/object:Music::Transcription::Note
250
+ duration: !ruby/object:Rational
251
+ denominator: 8
252
+ numerator: 1
253
+ intervals:
254
+ - !ruby/object:Music::Transcription::Interval
255
+ pitch: *12143500
256
+ link: !ruby/object:Music::Transcription::Link
257
+ target_pitch: !ruby/object:Music::Transcription::Pitch
258
+ cents_per_octave: 1200
259
+ octave: 0
260
+ semitone: 0
261
+ cent: 0
262
+ base_freq: 16.351597831287414
263
+ relationship: :none
264
+ sustain: 0.5
265
+ attack: 0.5
266
+ separation: 0.5
267
+ - !ruby/object:Music::Transcription::Note
268
+ duration: !ruby/object:Rational
269
+ denominator: 6
270
+ numerator: 1
271
+ intervals:
272
+ - !ruby/object:Music::Transcription::Interval
273
+ pitch: !ruby/object:Music::Transcription::Pitch
274
+ cents_per_octave: 1200
275
+ octave: 4
276
+ semitone: 0
277
+ cent: 0
278
+ base_freq: 16.351597831287414
279
+ link: !ruby/object:Music::Transcription::Link
280
+ target_pitch: !ruby/object:Music::Transcription::Pitch
281
+ cents_per_octave: 1200
282
+ octave: 0
283
+ semitone: 2
284
+ cent: 0
285
+ base_freq: 16.351597831287414
286
+ relationship: :none
287
+ sustain: 0.5
288
+ attack: 0.5
289
+ separation: 0.5
290
+ - !ruby/object:Music::Transcription::Note
291
+ duration: !ruby/object:Rational
292
+ denominator: 4
293
+ numerator: 1
294
+ intervals: []
295
+ sustain: 0.5
296
+ attack: 0.5
297
+ separation: 0.5
298
+ - !ruby/object:Music::Transcription::Note
299
+ duration: !ruby/object:Rational
300
+ denominator: 12
301
+ numerator: 1
302
+ intervals:
303
+ - !ruby/object:Music::Transcription::Interval
304
+ pitch: !ruby/object:Music::Transcription::Pitch
305
+ cents_per_octave: 1200
306
+ octave: 4
307
+ semitone: 3
308
+ cent: 0
309
+ base_freq: 16.351597831287414
310
+ link: !ruby/object:Music::Transcription::Link
311
+ target_pitch: !ruby/object:Music::Transcription::Pitch
312
+ cents_per_octave: 1200
313
+ octave: 4
314
+ semitone: 3
315
+ cent: 0
316
+ base_freq: 16.351597831287414
317
+ relationship: :tie
318
+ sustain: 0.5
319
+ attack: 0.5
320
+ separation: 0.5
321
+ - !ruby/object:Music::Transcription::Note
322
+ duration: !ruby/object:Rational
323
+ denominator: 6
324
+ numerator: 1
325
+ intervals:
326
+ - !ruby/object:Music::Transcription::Interval
327
+ pitch: !ruby/object:Music::Transcription::Pitch
328
+ cents_per_octave: 1200
329
+ octave: 4
330
+ semitone: 3
331
+ cent: 0
332
+ base_freq: 16.351597831287414
333
+ link: !ruby/object:Music::Transcription::Link
334
+ target_pitch: !ruby/object:Music::Transcription::Pitch
335
+ cents_per_octave: 1200
336
+ octave: 4
337
+ semitone: 3
338
+ cent: 0
339
+ base_freq: 16.351597831287414
340
+ relationship: :tie
341
+ sustain: 0.5
342
+ attack: 0.5
343
+ separation: 0.5
344
+ - !ruby/object:Music::Transcription::Note
345
+ duration: !ruby/object:Rational
346
+ denominator: 36
347
+ numerator: 1
348
+ intervals:
349
+ - !ruby/object:Music::Transcription::Interval
350
+ pitch: !ruby/object:Music::Transcription::Pitch
351
+ cents_per_octave: 1200
352
+ octave: 4
353
+ semitone: 3
354
+ cent: 0
355
+ base_freq: 16.351597831287414
356
+ link: !ruby/object:Music::Transcription::Link
357
+ target_pitch: !ruby/object:Music::Transcription::Pitch
358
+ cents_per_octave: 1200
359
+ octave: 0
360
+ semitone: 2
361
+ cent: 0
362
+ base_freq: 16.351597831287414
363
+ relationship: :none
364
+ sustain: 0.5
365
+ attack: 0.5
366
+ separation: 0.5
367
+ - !ruby/object:Music::Transcription::Note
368
+ duration: !ruby/object:Rational
369
+ denominator: 36
370
+ numerator: 1
371
+ intervals:
372
+ - !ruby/object:Music::Transcription::Interval
373
+ pitch: !ruby/object:Music::Transcription::Pitch
374
+ cents_per_octave: 1200
375
+ octave: 4
376
+ semitone: 5
377
+ cent: 0
378
+ base_freq: 16.351597831287414
379
+ link: !ruby/object:Music::Transcription::Link
380
+ target_pitch: !ruby/object:Music::Transcription::Pitch
381
+ cents_per_octave: 1200
382
+ octave: 0
383
+ semitone: 2
384
+ cent: 0
385
+ base_freq: 16.351597831287414
386
+ relationship: :none
387
+ sustain: 0.5
388
+ attack: 0.5
389
+ separation: 0.5
390
+ - !ruby/object:Music::Transcription::Note
391
+ duration: !ruby/object:Rational
392
+ denominator: 36
393
+ numerator: 1
394
+ intervals:
395
+ - !ruby/object:Music::Transcription::Interval
396
+ pitch: !ruby/object:Music::Transcription::Pitch
397
+ cents_per_octave: 1200
398
+ octave: 4
399
+ semitone: 3
400
+ cent: 0
401
+ base_freq: 16.351597831287414
402
+ link: !ruby/object:Music::Transcription::Link
403
+ target_pitch: !ruby/object:Music::Transcription::Pitch
404
+ cents_per_octave: 1200
405
+ octave: 0
406
+ semitone: 2
407
+ cent: 0
408
+ base_freq: 16.351597831287414
409
+ relationship: :none
410
+ sustain: 0.5
411
+ attack: 0.5
412
+ separation: 0.5
413
+ - !ruby/object:Music::Transcription::Note
414
+ duration: !ruby/object:Rational
415
+ denominator: 6
416
+ numerator: 1
417
+ intervals:
418
+ - !ruby/object:Music::Transcription::Interval
419
+ pitch: !ruby/object:Music::Transcription::Pitch
420
+ cents_per_octave: 1200
421
+ octave: 3
422
+ semitone: 10
423
+ cent: 0
424
+ base_freq: 16.351597831287414
425
+ link: !ruby/object:Music::Transcription::Link
426
+ target_pitch: !ruby/object:Music::Transcription::Pitch
427
+ cents_per_octave: 1200
428
+ octave: 0
429
+ semitone: 2
430
+ cent: 0
431
+ base_freq: 16.351597831287414
432
+ relationship: :none
433
+ sustain: 0.5
434
+ attack: 0.5
435
+ separation: 0.5
436
+ - !ruby/object:Music::Transcription::Note
437
+ duration: !ruby/object:Rational
438
+ denominator: 12
439
+ numerator: 1
440
+ intervals:
441
+ - !ruby/object:Music::Transcription::Interval
442
+ pitch: !ruby/object:Music::Transcription::Pitch
443
+ cents_per_octave: 1200
444
+ octave: 4
445
+ semitone: 3
446
+ cent: 0
447
+ base_freq: 16.351597831287414
448
+ link: !ruby/object:Music::Transcription::Link
449
+ target_pitch: !ruby/object:Music::Transcription::Pitch
450
+ cents_per_octave: 1200
451
+ octave: 0
452
+ semitone: 2
453
+ cent: 0
454
+ base_freq: 16.351597831287414
455
+ relationship: :none
456
+ sustain: 0.5
457
+ attack: 0.5
458
+ separation: 0.5
459
+ - !ruby/object:Music::Transcription::Note
460
+ duration: !ruby/object:Rational
461
+ denominator: 6
462
+ numerator: 1
463
+ intervals:
464
+ - !ruby/object:Music::Transcription::Interval
465
+ pitch: !ruby/object:Music::Transcription::Pitch
466
+ cents_per_octave: 1200
467
+ octave: 4
468
+ semitone: 0
469
+ cent: 0
470
+ base_freq: 16.351597831287414
471
+ link: !ruby/object:Music::Transcription::Link
472
+ target_pitch: !ruby/object:Music::Transcription::Pitch
473
+ cents_per_octave: 1200
474
+ octave: 0
475
+ semitone: 2
476
+ cent: 0
477
+ base_freq: 16.351597831287414
478
+ relationship: :none
479
+ sustain: 0.5
480
+ attack: 0.5
481
+ separation: 0.5
482
+ - !ruby/object:Music::Transcription::Note
483
+ duration: !ruby/object:Rational
484
+ denominator: 4
485
+ numerator: 1
486
+ intervals: []
487
+ sustain: 0.5
488
+ attack: 0.5
489
+ separation: 0.5
490
+ - !ruby/object:Music::Transcription::Note
491
+ duration: !ruby/object:Rational
492
+ denominator: 12
493
+ numerator: 1
494
+ intervals:
495
+ - !ruby/object:Music::Transcription::Interval
496
+ pitch: !ruby/object:Music::Transcription::Pitch
497
+ cents_per_octave: 1200
498
+ octave: 4
499
+ semitone: 3
500
+ cent: 0
501
+ base_freq: 16.351597831287414
502
+ link: !ruby/object:Music::Transcription::Link
503
+ target_pitch: !ruby/object:Music::Transcription::Pitch
504
+ cents_per_octave: 1200
505
+ octave: 4
506
+ semitone: 3
507
+ cent: 0
508
+ base_freq: 16.351597831287414
509
+ relationship: :tie
510
+ sustain: 0.5
511
+ attack: 0.5
512
+ separation: 0.5
513
+ - !ruby/object:Music::Transcription::Note
514
+ duration: !ruby/object:Rational
515
+ denominator: 4
516
+ numerator: 1
517
+ intervals:
518
+ - !ruby/object:Music::Transcription::Interval
519
+ pitch: !ruby/object:Music::Transcription::Pitch
520
+ cents_per_octave: 1200
521
+ octave: 4
522
+ semitone: 3
523
+ cent: 0
524
+ base_freq: 16.351597831287414
525
+ link: !ruby/object:Music::Transcription::Link
526
+ target_pitch: !ruby/object:Music::Transcription::Pitch
527
+ cents_per_octave: 1200
528
+ octave: 4
529
+ semitone: 3
530
+ cent: 0
531
+ base_freq: 16.351597831287414
532
+ relationship: :tie
533
+ sustain: 0.5
534
+ attack: 0.5
535
+ separation: 0.5
536
+ - !ruby/object:Music::Transcription::Note
537
+ duration: !ruby/object:Rational
538
+ denominator: 8
539
+ numerator: 1
540
+ intervals:
541
+ - !ruby/object:Music::Transcription::Interval
542
+ pitch: !ruby/object:Music::Transcription::Pitch
543
+ cents_per_octave: 1200
544
+ octave: 4
545
+ semitone: 3
546
+ cent: 0
547
+ base_freq: 16.351597831287414
548
+ link: !ruby/object:Music::Transcription::Link
549
+ target_pitch: !ruby/object:Music::Transcription::Pitch
550
+ cents_per_octave: 1200
551
+ octave: 4
552
+ semitone: 2
553
+ cent: 0
554
+ base_freq: 16.351597831287414
555
+ relationship: :portamento
556
+ sustain: 0.5
557
+ attack: 0.5
558
+ separation: 0.5
559
+ - !ruby/object:Music::Transcription::Note
560
+ duration: !ruby/object:Rational
561
+ denominator: 8
562
+ numerator: 1
563
+ intervals:
564
+ - !ruby/object:Music::Transcription::Interval
565
+ pitch: !ruby/object:Music::Transcription::Pitch
566
+ cents_per_octave: 1200
567
+ octave: 4
568
+ semitone: 2
569
+ cent: 0
570
+ base_freq: 16.351597831287414
571
+ link: !ruby/object:Music::Transcription::Link
572
+ target_pitch: !ruby/object:Music::Transcription::Pitch
573
+ cents_per_octave: 1200
574
+ octave: 0
575
+ semitone: 2
576
+ cent: 0
577
+ base_freq: 16.351597831287414
578
+ relationship: :none
579
+ sustain: 0.5
580
+ attack: 0.5
581
+ separation: 0.5
582
+ bass: !ruby/object:Music::Transcription::Part
583
+ offset: 0
584
+ loudness_profile: !ruby/object:Music::Transcription::Profile
585
+ start_value: 0.125
586
+ value_changes: {}
587
+ notes:
588
+ - !ruby/object:Music::Transcription::Note
589
+ duration: !ruby/object:Rational
590
+ denominator: 6
591
+ numerator: 1
592
+ intervals:
593
+ - !ruby/object:Music::Transcription::Interval
594
+ pitch: &12150660 !ruby/object:Music::Transcription::Pitch
595
+ cents_per_octave: 1200
596
+ octave: 2
597
+ semitone: 10
598
+ cent: 0
599
+ base_freq: 16.351597831287414
600
+ link: !ruby/object:Music::Transcription::Link
601
+ target_pitch: !ruby/object:Music::Transcription::Pitch
602
+ cents_per_octave: 1200
603
+ octave: 0
604
+ semitone: 0
605
+ cent: 0
606
+ base_freq: 16.351597831287414
607
+ relationship: :none
608
+ sustain: 0.5
609
+ attack: 0.5
610
+ separation: 0.5
611
+ - !ruby/object:Music::Transcription::Note
612
+ duration: !ruby/object:Rational
613
+ denominator: 4
614
+ numerator: 1
615
+ intervals: []
616
+ sustain: 0.5
617
+ attack: 0.5
618
+ separation: 0.5
619
+ - !ruby/object:Music::Transcription::Note
620
+ duration: !ruby/object:Rational
621
+ denominator: 3
622
+ numerator: 1
623
+ intervals:
624
+ - !ruby/object:Music::Transcription::Interval
625
+ pitch: &12151560 !ruby/object:Music::Transcription::Pitch
626
+ cents_per_octave: 1200
627
+ octave: 2
628
+ semitone: 8
629
+ cent: 0
630
+ base_freq: 16.351597831287414
631
+ link: !ruby/object:Music::Transcription::Link
632
+ target_pitch: !ruby/object:Music::Transcription::Pitch
633
+ cents_per_octave: 1200
634
+ octave: 0
635
+ semitone: 0
636
+ cent: 0
637
+ base_freq: 16.351597831287414
638
+ relationship: :none
639
+ sustain: 0.5
640
+ attack: 0.5
641
+ separation: 0.5
642
+ - !ruby/object:Music::Transcription::Note
643
+ duration: !ruby/object:Rational
644
+ denominator: 6
645
+ numerator: 1
646
+ intervals:
647
+ - !ruby/object:Music::Transcription::Interval
648
+ pitch: !ruby/object:Music::Transcription::Pitch
649
+ cents_per_octave: 1200
650
+ octave: 2
651
+ semitone: 5
652
+ cent: 0
653
+ base_freq: 16.351597831287414
654
+ link: !ruby/object:Music::Transcription::Link
655
+ target_pitch: !ruby/object:Music::Transcription::Pitch
656
+ cents_per_octave: 1200
657
+ octave: 0
658
+ semitone: 0
659
+ cent: 0
660
+ base_freq: 16.351597831287414
661
+ relationship: :none
662
+ sustain: 0.5
663
+ attack: 0.5
664
+ separation: 0.5
665
+ - !ruby/object:Music::Transcription::Note
666
+ duration: !ruby/object:Rational
667
+ denominator: 12
668
+ numerator: 1
669
+ intervals:
670
+ - !ruby/object:Music::Transcription::Interval
671
+ pitch: *12151560
672
+ link: !ruby/object:Music::Transcription::Link
673
+ target_pitch: !ruby/object:Music::Transcription::Pitch
674
+ cents_per_octave: 1200
675
+ octave: 0
676
+ semitone: 0
677
+ cent: 0
678
+ base_freq: 16.351597831287414
679
+ relationship: :none
680
+ sustain: 0.5
681
+ attack: 0.5
682
+ separation: 0.5
683
+ - !ruby/object:Music::Transcription::Note
684
+ duration: !ruby/object:Rational
685
+ denominator: 6
686
+ numerator: 1
687
+ intervals:
688
+ - !ruby/object:Music::Transcription::Interval
689
+ pitch: *12150660
690
+ link: !ruby/object:Music::Transcription::Link
691
+ target_pitch: !ruby/object:Music::Transcription::Pitch
692
+ cents_per_octave: 1200
693
+ octave: 0
694
+ semitone: 0
695
+ cent: 0
696
+ base_freq: 16.351597831287414
697
+ relationship: :none
698
+ sustain: 0.5
699
+ attack: 0.5
700
+ separation: 0.5
701
+ - !ruby/object:Music::Transcription::Note
702
+ duration: !ruby/object:Rational
703
+ denominator: 4
704
+ numerator: 1
705
+ intervals: []
706
+ sustain: 0.5
707
+ attack: 0.5
708
+ separation: 0.5
709
+ - !ruby/object:Music::Transcription::Note
710
+ duration: !ruby/object:Rational
711
+ denominator: 3
712
+ numerator: 1
713
+ intervals:
714
+ - !ruby/object:Music::Transcription::Interval
715
+ pitch: *12151560
716
+ link: !ruby/object:Music::Transcription::Link
717
+ target_pitch: !ruby/object:Music::Transcription::Pitch
718
+ cents_per_octave: 1200
719
+ octave: 0
720
+ semitone: 0
721
+ cent: 0
722
+ base_freq: 16.351597831287414
723
+ relationship: :none
724
+ sustain: 0.5
725
+ attack: 0.5
726
+ separation: 0.5
727
+ - !ruby/object:Music::Transcription::Note
728
+ duration: !ruby/object:Rational
729
+ denominator: 4
730
+ numerator: 1
731
+ intervals:
732
+ - !ruby/object:Music::Transcription::Interval
733
+ pitch: *12151560
734
+ link: !ruby/object:Music::Transcription::Link
735
+ target_pitch: !ruby/object:Music::Transcription::Pitch
736
+ cents_per_octave: 1200
737
+ octave: 0
738
+ semitone: 0
739
+ cent: 0
740
+ base_freq: 16.351597831287414
741
+ relationship: :none
742
+ sustain: 0.5
743
+ attack: 0.5
744
+ separation: 0.5
745
+ - !ruby/object:Music::Transcription::Note
746
+ duration: !ruby/object:Rational
747
+ denominator: 6
748
+ numerator: 1
749
+ intervals:
750
+ - !ruby/object:Music::Transcription::Interval
751
+ pitch: !ruby/object:Music::Transcription::Pitch
752
+ cents_per_octave: 1200
753
+ octave: 3
754
+ semitone: 0
755
+ cent: 0
756
+ base_freq: 16.351597831287414
757
+ link: !ruby/object:Music::Transcription::Link
758
+ target_pitch: !ruby/object:Music::Transcription::Pitch
759
+ cents_per_octave: 1200
760
+ octave: 0
761
+ semitone: 2
762
+ cent: 0
763
+ base_freq: 16.351597831287414
764
+ relationship: :none
765
+ sustain: 0.5
766
+ attack: 0.5
767
+ separation: 0.5
768
+ - !ruby/object:Music::Transcription::Note
769
+ duration: !ruby/object:Rational
770
+ denominator: 4
771
+ numerator: 1
772
+ intervals: []
773
+ sustain: 0.5
774
+ attack: 0.5
775
+ separation: 0.5
776
+ - !ruby/object:Music::Transcription::Note
777
+ duration: !ruby/object:Rational
778
+ denominator: 3
779
+ numerator: 1
780
+ intervals:
781
+ - !ruby/object:Music::Transcription::Interval
782
+ pitch: !ruby/object:Music::Transcription::Pitch
783
+ cents_per_octave: 1200
784
+ octave: 2
785
+ semitone: 10
786
+ cent: 0
787
+ base_freq: 16.351597831287414
788
+ link: !ruby/object:Music::Transcription::Link
789
+ target_pitch: !ruby/object:Music::Transcription::Pitch
790
+ cents_per_octave: 1200
791
+ octave: 0
792
+ semitone: 2
793
+ cent: 0
794
+ base_freq: 16.351597831287414
795
+ relationship: :none
796
+ sustain: 0.5
797
+ attack: 0.5
798
+ separation: 0.5
799
+ - !ruby/object:Music::Transcription::Note
800
+ duration: !ruby/object:Rational
801
+ denominator: 6
802
+ numerator: 1
803
+ intervals:
804
+ - !ruby/object:Music::Transcription::Interval
805
+ pitch: !ruby/object:Music::Transcription::Pitch
806
+ cents_per_octave: 1200
807
+ octave: 2
808
+ semitone: 7
809
+ cent: 0
810
+ base_freq: 16.351597831287414
811
+ link: !ruby/object:Music::Transcription::Link
812
+ target_pitch: !ruby/object:Music::Transcription::Pitch
813
+ cents_per_octave: 1200
814
+ octave: 0
815
+ semitone: 2
816
+ cent: 0
817
+ base_freq: 16.351597831287414
818
+ relationship: :none
819
+ sustain: 0.5
820
+ attack: 0.5
821
+ separation: 0.5
822
+ - !ruby/object:Music::Transcription::Note
823
+ duration: !ruby/object:Rational
824
+ denominator: 12
825
+ numerator: 1
826
+ intervals:
827
+ - !ruby/object:Music::Transcription::Interval
828
+ pitch: !ruby/object:Music::Transcription::Pitch
829
+ cents_per_octave: 1200
830
+ octave: 2
831
+ semitone: 10
832
+ cent: 0
833
+ base_freq: 16.351597831287414
834
+ link: !ruby/object:Music::Transcription::Link
835
+ target_pitch: !ruby/object:Music::Transcription::Pitch
836
+ cents_per_octave: 1200
837
+ octave: 0
838
+ semitone: 2
839
+ cent: 0
840
+ base_freq: 16.351597831287414
841
+ relationship: :none
842
+ sustain: 0.5
843
+ attack: 0.5
844
+ separation: 0.5
845
+ - !ruby/object:Music::Transcription::Note
846
+ duration: !ruby/object:Rational
847
+ denominator: 6
848
+ numerator: 1
849
+ intervals:
850
+ - !ruby/object:Music::Transcription::Interval
851
+ pitch: !ruby/object:Music::Transcription::Pitch
852
+ cents_per_octave: 1200
853
+ octave: 3
854
+ semitone: 0
855
+ cent: 0
856
+ base_freq: 16.351597831287414
857
+ link: !ruby/object:Music::Transcription::Link
858
+ target_pitch: !ruby/object:Music::Transcription::Pitch
859
+ cents_per_octave: 1200
860
+ octave: 0
861
+ semitone: 2
862
+ cent: 0
863
+ base_freq: 16.351597831287414
864
+ relationship: :none
865
+ sustain: 0.5
866
+ attack: 0.5
867
+ separation: 0.5
868
+ - !ruby/object:Music::Transcription::Note
869
+ duration: !ruby/object:Rational
870
+ denominator: 4
871
+ numerator: 1
872
+ intervals: []
873
+ sustain: 0.5
874
+ attack: 0.5
875
+ separation: 0.5
876
+ - !ruby/object:Music::Transcription::Note
877
+ duration: !ruby/object:Rational
878
+ denominator: 3
879
+ numerator: 1
880
+ intervals:
881
+ - !ruby/object:Music::Transcription::Interval
882
+ pitch: !ruby/object:Music::Transcription::Pitch
883
+ cents_per_octave: 1200
884
+ octave: 2
885
+ semitone: 10
886
+ cent: 0
887
+ base_freq: 16.351597831287414
888
+ link: !ruby/object:Music::Transcription::Link
889
+ target_pitch: !ruby/object:Music::Transcription::Pitch
890
+ cents_per_octave: 1200
891
+ octave: 0
892
+ semitone: 2
893
+ cent: 0
894
+ base_freq: 16.351597831287414
895
+ relationship: :none
896
+ sustain: 0.5
897
+ attack: 0.5
898
+ separation: 0.5
899
+ - !ruby/object:Music::Transcription::Note
900
+ duration: !ruby/object:Rational
901
+ denominator: 4
902
+ numerator: 1
903
+ intervals:
904
+ - !ruby/object:Music::Transcription::Interval
905
+ pitch: !ruby/object:Music::Transcription::Pitch
906
+ cents_per_octave: 1200
907
+ octave: 2
908
+ semitone: 10
909
+ cent: 0
910
+ base_freq: 16.351597831287414
911
+ link: !ruby/object:Music::Transcription::Link
912
+ target_pitch: !ruby/object:Music::Transcription::Pitch
913
+ cents_per_octave: 1200
914
+ octave: 0
915
+ semitone: 2
916
+ cent: 0
917
+ base_freq: 16.351597831287414
918
+ relationship: :none
919
+ sustain: 0.5
920
+ attack: 0.5
921
+ separation: 0.5
922
+ program: !ruby/object:Music::Transcription::Program
923
+ segments:
924
+ - !ruby/range
925
+ begin: 0
926
+ end: 2
927
+ excl: true
928
+ - !ruby/range
929
+ begin: 0
930
+ end: 2
931
+ excl: true
932
+ - !ruby/range
933
+ begin: 2
934
+ end: 4
935
+ excl: true
936
+ - !ruby/range
937
+ begin: 0
938
+ end: 2
939
+ excl: true
940
+ instrument_configs:
941
+ bass: !ruby/object:Music::Transcription::InstrumentConfig
942
+ plugin_name: synth_instr_1
943
+ initial_settings:
944
+ - sawtooth
945
+ setting_changes: {}
946
+ lead: !ruby/object:Music::Transcription::InstrumentConfig
947
+ plugin_name: synth_instr_3
948
+ initial_settings:
949
+ - blend
950
+ - very short attack
951
+ - med decay
952
+ setting_changes: {}