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,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: {}