musa-dsl 0.14.29 → 0.21.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/Gemfile +0 -1
  4. data/README.md +5 -1
  5. data/lib/musa-dsl.rb +54 -11
  6. data/lib/musa-dsl/core-ext.rb +7 -13
  7. data/lib/musa-dsl/core-ext/array-explode-ranges.rb +15 -23
  8. data/lib/musa-dsl/core-ext/arrayfy.rb +30 -12
  9. data/lib/musa-dsl/core-ext/attribute-builder.rb +194 -0
  10. data/lib/musa-dsl/core-ext/deep-copy.rb +185 -0
  11. data/lib/musa-dsl/core-ext/dynamic-proxy.rb +44 -40
  12. data/lib/musa-dsl/core-ext/inspect-nice.rb +40 -22
  13. data/lib/musa-dsl/core-ext/smart-proc-binder.rb +108 -0
  14. data/lib/musa-dsl/core-ext/with.rb +26 -0
  15. data/lib/musa-dsl/datasets.rb +8 -3
  16. data/lib/musa-dsl/datasets/dataset.rb +3 -0
  17. data/lib/musa-dsl/datasets/delta-d.rb +12 -0
  18. data/lib/musa-dsl/datasets/e.rb +61 -0
  19. data/lib/musa-dsl/datasets/gdv.rb +51 -411
  20. data/lib/musa-dsl/datasets/gdvd.rb +179 -0
  21. data/lib/musa-dsl/datasets/helper.rb +41 -0
  22. data/lib/musa-dsl/datasets/p.rb +68 -0
  23. data/lib/musa-dsl/datasets/packed-v.rb +19 -0
  24. data/lib/musa-dsl/datasets/pdv.rb +22 -15
  25. data/lib/musa-dsl/datasets/ps.rb +113 -0
  26. data/lib/musa-dsl/datasets/score.rb +210 -0
  27. data/lib/musa-dsl/datasets/score/queriable.rb +48 -0
  28. data/lib/musa-dsl/datasets/score/render.rb +31 -0
  29. data/lib/musa-dsl/datasets/score/to-mxml/process-pdv.rb +160 -0
  30. data/lib/musa-dsl/datasets/score/to-mxml/process-ps.rb +51 -0
  31. data/lib/musa-dsl/datasets/score/to-mxml/process-time.rb +153 -0
  32. data/lib/musa-dsl/datasets/score/to-mxml/to-mxml.rb +158 -0
  33. data/lib/musa-dsl/datasets/v.rb +23 -0
  34. data/lib/musa-dsl/generative.rb +5 -5
  35. data/lib/musa-dsl/generative/backboner.rb +274 -0
  36. data/lib/musa-dsl/generative/darwin.rb +102 -96
  37. data/lib/musa-dsl/generative/generative-grammar.rb +182 -187
  38. data/lib/musa-dsl/generative/markov.rb +56 -53
  39. data/lib/musa-dsl/generative/variatio.rb +234 -222
  40. data/lib/musa-dsl/logger.rb +1 -0
  41. data/lib/musa-dsl/logger/logger.rb +31 -0
  42. data/lib/musa-dsl/matrix.rb +1 -0
  43. data/lib/musa-dsl/matrix/matrix.rb +210 -0
  44. data/lib/musa-dsl/midi.rb +2 -2
  45. data/lib/musa-dsl/midi/midi-recorder.rb +54 -52
  46. data/lib/musa-dsl/midi/midi-voices.rb +187 -182
  47. data/lib/musa-dsl/music.rb +5 -5
  48. data/lib/musa-dsl/music/chord-definition.rb +54 -50
  49. data/lib/musa-dsl/music/chord-definitions.rb +13 -9
  50. data/lib/musa-dsl/music/chords.rb +236 -238
  51. data/lib/musa-dsl/music/equally-tempered-12-tone-scale-system.rb +187 -183
  52. data/lib/musa-dsl/music/scales.rb +331 -332
  53. data/lib/musa-dsl/musicxml.rb +1 -0
  54. data/lib/musa-dsl/musicxml/builder/attributes.rb +155 -0
  55. data/lib/musa-dsl/musicxml/builder/backup-forward.rb +45 -0
  56. data/lib/musa-dsl/musicxml/builder/direction.rb +322 -0
  57. data/lib/musa-dsl/musicxml/builder/helper.rb +90 -0
  58. data/lib/musa-dsl/musicxml/builder/measure.rb +137 -0
  59. data/lib/musa-dsl/musicxml/builder/note-complexities.rb +152 -0
  60. data/lib/musa-dsl/musicxml/builder/note.rb +577 -0
  61. data/lib/musa-dsl/musicxml/builder/part-group.rb +44 -0
  62. data/lib/musa-dsl/musicxml/builder/part.rb +67 -0
  63. data/lib/musa-dsl/musicxml/builder/pitched-note.rb +126 -0
  64. data/lib/musa-dsl/musicxml/builder/rest.rb +117 -0
  65. data/lib/musa-dsl/musicxml/builder/score-partwise.rb +120 -0
  66. data/lib/musa-dsl/musicxml/builder/typed-text.rb +43 -0
  67. data/lib/musa-dsl/musicxml/builder/unpitched-note.rb +112 -0
  68. data/lib/musa-dsl/neumalang.rb +1 -1
  69. data/lib/musa-dsl/neumalang/datatypes.citrus +79 -0
  70. data/lib/musa-dsl/neumalang/neuma.citrus +165 -0
  71. data/lib/musa-dsl/neumalang/neumalang.citrus +32 -242
  72. data/lib/musa-dsl/neumalang/neumalang.rb +373 -142
  73. data/lib/musa-dsl/neumalang/process.citrus +21 -0
  74. data/lib/musa-dsl/neumalang/terminals.citrus +67 -0
  75. data/lib/musa-dsl/neumalang/vectors.citrus +23 -0
  76. data/lib/musa-dsl/neumas.rb +5 -0
  77. data/lib/musa-dsl/neumas/array-to-neumas.rb +34 -0
  78. data/lib/musa-dsl/neumas/neuma-decoder.rb +63 -0
  79. data/lib/musa-dsl/neumas/neuma-gdv-decoder.rb +57 -0
  80. data/lib/musa-dsl/neumas/neuma-gdvd-decoder.rb +15 -0
  81. data/lib/musa-dsl/neumas/neumas.rb +37 -0
  82. data/lib/musa-dsl/neumas/string-to-neumas.rb +34 -0
  83. data/lib/musa-dsl/repl.rb +1 -1
  84. data/lib/musa-dsl/repl/repl.rb +128 -105
  85. data/lib/musa-dsl/sequencer.rb +1 -1
  86. data/lib/musa-dsl/sequencer/base-sequencer-implementation-control.rb +163 -136
  87. data/lib/musa-dsl/sequencer/base-sequencer-implementation-play-helper.rb +301 -286
  88. data/lib/musa-dsl/sequencer/base-sequencer-implementation.rb +552 -308
  89. data/lib/musa-dsl/sequencer/base-sequencer-public.rb +198 -176
  90. data/lib/musa-dsl/sequencer/base-sequencer-tick-based.rb +77 -0
  91. data/lib/musa-dsl/sequencer/base-sequencer-tickless-based.rb +75 -0
  92. data/lib/musa-dsl/sequencer/sequencer-dsl.rb +105 -85
  93. data/lib/musa-dsl/sequencer/timeslots.rb +34 -0
  94. data/lib/musa-dsl/series.rb +1 -1
  95. data/lib/musa-dsl/{core-ext → series}/array-to-serie.rb +1 -1
  96. data/lib/musa-dsl/series/base-series.rb +171 -168
  97. data/lib/musa-dsl/series/hash-serie-splitter.rb +134 -132
  98. data/lib/musa-dsl/series/holder-serie.rb +1 -1
  99. data/lib/musa-dsl/series/main-serie-constructors.rb +6 -1
  100. data/lib/musa-dsl/series/main-serie-operations.rb +807 -797
  101. data/lib/musa-dsl/series/proxy-serie.rb +6 -6
  102. data/lib/musa-dsl/series/queue-serie.rb +5 -5
  103. data/lib/musa-dsl/series/series.rb +2 -0
  104. data/lib/musa-dsl/transcription.rb +4 -0
  105. data/lib/musa-dsl/transcription/from-gdv-to-midi.rb +227 -0
  106. data/lib/musa-dsl/transcription/from-gdv-to-musicxml.rb +36 -0
  107. data/lib/musa-dsl/transcription/from-gdv.rb +17 -0
  108. data/lib/musa-dsl/transcription/transcription.rb +55 -0
  109. data/lib/musa-dsl/transport.rb +6 -6
  110. data/lib/musa-dsl/transport/clock.rb +26 -26
  111. data/lib/musa-dsl/transport/dummy-clock.rb +32 -30
  112. data/lib/musa-dsl/transport/external-tick-clock.rb +21 -20
  113. data/lib/musa-dsl/transport/input-midi-clock.rb +82 -80
  114. data/lib/musa-dsl/transport/timer-clock.rb +72 -71
  115. data/lib/musa-dsl/transport/timer.rb +28 -26
  116. data/lib/musa-dsl/transport/transport.rb +111 -93
  117. data/musa-dsl.gemspec +3 -3
  118. metadata +73 -24
  119. data/lib/musa-dsl/core-ext/array-apply-get.rb +0 -18
  120. data/lib/musa-dsl/core-ext/array-to-neumas.rb +0 -28
  121. data/lib/musa-dsl/core-ext/as-context-run.rb +0 -44
  122. data/lib/musa-dsl/core-ext/duplicate.rb +0 -134
  123. data/lib/musa-dsl/core-ext/key-parameters-procedure-binder.rb +0 -85
  124. data/lib/musa-dsl/core-ext/proc-nice.rb +0 -13
  125. data/lib/musa-dsl/core-ext/send-nice.rb +0 -21
  126. data/lib/musa-dsl/core-ext/string-to-neumas.rb +0 -27
  127. data/lib/musa-dsl/datasets/gdv-decorators.rb +0 -221
  128. data/lib/musa-dsl/generative/rules.rb +0 -282
  129. data/lib/musa-dsl/neuma.rb +0 -1
  130. data/lib/musa-dsl/neuma/neuma.rb +0 -181
@@ -1,40 +1,42 @@
1
1
  module Musa
2
- class Timer
3
- attr_accessor :period
2
+ module Clock
3
+ class Timer
4
+ attr_accessor :period
5
+
6
+ def initialize(period_in_seconds, correction: nil, stop: nil)
7
+ @period = period_in_seconds.rationalize
8
+ @correction = (correction || 0r).rationalize
9
+ @stop = stop || false
10
+ end
4
11
 
5
- def initialize(period_in_seconds, correction: nil, stop: nil)
6
- @period = period_in_seconds.rationalize
7
- @correction = (correction || 0r).rationalize
8
- @stop ||= false
9
- end
12
+ def run
13
+ @thread = Thread.current
10
14
 
11
- def run
12
- @thread = Thread.current
15
+ @next_moment = Process.clock_gettime(Process::CLOCK_MONOTONIC)
13
16
 
14
- @next_moment = Process.clock_gettime(Process::CLOCK_MONOTONIC)
17
+ loop do
18
+ unless @stop
19
+ yield
15
20
 
16
- loop do
17
- unless @stop
18
- yield
21
+ @next_moment += @period
22
+ to_sleep = (@next_moment + @correction) - Process.clock_gettime(Process::CLOCK_MONOTONIC)
19
23
 
20
- @next_moment += @period
21
- to_sleep = (@next_moment + @correction) - Process.clock_gettime(Process::CLOCK_MONOTONIC)
24
+ sleep to_sleep if to_sleep > 0.0
25
+ end
22
26
 
23
- sleep to_sleep if to_sleep > 0.0
27
+ sleep if @stop
24
28
  end
25
-
26
- sleep if @stop
27
29
  end
28
- end
29
30
 
30
- def stop
31
- @stop = true
32
- end
31
+ def stop
32
+ @stop = true
33
+ end
33
34
 
34
- def continue
35
- @stop = false
36
- @next_moment = Process.clock_gettime(Process::CLOCK_MONOTONIC)
37
- @thread.run
35
+ def continue
36
+ @stop = false
37
+ @next_moment = Process.clock_gettime(Process::CLOCK_MONOTONIC)
38
+ @thread.run
39
+ end
38
40
  end
39
41
  end
40
42
  end
@@ -1,136 +1,154 @@
1
- require 'musa-dsl/sequencer'
1
+ require_relative '../core-ext/smart-proc-binder'
2
+ require_relative '../core-ext/inspect-nice'
3
+ require_relative '../sequencer'
2
4
 
3
- require 'musa-dsl/core-ext/key-parameters-procedure-binder'
5
+ using Musa::Extension::InspectNice
4
6
 
5
7
  module Musa
6
- class Transport
7
- attr_reader :sequencer
8
+ module Transport
9
+ class Transport
10
+ include Musa::Extension::SmartProcBinder
8
11
 
9
- def initialize(clock,
10
- beats_per_bar = nil,
11
- ticks_per_beat = nil,
12
- before_begin: nil,
13
- on_start: nil,
14
- after_stop: nil,
15
- on_position_change: nil,
16
- do_log: nil)
12
+ attr_reader :sequencer
17
13
 
18
- beats_per_bar ||= 4
19
- ticks_per_beat ||= 24
20
- do_log ||= false
14
+ def initialize(clock,
15
+ beats_per_bar = nil,
16
+ ticks_per_beat = nil,
17
+ before_begin: nil,
18
+ on_start: nil,
19
+ after_stop: nil,
20
+ on_position_change: nil,
21
+ logger: nil,
22
+ do_log: nil)
21
23
 
22
- @clock = clock
24
+ beats_per_bar ||= 4
25
+ ticks_per_beat ||= 24
26
+ do_log ||= false
23
27
 
24
- @before_begin = []
25
- @before_begin << KeyParametersProcedureBinder.new(before_begin) if before_begin
28
+ @clock = clock
26
29
 
27
- @on_start = []
28
- @on_start << KeyParametersProcedureBinder.new(on_start) if on_start
30
+ @before_begin = []
31
+ @before_begin << SmartProcBinder.new(before_begin) if before_begin
29
32
 
30
- @on_change_position = []
31
- @on_change_position << KeyParametersProcedureBinder.new(on_position_change) if on_position_change
33
+ @on_start = []
34
+ @on_start << SmartProcBinder.new(on_start) if on_start
32
35
 
33
- @after_stop = []
34
- @after_stop << KeyParametersProcedureBinder.new(after_stop) if after_stop
36
+ @on_change_position = []
37
+ @on_change_position << SmartProcBinder.new(on_position_change) if on_position_change
35
38
 
36
- @do_log = do_log
39
+ @after_stop = []
40
+ @after_stop << SmartProcBinder.new(after_stop) if after_stop
37
41
 
38
- @sequencer = Sequencer.new beats_per_bar, ticks_per_beat, do_log: @do_log
42
+ @do_log = do_log
39
43
 
40
- @clock.on_start do
41
- do_on_start
44
+ @sequencer = Sequencer::Sequencer.new beats_per_bar, ticks_per_beat, logger: logger, do_log: @do_log
45
+
46
+ @clock.on_start do
47
+ do_on_start
48
+ end
49
+
50
+ @clock.on_stop do
51
+ do_stop
52
+ end
53
+
54
+ @clock.on_change_position do |bars: nil, beats: nil, midi_beats: nil|
55
+ change_position_to bars: bars, beats: beats, midi_beats: midi_beats
56
+ end
42
57
  end
43
58
 
44
- @clock.on_stop do
45
- do_stop
59
+ def before_begin(&block)
60
+ @before_begin << SmartProcBinder.new(block)
46
61
  end
47
62
 
48
- @clock.on_change_position do |bars: nil, beats: nil, midi_beats: nil|
49
- change_position_to bars: bars, beats: beats, midi_beats: midi_beats
63
+ def on_start(&block)
64
+ @on_start << SmartProcBinder.new(block)
50
65
  end
51
- end
52
66
 
53
- def before_begin(&block)
54
- @before_begin << KeyParametersProcedureBinder.new(block)
55
- end
67
+ def after_stop(&block)
68
+ @after_stop << SmartProcBinder.new(block)
69
+ end
56
70
 
57
- def on_start(&block)
58
- @on_start << KeyParametersProcedureBinder.new(block)
59
- end
71
+ def on_change_position(&block)
72
+ @on_change_position << SmartProcBinder.new(block)
73
+ end
60
74
 
61
- def after_stop(&block)
62
- @after_stop << KeyParametersProcedureBinder.new(block)
63
- end
75
+ def start
76
+ do_before_begin unless @before_begin_already_done
64
77
 
65
- def on_change_position(&block)
66
- @on_change_position << KeyParametersProcedureBinder.new(block)
67
- end
78
+ @clock.run do
79
+ @before_begin_already_done = false
80
+ @sequencer.tick
81
+ end
82
+ end
68
83
 
69
- def start
70
- do_before_begin unless @before_begin_already_done
84
+ def change_position_to(bars: nil, beats: nil, midi_beats: nil)
85
+ logger.debug('Transport') do
86
+ "asked to change position to #{"#{bars} bars " if bars}#{"#{beats} beats " if beats}" \
87
+ "#{"#{midi_beats} midi beats " if midi_beats}"
88
+ end
71
89
 
72
- @clock.run do
73
- @before_begin_already_done = false
74
- @sequencer.tick
75
- end
76
- end
90
+ position = bars&.rationalize || 1r
91
+ position += Rational(midi_beats, 4 * @sequencer.beats_per_bar) if midi_beats
92
+ position += Rational(beats, @sequencer.beats_per_bar) if beats
77
93
 
78
- def change_position_to(bars: nil, beats: nil, midi_beats: nil)
79
- position = bars.rationalize || 1r
80
- position += Rational(midi_beats, 4 * @sequencer.beats_per_bar) if midi_beats
81
- position += Rational(beats, @sequencer.beats_per_bar) if beats
94
+ position -= @sequencer.tick_duration
82
95
 
83
- raise ArgumentError, "undefined new position" unless position
96
+ raise ArgumentError, "undefined new position" unless position
84
97
 
85
- warn "Transport: received message position change to #{position}" if @do_log
98
+ logger.debug('Transport') { "received message position change to #{position.inspect}" }
86
99
 
87
- start_again_later = false
100
+ start_again_later = false
88
101
 
89
- if @sequencer.position > position
90
- do_stop
91
- start_again_later = true
92
- end
102
+ if @sequencer.position > position
103
+ do_stop
104
+ start_again_later = true
105
+ end
93
106
 
94
- warn "Transport: setting sequencer position #{position}" if @do_log
107
+ logger.debug('Transport') { "setting sequencer position #{position.inspect}" }
95
108
 
96
- @sequencer.raw_at position, force_first: true do
97
- @on_change_position.each { |block| block.call @sequencer }
98
- end
109
+ @sequencer.raw_at position, force_first: true do
110
+ @on_change_position.each { |block| block.call @sequencer }
111
+ end
99
112
 
100
- @sequencer.position = position
113
+ @sequencer.position = position
101
114
 
102
- do_on_start if start_again_later
103
- end
115
+ do_on_start if start_again_later
116
+ end
104
117
 
105
- def stop
106
- @clock.terminate
107
- end
118
+ def stop
119
+ @clock.terminate
120
+ end
108
121
 
109
- private
122
+ def logger
123
+ @sequencer.logger
124
+ end
110
125
 
111
- def do_before_begin
112
- warn 'Transport: doing before_begin initialization...' unless @before_begin.empty? || !@do_log
113
- @before_begin.each { |block| block.call @sequencer }
114
- warn 'Transport: doing before_begin initialization... done' unless @before_begin.empty? || !@do_log
115
- end
126
+ private
116
127
 
117
- def do_on_start
118
- warn 'Transport: starting...' unless @on_start.empty? || !@do_log
119
- @on_start.each { |block| block.call @sequencer }
120
- warn 'Transport: starting... done' unless @on_start.empty? || !@do_log
121
- end
128
+ def do_before_begin
129
+ logger.debug('Transport') { 'doing before_begin initialization...' unless @before_begin.empty? }
130
+ @before_begin.each { |block| block.call @sequencer }
131
+ logger.debug('Transport') { 'doing before_begin initialization... done' unless @before_begin.empty? }
132
+ end
122
133
 
123
- def do_stop
124
- warn 'Transport: stoping...' unless @after_stop.empty? || !@do_log
125
- @after_stop.each { |block| block.call @sequencer }
126
- warn 'Transport: stoping... done' unless @after_stop.empty? || !@do_log
134
+ def do_on_start
135
+ logger.debug('Transport') { 'starting...' unless @on_start.empty? }
136
+ @on_start.each { |block| block.call @sequencer }
137
+ logger.debug('Transport') { 'starting... done' unless @on_start.empty? }
138
+ end
139
+
140
+ def do_stop
141
+ logger.debug('Transport') { 'stopping...' unless @after_stop.empty? }
142
+ @after_stop.each { |block| block.call @sequencer }
143
+ logger.debug('Transport') { 'stopping... done' unless @after_stop.empty? }
127
144
 
128
- warn 'Transport: resetting sequencer...' if @do_log
129
- @sequencer.reset
130
- warn 'Transport: resetting sequencer... done' if @do_log
145
+ logger.debug('Transport') { 'resetting sequencer...' }
146
+ @sequencer.reset
147
+ logger.debug('Transport') { 'resetting sequencer... done' }
131
148
 
132
- do_before_begin
133
- @before_begin_already_done = true
149
+ do_before_begin
150
+ @before_begin_already_done = true
151
+ end
134
152
  end
135
153
  end
136
154
  end
@@ -1,14 +1,14 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'musa-dsl'
3
- s.version = '0.14.29'
4
- s.date = '2019-09-30'
3
+ s.version = '0.21.3'
4
+ s.date = '2020-10-20'
5
5
  s.summary = 'A simple Ruby DSL for making complex music'
6
6
  s.description = 'Musa-DSL: A Ruby DSL for algorithmic music composition, device language neutral (MIDI, OSC, etc)'
7
7
  s.authors = ['Javier Sánchez Yeste']
8
8
  s.email = 'javier.sy@gmail.com'
9
9
  s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|samples)/}) }
10
10
  s.homepage = 'https://github.com/javier-sy/musa-dsl'
11
- s.license = 'CC-BY-NC-ND-4.0'
11
+ s.license = 'LGPL-3.0'
12
12
 
13
13
  s.add_runtime_dependency 'citrus', '~> 3.0.0', '>= 3.0.0'
14
14
 
metadata CHANGED
@@ -1,33 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: musa-dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.29
4
+ version: 0.21.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Sánchez Yeste
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-30 00:00:00.000000000 Z
11
+ date: 2020-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: citrus
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.0.0
20
- - - "~>"
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 3.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ">="
27
+ - - "~>"
28
28
  - !ruby/object:Gem::Version
29
29
  version: 3.0.0
30
- - - "~>"
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 3.0.0
33
33
  - !ruby/object:Gem::Dependency
@@ -78,34 +78,49 @@ extensions: []
78
78
  extra_rdoc_files: []
79
79
  files:
80
80
  - ".gitignore"
81
+ - ".ruby-version"
81
82
  - Gemfile
82
83
  - LICENSE.md
83
84
  - README.md
84
85
  - lib/musa-dsl.rb
85
86
  - lib/musa-dsl/core-ext.rb
86
- - lib/musa-dsl/core-ext/array-apply-get.rb
87
87
  - lib/musa-dsl/core-ext/array-explode-ranges.rb
88
- - lib/musa-dsl/core-ext/array-to-neumas.rb
89
- - lib/musa-dsl/core-ext/array-to-serie.rb
90
88
  - lib/musa-dsl/core-ext/arrayfy.rb
91
- - lib/musa-dsl/core-ext/as-context-run.rb
92
- - lib/musa-dsl/core-ext/duplicate.rb
89
+ - lib/musa-dsl/core-ext/attribute-builder.rb
90
+ - lib/musa-dsl/core-ext/deep-copy.rb
93
91
  - lib/musa-dsl/core-ext/dynamic-proxy.rb
94
92
  - lib/musa-dsl/core-ext/inspect-nice.rb
95
- - lib/musa-dsl/core-ext/key-parameters-procedure-binder.rb
96
- - lib/musa-dsl/core-ext/proc-nice.rb
97
- - lib/musa-dsl/core-ext/send-nice.rb
98
- - lib/musa-dsl/core-ext/string-to-neumas.rb
93
+ - lib/musa-dsl/core-ext/smart-proc-binder.rb
94
+ - lib/musa-dsl/core-ext/with.rb
99
95
  - lib/musa-dsl/datasets.rb
100
- - lib/musa-dsl/datasets/gdv-decorators.rb
96
+ - lib/musa-dsl/datasets/dataset.rb
97
+ - lib/musa-dsl/datasets/delta-d.rb
98
+ - lib/musa-dsl/datasets/e.rb
101
99
  - lib/musa-dsl/datasets/gdv.rb
100
+ - lib/musa-dsl/datasets/gdvd.rb
101
+ - lib/musa-dsl/datasets/helper.rb
102
+ - lib/musa-dsl/datasets/p.rb
103
+ - lib/musa-dsl/datasets/packed-v.rb
102
104
  - lib/musa-dsl/datasets/pdv.rb
105
+ - lib/musa-dsl/datasets/ps.rb
106
+ - lib/musa-dsl/datasets/score.rb
107
+ - lib/musa-dsl/datasets/score/queriable.rb
108
+ - lib/musa-dsl/datasets/score/render.rb
109
+ - lib/musa-dsl/datasets/score/to-mxml/process-pdv.rb
110
+ - lib/musa-dsl/datasets/score/to-mxml/process-ps.rb
111
+ - lib/musa-dsl/datasets/score/to-mxml/process-time.rb
112
+ - lib/musa-dsl/datasets/score/to-mxml/to-mxml.rb
113
+ - lib/musa-dsl/datasets/v.rb
103
114
  - lib/musa-dsl/generative.rb
115
+ - lib/musa-dsl/generative/backboner.rb
104
116
  - lib/musa-dsl/generative/darwin.rb
105
117
  - lib/musa-dsl/generative/generative-grammar.rb
106
118
  - lib/musa-dsl/generative/markov.rb
107
- - lib/musa-dsl/generative/rules.rb
108
119
  - lib/musa-dsl/generative/variatio.rb
120
+ - lib/musa-dsl/logger.rb
121
+ - lib/musa-dsl/logger/logger.rb
122
+ - lib/musa-dsl/matrix.rb
123
+ - lib/musa-dsl/matrix/matrix.rb
109
124
  - lib/musa-dsl/midi.rb
110
125
  - lib/musa-dsl/midi/midi-recorder.rb
111
126
  - lib/musa-dsl/midi/midi-voices.rb
@@ -115,11 +130,36 @@ files:
115
130
  - lib/musa-dsl/music/chords.rb
116
131
  - lib/musa-dsl/music/equally-tempered-12-tone-scale-system.rb
117
132
  - lib/musa-dsl/music/scales.rb
118
- - lib/musa-dsl/neuma.rb
119
- - lib/musa-dsl/neuma/neuma.rb
133
+ - lib/musa-dsl/musicxml.rb
134
+ - lib/musa-dsl/musicxml/builder/attributes.rb
135
+ - lib/musa-dsl/musicxml/builder/backup-forward.rb
136
+ - lib/musa-dsl/musicxml/builder/direction.rb
137
+ - lib/musa-dsl/musicxml/builder/helper.rb
138
+ - lib/musa-dsl/musicxml/builder/measure.rb
139
+ - lib/musa-dsl/musicxml/builder/note-complexities.rb
140
+ - lib/musa-dsl/musicxml/builder/note.rb
141
+ - lib/musa-dsl/musicxml/builder/part-group.rb
142
+ - lib/musa-dsl/musicxml/builder/part.rb
143
+ - lib/musa-dsl/musicxml/builder/pitched-note.rb
144
+ - lib/musa-dsl/musicxml/builder/rest.rb
145
+ - lib/musa-dsl/musicxml/builder/score-partwise.rb
146
+ - lib/musa-dsl/musicxml/builder/typed-text.rb
147
+ - lib/musa-dsl/musicxml/builder/unpitched-note.rb
120
148
  - lib/musa-dsl/neumalang.rb
149
+ - lib/musa-dsl/neumalang/datatypes.citrus
150
+ - lib/musa-dsl/neumalang/neuma.citrus
121
151
  - lib/musa-dsl/neumalang/neumalang.citrus
122
152
  - lib/musa-dsl/neumalang/neumalang.rb
153
+ - lib/musa-dsl/neumalang/process.citrus
154
+ - lib/musa-dsl/neumalang/terminals.citrus
155
+ - lib/musa-dsl/neumalang/vectors.citrus
156
+ - lib/musa-dsl/neumas.rb
157
+ - lib/musa-dsl/neumas/array-to-neumas.rb
158
+ - lib/musa-dsl/neumas/neuma-decoder.rb
159
+ - lib/musa-dsl/neumas/neuma-gdv-decoder.rb
160
+ - lib/musa-dsl/neumas/neuma-gdvd-decoder.rb
161
+ - lib/musa-dsl/neumas/neumas.rb
162
+ - lib/musa-dsl/neumas/string-to-neumas.rb
123
163
  - lib/musa-dsl/repl.rb
124
164
  - lib/musa-dsl/repl/repl.rb
125
165
  - lib/musa-dsl/sequencer.rb
@@ -127,9 +167,13 @@ files:
127
167
  - lib/musa-dsl/sequencer/base-sequencer-implementation-play-helper.rb
128
168
  - lib/musa-dsl/sequencer/base-sequencer-implementation.rb
129
169
  - lib/musa-dsl/sequencer/base-sequencer-public.rb
170
+ - lib/musa-dsl/sequencer/base-sequencer-tick-based.rb
171
+ - lib/musa-dsl/sequencer/base-sequencer-tickless-based.rb
130
172
  - lib/musa-dsl/sequencer/sequencer-dsl.rb
131
173
  - lib/musa-dsl/sequencer/sequencer.rb
174
+ - lib/musa-dsl/sequencer/timeslots.rb
132
175
  - lib/musa-dsl/series.rb
176
+ - lib/musa-dsl/series/array-to-serie.rb
133
177
  - lib/musa-dsl/series/base-series.rb
134
178
  - lib/musa-dsl/series/hash-serie-splitter.rb
135
179
  - lib/musa-dsl/series/holder-serie.rb
@@ -138,6 +182,11 @@ files:
138
182
  - lib/musa-dsl/series/proxy-serie.rb
139
183
  - lib/musa-dsl/series/queue-serie.rb
140
184
  - lib/musa-dsl/series/series.rb
185
+ - lib/musa-dsl/transcription.rb
186
+ - lib/musa-dsl/transcription/from-gdv-to-midi.rb
187
+ - lib/musa-dsl/transcription/from-gdv-to-musicxml.rb
188
+ - lib/musa-dsl/transcription/from-gdv.rb
189
+ - lib/musa-dsl/transcription/transcription.rb
141
190
  - lib/musa-dsl/transport.rb
142
191
  - lib/musa-dsl/transport/clock.rb
143
192
  - lib/musa-dsl/transport/dummy-clock.rb
@@ -149,9 +198,9 @@ files:
149
198
  - musa-dsl.gemspec
150
199
  homepage: https://github.com/javier-sy/musa-dsl
151
200
  licenses:
152
- - CC-BY-NC-ND-4.0
201
+ - LGPL-3.0
153
202
  metadata: {}
154
- post_install_message:
203
+ post_install_message:
155
204
  rdoc_options: []
156
205
  require_paths:
157
206
  - lib
@@ -166,8 +215,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
215
  - !ruby/object:Gem::Version
167
216
  version: '0'
168
217
  requirements: []
169
- rubygems_version: 3.0.3
170
- signing_key:
218
+ rubygems_version: 3.1.4
219
+ signing_key:
171
220
  specification_version: 4
172
221
  summary: A simple Ruby DSL for making complex music
173
222
  test_files: []