musa-dsl 0.14.32 → 0.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/README.md +5 -1
  4. data/lib/musa-dsl.rb +54 -11
  5. data/lib/musa-dsl/core-ext.rb +7 -13
  6. data/lib/musa-dsl/core-ext/array-explode-ranges.rb +15 -23
  7. data/lib/musa-dsl/core-ext/arrayfy.rb +30 -12
  8. data/lib/musa-dsl/core-ext/attribute-builder.rb +194 -0
  9. data/lib/musa-dsl/core-ext/deep-copy.rb +185 -0
  10. data/lib/musa-dsl/core-ext/dynamic-proxy.rb +44 -40
  11. data/lib/musa-dsl/core-ext/inspect-nice.rb +40 -22
  12. data/lib/musa-dsl/core-ext/smart-proc-binder.rb +108 -0
  13. data/lib/musa-dsl/core-ext/with.rb +26 -0
  14. data/lib/musa-dsl/datasets.rb +8 -3
  15. data/lib/musa-dsl/datasets/dataset.rb +3 -0
  16. data/lib/musa-dsl/datasets/delta-d.rb +12 -0
  17. data/lib/musa-dsl/datasets/e.rb +61 -0
  18. data/lib/musa-dsl/datasets/gdv.rb +51 -411
  19. data/lib/musa-dsl/datasets/gdvd.rb +179 -0
  20. data/lib/musa-dsl/datasets/helper.rb +41 -0
  21. data/lib/musa-dsl/datasets/p.rb +68 -0
  22. data/lib/musa-dsl/datasets/packed-v.rb +19 -0
  23. data/lib/musa-dsl/datasets/pdv.rb +22 -15
  24. data/lib/musa-dsl/datasets/ps.rb +113 -0
  25. data/lib/musa-dsl/datasets/score.rb +210 -0
  26. data/lib/musa-dsl/datasets/score/queriable.rb +48 -0
  27. data/lib/musa-dsl/datasets/score/render.rb +31 -0
  28. data/lib/musa-dsl/datasets/score/to-mxml/process-pdv.rb +160 -0
  29. data/lib/musa-dsl/datasets/score/to-mxml/process-ps.rb +51 -0
  30. data/lib/musa-dsl/datasets/score/to-mxml/process-time.rb +153 -0
  31. data/lib/musa-dsl/datasets/score/to-mxml/to-mxml.rb +158 -0
  32. data/lib/musa-dsl/datasets/v.rb +23 -0
  33. data/lib/musa-dsl/generative.rb +5 -5
  34. data/lib/musa-dsl/generative/backboner.rb +274 -0
  35. data/lib/musa-dsl/generative/darwin.rb +102 -96
  36. data/lib/musa-dsl/generative/generative-grammar.rb +182 -187
  37. data/lib/musa-dsl/generative/markov.rb +56 -53
  38. data/lib/musa-dsl/generative/variatio.rb +234 -222
  39. data/lib/musa-dsl/logger.rb +1 -0
  40. data/lib/musa-dsl/logger/logger.rb +31 -0
  41. data/lib/musa-dsl/matrix.rb +1 -0
  42. data/lib/musa-dsl/matrix/matrix.rb +210 -0
  43. data/lib/musa-dsl/midi.rb +2 -2
  44. data/lib/musa-dsl/midi/midi-recorder.rb +54 -52
  45. data/lib/musa-dsl/midi/midi-voices.rb +183 -182
  46. data/lib/musa-dsl/music.rb +5 -5
  47. data/lib/musa-dsl/music/chord-definition.rb +54 -50
  48. data/lib/musa-dsl/music/chord-definitions.rb +13 -9
  49. data/lib/musa-dsl/music/chords.rb +236 -238
  50. data/lib/musa-dsl/music/equally-tempered-12-tone-scale-system.rb +187 -183
  51. data/lib/musa-dsl/music/scales.rb +331 -332
  52. data/lib/musa-dsl/musicxml.rb +1 -0
  53. data/lib/musa-dsl/musicxml/builder/attributes.rb +155 -0
  54. data/lib/musa-dsl/musicxml/builder/backup-forward.rb +45 -0
  55. data/lib/musa-dsl/musicxml/builder/direction.rb +322 -0
  56. data/lib/musa-dsl/musicxml/builder/helper.rb +90 -0
  57. data/lib/musa-dsl/musicxml/builder/measure.rb +137 -0
  58. data/lib/musa-dsl/musicxml/builder/note-complexities.rb +152 -0
  59. data/lib/musa-dsl/musicxml/builder/note.rb +577 -0
  60. data/lib/musa-dsl/musicxml/builder/part-group.rb +44 -0
  61. data/lib/musa-dsl/musicxml/builder/part.rb +67 -0
  62. data/lib/musa-dsl/musicxml/builder/pitched-note.rb +126 -0
  63. data/lib/musa-dsl/musicxml/builder/rest.rb +117 -0
  64. data/lib/musa-dsl/musicxml/builder/score-partwise.rb +120 -0
  65. data/lib/musa-dsl/musicxml/builder/typed-text.rb +43 -0
  66. data/lib/musa-dsl/musicxml/builder/unpitched-note.rb +112 -0
  67. data/lib/musa-dsl/neumalang.rb +1 -1
  68. data/lib/musa-dsl/neumalang/datatypes.citrus +79 -0
  69. data/lib/musa-dsl/neumalang/neuma.citrus +165 -0
  70. data/lib/musa-dsl/neumalang/neumalang.citrus +32 -242
  71. data/lib/musa-dsl/neumalang/neumalang.rb +373 -142
  72. data/lib/musa-dsl/neumalang/process.citrus +21 -0
  73. data/lib/musa-dsl/neumalang/terminals.citrus +67 -0
  74. data/lib/musa-dsl/neumalang/vectors.citrus +23 -0
  75. data/lib/musa-dsl/neumas.rb +5 -0
  76. data/lib/musa-dsl/neumas/array-to-neumas.rb +34 -0
  77. data/lib/musa-dsl/neumas/neuma-decoder.rb +63 -0
  78. data/lib/musa-dsl/neumas/neuma-gdv-decoder.rb +57 -0
  79. data/lib/musa-dsl/neumas/neuma-gdvd-decoder.rb +15 -0
  80. data/lib/musa-dsl/neumas/neumas.rb +37 -0
  81. data/lib/musa-dsl/neumas/string-to-neumas.rb +33 -0
  82. data/lib/musa-dsl/repl.rb +1 -1
  83. data/lib/musa-dsl/repl/repl.rb +103 -110
  84. data/lib/musa-dsl/sequencer.rb +1 -1
  85. data/lib/musa-dsl/sequencer/base-sequencer-implementation-control.rb +163 -136
  86. data/lib/musa-dsl/sequencer/base-sequencer-implementation-play-helper.rb +301 -286
  87. data/lib/musa-dsl/sequencer/base-sequencer-implementation.rb +548 -321
  88. data/lib/musa-dsl/sequencer/base-sequencer-public.rb +198 -176
  89. data/lib/musa-dsl/sequencer/base-sequencer-tick-based.rb +77 -0
  90. data/lib/musa-dsl/sequencer/base-sequencer-tickless-based.rb +75 -0
  91. data/lib/musa-dsl/sequencer/sequencer-dsl.rb +105 -85
  92. data/lib/musa-dsl/sequencer/timeslots.rb +34 -0
  93. data/lib/musa-dsl/series.rb +1 -1
  94. data/lib/musa-dsl/{core-ext → series}/array-to-serie.rb +1 -1
  95. data/lib/musa-dsl/series/base-series.rb +171 -168
  96. data/lib/musa-dsl/series/hash-serie-splitter.rb +134 -132
  97. data/lib/musa-dsl/series/holder-serie.rb +1 -1
  98. data/lib/musa-dsl/series/main-serie-constructors.rb +6 -1
  99. data/lib/musa-dsl/series/main-serie-operations.rb +807 -797
  100. data/lib/musa-dsl/series/proxy-serie.rb +6 -6
  101. data/lib/musa-dsl/series/queue-serie.rb +5 -5
  102. data/lib/musa-dsl/series/series.rb +2 -0
  103. data/lib/musa-dsl/transcription.rb +4 -0
  104. data/lib/musa-dsl/transcription/from-gdv-to-midi.rb +227 -0
  105. data/lib/musa-dsl/transcription/from-gdv-to-musicxml.rb +36 -0
  106. data/lib/musa-dsl/transcription/from-gdv.rb +17 -0
  107. data/lib/musa-dsl/transcription/transcription.rb +55 -0
  108. data/lib/musa-dsl/transport.rb +6 -6
  109. data/lib/musa-dsl/transport/clock.rb +26 -26
  110. data/lib/musa-dsl/transport/dummy-clock.rb +32 -30
  111. data/lib/musa-dsl/transport/external-tick-clock.rb +21 -20
  112. data/lib/musa-dsl/transport/input-midi-clock.rb +82 -80
  113. data/lib/musa-dsl/transport/timer-clock.rb +72 -71
  114. data/lib/musa-dsl/transport/timer.rb +28 -26
  115. data/lib/musa-dsl/transport/transport.rb +100 -95
  116. data/musa-dsl.gemspec +3 -3
  117. metadata +73 -24
  118. data/lib/musa-dsl/core-ext/array-apply-get.rb +0 -18
  119. data/lib/musa-dsl/core-ext/array-to-neumas.rb +0 -28
  120. data/lib/musa-dsl/core-ext/as-context-run.rb +0 -44
  121. data/lib/musa-dsl/core-ext/duplicate.rb +0 -134
  122. data/lib/musa-dsl/core-ext/key-parameters-procedure-binder.rb +0 -85
  123. data/lib/musa-dsl/core-ext/proc-nice.rb +0 -13
  124. data/lib/musa-dsl/core-ext/send-nice.rb +0 -21
  125. data/lib/musa-dsl/core-ext/string-to-neumas.rb +0 -27
  126. data/lib/musa-dsl/datasets/gdv-decorators.rb +0 -221
  127. data/lib/musa-dsl/generative/rules.rb +0 -282
  128. data/lib/musa-dsl/neuma.rb +0 -1
  129. data/lib/musa-dsl/neuma/neuma.rb +0 -181
@@ -48,7 +48,7 @@ module Musa
48
48
 
49
49
  def method_missing(method_name, *args, **key_args, &block)
50
50
  if @target && @target.respond_to?(method_name)
51
- @target.send_nice method_name, *args, **key_args, &block
51
+ @target.send method_name, *args, **key_args, &block
52
52
  else
53
53
  super
54
54
  end
@@ -58,12 +58,12 @@ module Musa
58
58
  @target && @target.respond_to?(method_name, include_private) # || super
59
59
  end
60
60
  end
61
- end
62
61
 
63
- module SerieOperations
64
- # TODO add test case
65
- def proxied
66
- Series::ProxySerie.new self
62
+ module SerieOperations
63
+ # TODO add test case
64
+ def proxied
65
+ Series::ProxySerie.new self
66
+ end
67
67
  end
68
68
  end
69
69
  end
@@ -74,7 +74,7 @@ module Musa
74
74
 
75
75
  def method_missing(method_name, *args, **key_args, &block)
76
76
  if @target && @target.respond_to?(method_name)
77
- @target.send_nice method_name, *args, **key_args, &block
77
+ @target.send method_name, *args, **key_args, &block
78
78
  else
79
79
  super
80
80
  end
@@ -84,11 +84,11 @@ module Musa
84
84
  @target && @target.respond_to?(method_name, include_private) # || super
85
85
  end
86
86
  end
87
- end
88
87
 
89
- module SerieOperations
90
- def queued
91
- Series::QueueSerie.new [self]
88
+ module SerieOperations
89
+ def queued
90
+ Series::QueueSerie.new [self]
91
+ end
92
92
  end
93
93
  end
94
94
  end
@@ -6,3 +6,5 @@ require_relative 'hash-serie-splitter'
6
6
  require_relative 'holder-serie'
7
7
  require_relative 'proxy-serie'
8
8
  require_relative 'queue-serie'
9
+
10
+ require_relative 'array-to-serie'
@@ -0,0 +1,4 @@
1
+ require_relative 'transcription/transcription'
2
+
3
+ require_relative 'transcription/from-gdv-to-midi'
4
+ require_relative 'transcription/from-gdv-to-musicxml'
@@ -0,0 +1,227 @@
1
+ require_relative 'from-gdv'
2
+
3
+ include Musa::Transcription
4
+
5
+ module Musa::Transcriptors
6
+ module FromGDV
7
+ module ToMIDI
8
+ def self.transcription_set(duration_factor: nil)
9
+ [ Appogiatura.new,
10
+ Mordent.new(duration_factor: duration_factor),
11
+ Turn.new,
12
+ Trill.new(duration_factor: duration_factor),
13
+ Staccato.new,
14
+ Base.new ]
15
+ end
16
+
17
+ # Process: appogiatura (neuma)neuma
18
+ class Appogiatura < FeatureTranscriptor
19
+ def transcript(gdv, base_duration:, tick_duration:)
20
+ gdv_appogiatura = gdv.delete :appogiatura
21
+
22
+ if gdv_appogiatura
23
+ # TODO process with Decorators the gdv_appogiatura
24
+ # TODO implement also posterior appogiatura neuma(neuma)
25
+ # TODO implement also multiple appogiatura with several notes (neuma ... neuma)neuma or neuma(neuma ... neuma)
26
+
27
+ gdv[:duration] = gdv[:duration] - gdv_appogiatura[:duration]
28
+
29
+ super [ gdv_appogiatura, gdv ], base_duration: base_duration, tick_duration: tick_duration
30
+ else
31
+ super
32
+ end
33
+ end
34
+ end
35
+
36
+ # Process: .mor
37
+ class Mordent < FeatureTranscriptor
38
+ def initialize(duration_factor: nil)
39
+ @duration_factor = duration_factor || 1/4r
40
+ end
41
+
42
+ def transcript(gdv, base_duration:, tick_duration:)
43
+ mor = gdv.delete :mor
44
+
45
+ if mor
46
+ direction = :up
47
+
48
+ check(mor) do |mor|
49
+ case mor
50
+ when true, :up
51
+ direction = :up
52
+ when :down, :low
53
+ direction = :down
54
+ end
55
+ end
56
+
57
+ short_duration = [base_duration * @duration_factor, tick_duration].max
58
+
59
+ gdvs = []
60
+
61
+ gdvs << gdv.clone.tap { |gdv| gdv[:duration] = short_duration }
62
+
63
+ case direction
64
+ when :up
65
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += 1; gdv[:duration] = short_duration }
66
+ when :down
67
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] -= 1; gdv[:duration] = short_duration }
68
+ end
69
+
70
+ gdvs << gdv.clone.tap { |gdv| gdv[:duration] -= 2 * short_duration }
71
+
72
+ super gdvs, base_duration: base_duration, tick_duration: tick_duration
73
+ else
74
+ super
75
+ end
76
+ end
77
+ end
78
+
79
+ # Process: .turn
80
+ class Turn < FeatureTranscriptor
81
+ def transcript(gdv, base_duration:, tick_duration:)
82
+ turn = gdv.delete :turn
83
+
84
+ if turn
85
+ start = :up
86
+
87
+ check(turn) do |turn|
88
+ case turn
89
+ when :true, :up
90
+ start = :up
91
+ when :down, :low
92
+ start = :down
93
+ end
94
+ end
95
+
96
+ duration = gdv[:duration] / 4r
97
+
98
+ gdvs = []
99
+
100
+ case start
101
+ when :up
102
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += 1; gdv[:duration] = duration }
103
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += 0; gdv[:duration] = duration }
104
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += -1; gdv[:duration] = duration }
105
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += 0; gdv[:duration] = duration }
106
+ when :down
107
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += -1; gdv[:duration] = duration }
108
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += 0; gdv[:duration] = duration }
109
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += 1; gdv[:duration] = duration }
110
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += 0; gdv[:duration] = duration }
111
+ end
112
+
113
+ super gdvs, base_duration: base_duration, tick_duration: tick_duration
114
+ else
115
+ super
116
+ end
117
+ end
118
+ end
119
+
120
+ # Process: .tr
121
+ class Trill < FeatureTranscriptor
122
+ def initialize(duration_factor: nil)
123
+ @duration_factor = duration_factor || 1/4r
124
+ end
125
+
126
+ def transcript(gdv, base_duration:, tick_duration:)
127
+ tr = gdv.delete :tr
128
+
129
+ if tr
130
+ note_duration = base_duration * @duration_factor
131
+
132
+ check(tr) do |tr|
133
+ case tr
134
+ when Numeric # duration factor
135
+ note_duration *= base_duration * tr.to_r
136
+ end
137
+ end
138
+
139
+ used_duration = 0r
140
+ last = nil
141
+
142
+ gdvs = []
143
+
144
+ check(tr) do |tr|
145
+ case tr
146
+ when :low # start with lower note
147
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = -1); gdv[:duration] = note_duration }
148
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = 0); gdv[:duration] = note_duration }
149
+ used_duration += 2 * note_duration
150
+
151
+ when :low2 # start with upper note but go to lower note once
152
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = 1); gdv[:duration] = note_duration }
153
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = 0); gdv[:duration] = note_duration }
154
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = -1); gdv[:duration] = note_duration }
155
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = 0); gdv[:duration] = note_duration }
156
+ used_duration += 4 * note_duration
157
+
158
+ when :same # start with the same note
159
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = 0); gdv[:duration] = note_duration }
160
+ used_duration += note_duration
161
+ end
162
+ end
163
+
164
+ 2.times do
165
+ if used_duration + 2 * note_duration <= gdv[:duration]
166
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = 1); gdv[:duration] = note_duration }
167
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = 0); gdv[:duration] = note_duration }
168
+
169
+ used_duration += 2 * note_duration
170
+ end
171
+ end
172
+
173
+ while used_duration + 2 * note_duration * 2/3r <= gdv[:duration]
174
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = 1); gdv[:duration] = note_duration * 2/3r }
175
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = 0); gdv[:duration] = note_duration * 2/3r }
176
+
177
+ used_duration += 2 * note_duration * 2/3r
178
+ end
179
+
180
+ duration_diff = gdv[:duration] - used_duration
181
+ if duration_diff >= note_duration
182
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = 1); gdv[:duration] = duration_diff / 2 }
183
+ gdvs << gdv.clone.tap { |gdv| gdv[:grade] += (last = 0); gdv[:duration] = duration_diff / 2 }
184
+
185
+ elsif duration_diff > 0
186
+ gdvs[-1][:duration] += duration_diff / 2
187
+ gdvs[-2][:duration] += duration_diff / 2
188
+ end
189
+
190
+ super gdvs, base_duration: base_duration, tick_duration: tick_duration
191
+ else
192
+ super
193
+ end
194
+ end
195
+ end
196
+
197
+ # Process: .st .st(1) .st(2) .st(3): staccato level 1 2 3
198
+ class Staccato < FeatureTranscriptor
199
+ def initialize(min_duration_factor: nil)
200
+ @min_duration_factor = min_duration_factor || 1/8r
201
+ end
202
+
203
+ def transcript(gdv, base_duration:, tick_duration:)
204
+ st = gdv.delete :st
205
+
206
+ if st
207
+ calculated = 0
208
+
209
+ check(st) do |st|
210
+ case st
211
+ when true
212
+ calculated = gdv[:duration] / 2r
213
+ when Numeric
214
+ calculated = gdv[:duration] / 2**st if st >= 1
215
+ end
216
+ end
217
+
218
+ gdv[:note_duration] = [calculated, base_duration * @min_duration_factor].max
219
+ end
220
+
221
+ super
222
+ end
223
+ end
224
+
225
+ end
226
+ end
227
+ end
@@ -0,0 +1,36 @@
1
+ require_relative 'from-gdv'
2
+
3
+ include Musa::Transcription
4
+
5
+ module Musa::Transcriptors
6
+ module FromGDV
7
+ module ToMusicXML
8
+ def self.transcription_set
9
+ [ Appogiatura.new,
10
+ Base.new ]
11
+ end
12
+
13
+ # Process: appogiatura (neuma)neuma
14
+ class Appogiatura < FeatureTranscriptor
15
+ def transcript(gdv, base_duration:, tick_duration:)
16
+ if gdv_appogiatura = gdv[:appogiatura]
17
+ gdv.delete :appogiatura
18
+
19
+ # TODO process with Decorators the gdv_appogiatura
20
+ # TODO implement also posterior appogiatura neuma(neuma)
21
+ # TODO implement also multiple appogiatura with several notes (neuma ... neuma)neuma or neuma(neuma ... neuma)
22
+
23
+ gdv_appogiatura[:grace] = true
24
+ gdv[:graced] = true
25
+ gdv[:graced_by] = gdv_appogiatura
26
+
27
+ [ gdv_appogiatura, gdv ]
28
+ else
29
+ gdv
30
+ end
31
+ end
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,17 @@
1
+ require_relative 'transcription'
2
+
3
+ include Musa::Transcription
4
+
5
+ module Musa::Transcriptors
6
+ module FromGDV
7
+ # Process: .base .b
8
+ class Base < FeatureTranscriptor
9
+ def transcript(gdv, base_duration:, tick_duration:)
10
+ base = gdv.delete :base
11
+ base ||= gdv.delete :b
12
+
13
+ super base ? { duration: 0 }.extend(Musa::Datasets::AbsD) : gdv, base_duration: base_duration, tick_duration: tick_duration
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,55 @@
1
+ module Musa
2
+ module Transcription
3
+ class Transcriptor
4
+ attr_reader :transcriptors
5
+
6
+ def initialize(transcriptors = nil, base_duration: nil, tick_duration: nil)
7
+ @transcriptors = transcriptors || []
8
+
9
+ @base_duration = base_duration || 1/4r
10
+ @tick_duration = tick_duration || 1/96r
11
+ end
12
+
13
+ def transcript(element)
14
+ @transcriptors.each do |transcriptor|
15
+ if element
16
+ if element.is_a?(Array)
17
+ element = element.collect { |element_i| transcriptor.transcript(element_i, base_duration: @base_duration, tick_duration: @tick_duration) }.flatten(1)
18
+ else
19
+ element = transcriptor.transcript(element, base_duration: @base_duration, tick_duration: @tick_duration)
20
+ end
21
+ end
22
+ end
23
+
24
+
25
+
26
+ element
27
+ end
28
+ end
29
+
30
+ class FeatureTranscriptor
31
+ def transcript(element, base_duration:, tick_duration:)
32
+ case element
33
+ when Hash
34
+ element.delete :modifiers if element[:modifiers]&.empty?
35
+ when Array
36
+ element.each { |_| _.delete :modifiers if _[:modifiers]&.empty? }
37
+ end
38
+
39
+ element
40
+ end
41
+
42
+ def check(value_or_array)
43
+ if block_given?
44
+ if value_or_array.is_a?(Array)
45
+ value_or_array.each { |value| yield value }
46
+ else
47
+ yield value_or_array
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ module Transcriptors; end
55
+ end
@@ -1,9 +1,9 @@
1
- require 'musa-dsl/transport/transport'
1
+ require_relative 'transport/transport'
2
2
 
3
- require 'musa-dsl/transport/timer'
3
+ require_relative 'transport/timer'
4
4
 
5
- require 'musa-dsl/transport/input-midi-clock'
6
- require 'musa-dsl/transport/timer-clock'
7
- require 'musa-dsl/transport/dummy-clock'
8
- require 'musa-dsl/transport/external-tick-clock'
5
+ require_relative 'transport/input-midi-clock'
6
+ require_relative 'transport/timer-clock'
7
+ require_relative 'transport/dummy-clock'
8
+ require_relative 'transport/external-tick-clock'
9
9
 
@@ -1,36 +1,36 @@
1
- require 'nibbler'
2
-
3
1
  module Musa
4
- class Clock
5
- def initialize
6
- @run = nil
7
- @on_start = []
8
- @on_stop = []
9
- @on_change_position = []
10
- end
2
+ module Clock
3
+ class Clock
4
+ def initialize
5
+ @run = nil
6
+ @on_start = []
7
+ @on_stop = []
8
+ @on_change_position = []
9
+ end
11
10
 
12
- def running?
13
- @run
14
- end
11
+ def running?
12
+ @run
13
+ end
15
14
 
16
- def on_start(&block)
17
- @on_start << block
18
- end
15
+ def on_start(&block)
16
+ @on_start << block
17
+ end
19
18
 
20
- def on_stop(&block)
21
- @on_stop << block
22
- end
19
+ def on_stop(&block)
20
+ @on_stop << block
21
+ end
23
22
 
24
- def on_change_position(&block)
25
- @on_change_position << block
26
- end
23
+ def on_change_position(&block)
24
+ @on_change_position << block
25
+ end
27
26
 
28
- def run
29
- raise NotImplementedError
30
- end
27
+ def run
28
+ raise NotImplementedError
29
+ end
31
30
 
32
- def terminate
33
- raise NotImplementedError
31
+ def terminate
32
+ raise NotImplementedError
33
+ end
34
34
  end
35
35
  end
36
36
  end