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.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/README.md +5 -1
- data/lib/musa-dsl.rb +54 -11
- data/lib/musa-dsl/core-ext.rb +7 -13
- data/lib/musa-dsl/core-ext/array-explode-ranges.rb +15 -23
- data/lib/musa-dsl/core-ext/arrayfy.rb +30 -12
- data/lib/musa-dsl/core-ext/attribute-builder.rb +194 -0
- data/lib/musa-dsl/core-ext/deep-copy.rb +185 -0
- data/lib/musa-dsl/core-ext/dynamic-proxy.rb +44 -40
- data/lib/musa-dsl/core-ext/inspect-nice.rb +40 -22
- data/lib/musa-dsl/core-ext/smart-proc-binder.rb +108 -0
- data/lib/musa-dsl/core-ext/with.rb +26 -0
- data/lib/musa-dsl/datasets.rb +8 -3
- data/lib/musa-dsl/datasets/dataset.rb +3 -0
- data/lib/musa-dsl/datasets/delta-d.rb +12 -0
- data/lib/musa-dsl/datasets/e.rb +61 -0
- data/lib/musa-dsl/datasets/gdv.rb +51 -411
- data/lib/musa-dsl/datasets/gdvd.rb +179 -0
- data/lib/musa-dsl/datasets/helper.rb +41 -0
- data/lib/musa-dsl/datasets/p.rb +68 -0
- data/lib/musa-dsl/datasets/packed-v.rb +19 -0
- data/lib/musa-dsl/datasets/pdv.rb +22 -15
- data/lib/musa-dsl/datasets/ps.rb +113 -0
- data/lib/musa-dsl/datasets/score.rb +210 -0
- data/lib/musa-dsl/datasets/score/queriable.rb +48 -0
- data/lib/musa-dsl/datasets/score/render.rb +31 -0
- data/lib/musa-dsl/datasets/score/to-mxml/process-pdv.rb +160 -0
- data/lib/musa-dsl/datasets/score/to-mxml/process-ps.rb +51 -0
- data/lib/musa-dsl/datasets/score/to-mxml/process-time.rb +153 -0
- data/lib/musa-dsl/datasets/score/to-mxml/to-mxml.rb +158 -0
- data/lib/musa-dsl/datasets/v.rb +23 -0
- data/lib/musa-dsl/generative.rb +5 -5
- data/lib/musa-dsl/generative/backboner.rb +274 -0
- data/lib/musa-dsl/generative/darwin.rb +102 -96
- data/lib/musa-dsl/generative/generative-grammar.rb +182 -187
- data/lib/musa-dsl/generative/markov.rb +56 -53
- data/lib/musa-dsl/generative/variatio.rb +234 -222
- data/lib/musa-dsl/logger.rb +1 -0
- data/lib/musa-dsl/logger/logger.rb +31 -0
- data/lib/musa-dsl/matrix.rb +1 -0
- data/lib/musa-dsl/matrix/matrix.rb +210 -0
- data/lib/musa-dsl/midi.rb +2 -2
- data/lib/musa-dsl/midi/midi-recorder.rb +54 -52
- data/lib/musa-dsl/midi/midi-voices.rb +183 -182
- data/lib/musa-dsl/music.rb +5 -5
- data/lib/musa-dsl/music/chord-definition.rb +54 -50
- data/lib/musa-dsl/music/chord-definitions.rb +13 -9
- data/lib/musa-dsl/music/chords.rb +236 -238
- data/lib/musa-dsl/music/equally-tempered-12-tone-scale-system.rb +187 -183
- data/lib/musa-dsl/music/scales.rb +331 -332
- data/lib/musa-dsl/musicxml.rb +1 -0
- data/lib/musa-dsl/musicxml/builder/attributes.rb +155 -0
- data/lib/musa-dsl/musicxml/builder/backup-forward.rb +45 -0
- data/lib/musa-dsl/musicxml/builder/direction.rb +322 -0
- data/lib/musa-dsl/musicxml/builder/helper.rb +90 -0
- data/lib/musa-dsl/musicxml/builder/measure.rb +137 -0
- data/lib/musa-dsl/musicxml/builder/note-complexities.rb +152 -0
- data/lib/musa-dsl/musicxml/builder/note.rb +577 -0
- data/lib/musa-dsl/musicxml/builder/part-group.rb +44 -0
- data/lib/musa-dsl/musicxml/builder/part.rb +67 -0
- data/lib/musa-dsl/musicxml/builder/pitched-note.rb +126 -0
- data/lib/musa-dsl/musicxml/builder/rest.rb +117 -0
- data/lib/musa-dsl/musicxml/builder/score-partwise.rb +120 -0
- data/lib/musa-dsl/musicxml/builder/typed-text.rb +43 -0
- data/lib/musa-dsl/musicxml/builder/unpitched-note.rb +112 -0
- data/lib/musa-dsl/neumalang.rb +1 -1
- data/lib/musa-dsl/neumalang/datatypes.citrus +79 -0
- data/lib/musa-dsl/neumalang/neuma.citrus +165 -0
- data/lib/musa-dsl/neumalang/neumalang.citrus +32 -242
- data/lib/musa-dsl/neumalang/neumalang.rb +373 -142
- data/lib/musa-dsl/neumalang/process.citrus +21 -0
- data/lib/musa-dsl/neumalang/terminals.citrus +67 -0
- data/lib/musa-dsl/neumalang/vectors.citrus +23 -0
- data/lib/musa-dsl/neumas.rb +5 -0
- data/lib/musa-dsl/neumas/array-to-neumas.rb +34 -0
- data/lib/musa-dsl/neumas/neuma-decoder.rb +63 -0
- data/lib/musa-dsl/neumas/neuma-gdv-decoder.rb +57 -0
- data/lib/musa-dsl/neumas/neuma-gdvd-decoder.rb +15 -0
- data/lib/musa-dsl/neumas/neumas.rb +37 -0
- data/lib/musa-dsl/neumas/string-to-neumas.rb +33 -0
- data/lib/musa-dsl/repl.rb +1 -1
- data/lib/musa-dsl/repl/repl.rb +105 -105
- data/lib/musa-dsl/sequencer.rb +1 -1
- data/lib/musa-dsl/sequencer/base-sequencer-implementation-control.rb +163 -136
- data/lib/musa-dsl/sequencer/base-sequencer-implementation-play-helper.rb +301 -286
- data/lib/musa-dsl/sequencer/base-sequencer-implementation.rb +562 -270
- data/lib/musa-dsl/sequencer/base-sequencer-public.rb +199 -188
- data/lib/musa-dsl/sequencer/base-sequencer-tick-based.rb +77 -0
- data/lib/musa-dsl/sequencer/base-sequencer-tickless-based.rb +75 -0
- data/lib/musa-dsl/sequencer/sequencer-dsl.rb +105 -85
- data/lib/musa-dsl/sequencer/timeslots.rb +34 -0
- data/lib/musa-dsl/series.rb +1 -1
- data/lib/musa-dsl/{core-ext → series}/array-to-serie.rb +1 -1
- data/lib/musa-dsl/series/base-series.rb +171 -168
- data/lib/musa-dsl/series/hash-serie-splitter.rb +134 -132
- data/lib/musa-dsl/series/holder-serie.rb +1 -1
- data/lib/musa-dsl/series/main-serie-constructors.rb +6 -1
- data/lib/musa-dsl/series/main-serie-operations.rb +807 -797
- data/lib/musa-dsl/series/proxy-serie.rb +6 -6
- data/lib/musa-dsl/series/queue-serie.rb +5 -5
- data/lib/musa-dsl/series/series.rb +2 -0
- data/lib/musa-dsl/transcription.rb +4 -0
- data/lib/musa-dsl/transcription/from-gdv-to-midi.rb +227 -0
- data/lib/musa-dsl/transcription/from-gdv-to-musicxml.rb +36 -0
- data/lib/musa-dsl/transcription/from-gdv.rb +17 -0
- data/lib/musa-dsl/transcription/transcription.rb +55 -0
- data/lib/musa-dsl/transport.rb +6 -6
- data/lib/musa-dsl/transport/clock.rb +26 -26
- data/lib/musa-dsl/transport/dummy-clock.rb +32 -30
- data/lib/musa-dsl/transport/external-tick-clock.rb +21 -20
- data/lib/musa-dsl/transport/input-midi-clock.rb +82 -80
- data/lib/musa-dsl/transport/timer-clock.rb +72 -71
- data/lib/musa-dsl/transport/timer.rb +28 -26
- data/lib/musa-dsl/transport/transport.rb +98 -94
- data/musa-dsl.gemspec +3 -3
- metadata +73 -24
- data/lib/musa-dsl/core-ext/array-apply-get.rb +0 -18
- data/lib/musa-dsl/core-ext/array-to-neumas.rb +0 -28
- data/lib/musa-dsl/core-ext/as-context-run.rb +0 -44
- data/lib/musa-dsl/core-ext/duplicate.rb +0 -134
- data/lib/musa-dsl/core-ext/key-parameters-procedure-binder.rb +0 -85
- data/lib/musa-dsl/core-ext/proc-nice.rb +0 -13
- data/lib/musa-dsl/core-ext/send-nice.rb +0 -21
- data/lib/musa-dsl/core-ext/string-to-neumas.rb +0 -27
- data/lib/musa-dsl/datasets/gdv-decorators.rb +0 -221
- data/lib/musa-dsl/generative/rules.rb +0 -282
- data/lib/musa-dsl/neuma.rb +0 -1
- data/lib/musa-dsl/neuma/neuma.rb +0 -181
@@ -1,40 +1,42 @@
|
|
1
1
|
module Musa
|
2
|
-
|
3
|
-
|
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
|
-
|
6
|
-
|
7
|
-
@correction = (correction || 0r).rationalize
|
8
|
-
@stop ||= false
|
9
|
-
end
|
12
|
+
def run
|
13
|
+
@thread = Thread.current
|
10
14
|
|
11
|
-
|
12
|
-
@thread = Thread.current
|
15
|
+
@next_moment = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
13
16
|
|
14
|
-
|
17
|
+
loop do
|
18
|
+
unless @stop
|
19
|
+
yield
|
15
20
|
|
16
|
-
|
17
|
-
|
18
|
-
yield
|
21
|
+
@next_moment += @period
|
22
|
+
to_sleep = (@next_moment + @correction) - Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
19
23
|
|
20
|
-
|
21
|
-
|
24
|
+
sleep to_sleep if to_sleep > 0.0
|
25
|
+
end
|
22
26
|
|
23
|
-
sleep
|
27
|
+
sleep if @stop
|
24
28
|
end
|
25
|
-
|
26
|
-
sleep if @stop
|
27
29
|
end
|
28
|
-
end
|
29
30
|
|
30
|
-
|
31
|
-
|
32
|
-
|
31
|
+
def stop
|
32
|
+
@stop = true
|
33
|
+
end
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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
|
-
|
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
|
-
|
7
|
-
|
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
|
-
|
10
|
-
|
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
|
-
|
20
|
-
|
21
|
-
do_log ||= false
|
29
|
+
@on_start = []
|
30
|
+
@on_start << SmartProcBinder.new(on_start) if on_start
|
22
31
|
|
23
|
-
|
32
|
+
@on_change_position = []
|
33
|
+
@on_change_position << SmartProcBinder.new(on_position_change) if on_position_change
|
24
34
|
|
25
|
-
|
26
|
-
|
35
|
+
@after_stop = []
|
36
|
+
@after_stop << SmartProcBinder.new(after_stop) if after_stop
|
27
37
|
|
28
|
-
|
29
|
-
@on_start << KeyParametersProcedureBinder.new(on_start) if on_start
|
38
|
+
@do_log = do_log
|
30
39
|
|
31
|
-
|
32
|
-
|
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
|
-
|
35
|
-
|
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
|
-
|
38
|
-
|
55
|
+
def before_begin(&block)
|
56
|
+
@before_begin << SmartProcBinder.new(block)
|
57
|
+
end
|
39
58
|
|
40
|
-
|
59
|
+
def on_start(&block)
|
60
|
+
@on_start << SmartProcBinder.new(block)
|
61
|
+
end
|
41
62
|
|
42
|
-
|
63
|
+
def after_stop(&block)
|
64
|
+
@after_stop << SmartProcBinder.new(block)
|
65
|
+
end
|
43
66
|
|
44
|
-
|
45
|
-
|
67
|
+
def on_change_position(&block)
|
68
|
+
@on_change_position << SmartProcBinder.new(block)
|
46
69
|
end
|
47
70
|
|
48
|
-
|
49
|
-
|
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
|
-
|
53
|
-
position
|
54
|
-
|
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 >
|
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 #{
|
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
|
-
@
|
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
|
-
|
100
|
-
@
|
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
|
-
|
113
|
+
private
|
111
114
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
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
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
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
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
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
|
-
|
130
|
-
|
131
|
-
|
132
|
+
warn 'Transport: resetting sequencer...' if @do_log
|
133
|
+
@sequencer.reset
|
134
|
+
warn 'Transport: resetting sequencer... done' if @do_log
|
132
135
|
|
133
|
-
|
134
|
-
|
136
|
+
do_before_begin
|
137
|
+
@before_begin_already_done = true
|
138
|
+
end
|
135
139
|
end
|
136
140
|
end
|
137
141
|
end
|
data/musa-dsl.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'musa-dsl'
|
3
|
-
s.version = '0.
|
4
|
-
s.date = '
|
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 = '
|
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.
|
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:
|
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/
|
92
|
-
- lib/musa-dsl/core-ext/
|
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/
|
96
|
-
- lib/musa-dsl/core-ext/
|
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/
|
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/
|
119
|
-
- lib/musa-dsl/
|
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
|
-
-
|
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.
|
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: []
|