musa-dsl 0.14.18 → 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 +105 -105
  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 +562 -270
  88. data/lib/musa-dsl/sequencer/base-sequencer-public.rb +199 -188
  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 +98 -94
  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,137 +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
+
9
+ attr_reader :sequencer
10
+
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)
19
+
20
+ beats_per_bar ||= 4
21
+ ticks_per_beat ||= 24
22
+ do_log ||= false
23
+
24
+ @clock = clock
8
25
 
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
- before_each_tick: nil,
16
- on_position_change: nil,
17
- do_log: nil)
26
+ @before_begin = []
27
+ @before_begin << SmartProcBinder.new(before_begin) if before_begin
18
28
 
19
- beats_per_bar ||= 4
20
- ticks_per_beat ||= 24
21
- do_log ||= false
29
+ @on_start = []
30
+ @on_start << SmartProcBinder.new(on_start) if on_start
22
31
 
23
- @clock = clock
32
+ @on_change_position = []
33
+ @on_change_position << SmartProcBinder.new(on_position_change) if on_position_change
24
34
 
25
- @before_begin = []
26
- @before_begin << KeyParametersProcedureBinder.new(before_begin) if before_begin
35
+ @after_stop = []
36
+ @after_stop << SmartProcBinder.new(after_stop) if after_stop
27
37
 
28
- @on_start = []
29
- @on_start << KeyParametersProcedureBinder.new(on_start) if on_start
38
+ @do_log = do_log
30
39
 
31
- @before_each_tick = []
32
- @before_each_tick << KeyParametersProcedureBinder.new(before_each_tick) if before_each_tick
40
+ @sequencer = Sequencer::Sequencer.new beats_per_bar, ticks_per_beat, do_log: @do_log
41
+
42
+ @clock.on_start do
43
+ do_on_start
44
+ end
45
+
46
+ @clock.on_stop do
47
+ do_stop
48
+ end
33
49
 
34
- @on_position_change = []
35
- @on_position_change << KeyParametersProcedureBinder.new(on_position_change) if on_position_change
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
53
+ end
36
54
 
37
- @after_stop = []
38
- @after_stop << KeyParametersProcedureBinder.new(after_stop) if after_stop
55
+ def before_begin(&block)
56
+ @before_begin << SmartProcBinder.new(block)
57
+ end
39
58
 
40
- @do_log = do_log
59
+ def on_start(&block)
60
+ @on_start << SmartProcBinder.new(block)
61
+ end
41
62
 
42
- @sequencer = Sequencer.new beats_per_bar, ticks_per_beat, do_log: @do_log
63
+ def after_stop(&block)
64
+ @after_stop << SmartProcBinder.new(block)
65
+ end
43
66
 
44
- @clock.on_start do
45
- do_on_start
67
+ def on_change_position(&block)
68
+ @on_change_position << SmartProcBinder.new(block)
46
69
  end
47
70
 
48
- @clock.on_stop do
49
- do_stop
71
+ def start
72
+ do_before_begin unless @before_begin_already_done
73
+
74
+ @clock.run do
75
+ @before_begin_already_done = false
76
+ @sequencer.tick
77
+ end
50
78
  end
51
79
 
52
- @clock.on_song_position_pointer do |midi_beat_position|
53
- position = Rational(midi_beat_position, 4 * beats_per_bar) + 1
54
- tick_before_position = position - Rational(1, beats_per_bar * ticks_per_beat)
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
+
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
86
+
87
+ raise ArgumentError, "undefined new position" unless position
55
88
 
56
89
  warn "Transport: received message position change to #{position}" if @do_log
57
90
 
58
91
  start_again_later = false
59
92
 
60
- if @sequencer.position > tick_before_position
93
+ if @sequencer.position > position
61
94
  do_stop
62
95
  start_again_later = true
63
96
  end
64
97
 
65
- warn "Transport: setting sequencer position #{tick_before_position}" if @do_log
66
- @sequencer.position = tick_before_position
98
+ warn "Transport: setting sequencer position #{position}" if @do_log
67
99
 
68
100
  @sequencer.raw_at position, force_first: true do
69
- @on_position_change.each { |block| block.call @sequencer }
101
+ @on_change_position.each { |block| block.call @sequencer }
70
102
  end
71
103
 
104
+ @sequencer.position = position
105
+
72
106
  do_on_start if start_again_later
73
107
  end
74
- end
75
-
76
- def before_begin(&block)
77
- @before_begin << KeyParametersProcedureBinder.new(block)
78
- end
79
-
80
- def on_start(&block)
81
- @on_start << KeyParametersProcedureBinder.new(block)
82
- end
83
-
84
- def before_each_tick(&block)
85
- @before_each_tick << KeyParametersProcedureBinder.new(block)
86
- end
87
-
88
- def after_stop(&block)
89
- @after_stop << KeyParametersProcedureBinder.new(block)
90
- end
91
-
92
- def on_position_change(&block)
93
- @on_position_change << KeyParametersProcedureBinder.new(block)
94
- end
95
-
96
- def start
97
- do_before_begin unless @before_begin_already_done
98
108
 
99
- @clock.run do
100
- @before_begin_already_done = false
101
- @before_each_tick.each { |block| block.call @sequencer }
102
- @sequencer.tick
109
+ def stop
110
+ @clock.terminate
103
111
  end
104
- end
105
-
106
- def stop
107
- @clock.terminate
108
- end
109
112
 
110
- private
113
+ private
111
114
 
112
- def do_before_begin
113
- warn 'Transport: doing before_begin initialization...' unless @before_begin.empty? || !@do_log
114
- @before_begin.each { |block| block.call @sequencer }
115
- warn 'Transport: doing before_begin initialization... done' unless @before_begin.empty? || !@do_log
116
- 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
117
120
 
118
- def do_on_start
119
- warn 'Transport: starting...' unless @on_start.empty? || !@do_log
120
- @on_start.each { |block| block.call @sequencer }
121
- warn 'Transport: starting... done' unless @on_start.empty? || !@do_log
122
- end
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
123
126
 
124
- def do_stop
125
- warn 'Transport: stoping...' unless @after_stop.empty? || !@do_log
126
- @after_stop.each { |block| block.call @sequencer }
127
- warn 'Transport: stoping... done' unless @after_stop.empty? || !@do_log
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
128
131
 
129
- warn 'Transport: resetting sequencer...' if @do_log
130
- @sequencer.reset
131
- 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
132
135
 
133
- do_before_begin
134
- @before_begin_already_done = true
136
+ do_before_begin
137
+ @before_begin_already_done = true
138
+ end
135
139
  end
136
140
  end
137
141
  end
@@ -1,14 +1,14 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'musa-dsl'
3
- s.version = '0.14.18'
4
- s.date = '2019-09-29'
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.18
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-09-29 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: []