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
@@ -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,141 @@
1
- require 'musa-dsl/sequencer'
2
-
3
- require 'musa-dsl/core-ext/key-parameters-procedure-binder'
1
+ require_relative '../core-ext/smart-proc-binder'
2
+ require_relative '../sequencer'
4
3
 
5
4
  module Musa
6
- class Transport
7
- attr_reader :sequencer
5
+ module Transport
6
+ class Transport
7
+ include Musa::Extension::SmartProcBinder
8
8
 
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)
9
+ attr_reader :sequencer
17
10
 
18
- beats_per_bar ||= 4
19
- ticks_per_beat ||= 24
20
- do_log ||= false
11
+ def initialize(clock,
12
+ beats_per_bar = nil,
13
+ ticks_per_beat = nil,
14
+ before_begin: nil,
15
+ on_start: nil,
16
+ after_stop: nil,
17
+ on_position_change: nil,
18
+ do_log: nil)
21
19
 
22
- @clock = clock
20
+ beats_per_bar ||= 4
21
+ ticks_per_beat ||= 24
22
+ do_log ||= false
23
23
 
24
- @before_begin = []
25
- @before_begin << KeyParametersProcedureBinder.new(before_begin) if before_begin
24
+ @clock = clock
26
25
 
27
- @on_start = []
28
- @on_start << KeyParametersProcedureBinder.new(on_start) if on_start
26
+ @before_begin = []
27
+ @before_begin << SmartProcBinder.new(before_begin) if before_begin
29
28
 
30
- @on_change_position = []
31
- @on_change_position << KeyParametersProcedureBinder.new(on_position_change) if on_position_change
29
+ @on_start = []
30
+ @on_start << SmartProcBinder.new(on_start) if on_start
32
31
 
33
- @after_stop = []
34
- @after_stop << KeyParametersProcedureBinder.new(after_stop) if after_stop
32
+ @on_change_position = []
33
+ @on_change_position << SmartProcBinder.new(on_position_change) if on_position_change
35
34
 
36
- @do_log = do_log
35
+ @after_stop = []
36
+ @after_stop << SmartProcBinder.new(after_stop) if after_stop
37
37
 
38
- @sequencer = Sequencer.new beats_per_bar, ticks_per_beat, do_log: @do_log
38
+ @do_log = do_log
39
39
 
40
- @clock.on_start do
41
- do_on_start
42
- end
40
+ @sequencer = Sequencer::Sequencer.new beats_per_bar, ticks_per_beat, do_log: @do_log
43
41
 
44
- @clock.on_stop do
45
- do_stop
46
- end
42
+ @clock.on_start do
43
+ do_on_start
44
+ end
45
+
46
+ @clock.on_stop do
47
+ do_stop
48
+ end
47
49
 
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
50
+ @clock.on_change_position do |bars: nil, beats: nil, midi_beats: nil|
51
+ change_position_to bars: bars, beats: beats, midi_beats: midi_beats
52
+ end
50
53
  end
51
- end
52
54
 
53
- def before_begin(&block)
54
- @before_begin << KeyParametersProcedureBinder.new(block)
55
- end
55
+ def before_begin(&block)
56
+ @before_begin << SmartProcBinder.new(block)
57
+ end
56
58
 
57
- def on_start(&block)
58
- @on_start << KeyParametersProcedureBinder.new(block)
59
- end
59
+ def on_start(&block)
60
+ @on_start << SmartProcBinder.new(block)
61
+ end
60
62
 
61
- def after_stop(&block)
62
- @after_stop << KeyParametersProcedureBinder.new(block)
63
- end
63
+ def after_stop(&block)
64
+ @after_stop << SmartProcBinder.new(block)
65
+ end
64
66
 
65
- def on_change_position(&block)
66
- @on_change_position << KeyParametersProcedureBinder.new(block)
67
- end
67
+ def on_change_position(&block)
68
+ @on_change_position << SmartProcBinder.new(block)
69
+ end
68
70
 
69
- def start
70
- do_before_begin unless @before_begin_already_done
71
+ def start
72
+ do_before_begin unless @before_begin_already_done
71
73
 
72
- @clock.run do
73
- @before_begin_already_done = false
74
- @sequencer.tick
74
+ @clock.run do
75
+ @before_begin_already_done = false
76
+ @sequencer.tick
77
+ end
75
78
  end
76
- end
77
79
 
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
80
+ def change_position_to(bars: nil, beats: nil, midi_beats: nil)
81
+ warn "Transport: asked to change position to #{"#{bars} bars " if bars}#{"#{beats} beats " if beats}#{"#{midi_beats} midi beats " if midi_beats}" if @do_log
82
82
 
83
- raise ArgumentError, "undefined new position" unless position
83
+ position = bars&.rationalize || 1r
84
+ position += Rational(midi_beats, 4 * @sequencer.beats_per_bar) if midi_beats
85
+ position += Rational(beats, @sequencer.beats_per_bar) if beats
84
86
 
85
- warn "Transport: received message position change to #{position}" if @do_log
87
+ raise ArgumentError, "undefined new position" unless position
86
88
 
87
- start_again_later = false
89
+ warn "Transport: received message position change to #{position}" if @do_log
88
90
 
89
- if @sequencer.position > position
90
- do_stop
91
- start_again_later = true
92
- end
91
+ start_again_later = false
93
92
 
94
- warn "Transport: setting sequencer position #{position}" if @do_log
93
+ if @sequencer.position > position
94
+ do_stop
95
+ start_again_later = true
96
+ end
95
97
 
96
- @sequencer.raw_at position, force_first: true do
97
- @on_change_position.each { |block| block.call @sequencer }
98
- end
98
+ warn "Transport: setting sequencer position #{position}" if @do_log
99
99
 
100
- @sequencer.position = position
100
+ @sequencer.raw_at position, force_first: true do
101
+ @on_change_position.each { |block| block.call @sequencer }
102
+ end
101
103
 
102
- do_on_start if start_again_later
103
- end
104
+ @sequencer.position = position
104
105
 
105
- def stop
106
- @clock.terminate
107
- end
106
+ do_on_start if start_again_later
107
+ end
108
108
 
109
- private
109
+ def stop
110
+ @clock.terminate
111
+ end
110
112
 
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
113
+ private
116
114
 
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
115
+ def do_before_begin
116
+ warn 'Transport: doing before_begin initialization...' unless @before_begin.empty? || !@do_log
117
+ @before_begin.each { |block| block.call @sequencer }
118
+ warn 'Transport: doing before_begin initialization... done' unless @before_begin.empty? || !@do_log
119
+ end
122
120
 
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
121
+ def do_on_start
122
+ warn 'Transport: starting...' unless @on_start.empty? || !@do_log
123
+ @on_start.each { |block| block.call @sequencer }
124
+ warn 'Transport: starting... done' unless @on_start.empty? || !@do_log
125
+ end
126
+
127
+ def do_stop
128
+ warn 'Transport: stoping...' unless @after_stop.empty? || !@do_log
129
+ @after_stop.each { |block| block.call @sequencer }
130
+ warn 'Transport: stoping... done' unless @after_stop.empty? || !@do_log
127
131
 
128
- warn 'Transport: resetting sequencer...' if @do_log
129
- @sequencer.reset
130
- warn 'Transport: resetting sequencer... done' if @do_log
132
+ warn 'Transport: resetting sequencer...' if @do_log
133
+ @sequencer.reset
134
+ warn 'Transport: resetting sequencer... done' if @do_log
131
135
 
132
- do_before_begin
133
- @before_begin_already_done = true
136
+ do_before_begin
137
+ @before_begin_already_done = true
138
+ end
134
139
  end
135
140
  end
136
141
  end
@@ -1,14 +1,14 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'musa-dsl'
3
- s.version = '0.14.32'
4
- s.date = '2019-10-05'
3
+ s.version = '0.21.0'
4
+ s.date = '2020-10-02'
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.32
4
+ version: 0.21.0
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-10-05 00:00:00.000000000 Z
11
+ date: 2020-10-02 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.2
219
+ signing_key:
171
220
  specification_version: 4
172
221
  summary: A simple Ruby DSL for making complex music
173
222
  test_files: []