musa-dsl 0.23.19 → 0.23.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/musa-dsl/repl/repl.rb +11 -0
- data/lib/musa-dsl/sequencer/base-sequencer-implementation-play-timed.rb +2 -2
- data/lib/musa-dsl/sequencer/base-sequencer.rb +9 -6
- data/lib/musa-dsl/sequencer/sequencer-dsl.rb +2 -2
- data/lib/musa-dsl/transport/timer.rb +2 -2
- data/lib/musa-dsl/transport/transport.rb +3 -1
- data/lib/musa-dsl.rb +1 -1
- data/musa-dsl.gemspec +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d553a28107482bf41290cc93cdfca73a8096fa9525658b8c3f41d26681de062b
|
4
|
+
data.tar.gz: 7491c04165a88ac74ce1131e7721ee071d9e2bf54b0a3d1ca2b09844d2c5f174
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d147175f329eb74f1660c11d643de3ff65abaea2c4d1ed2554322d353b626bade1d073e2c7d6c25d2c9982916253d8318f792d0f3b41f9294505954f642e5f45
|
7
|
+
data.tar.gz: 4938ef8a3b0115dad3ad7c09ce8410d0049844965f5cfcdb22c58de8f85353541fae483e3f1578b97c149daf168b37efd23b596808e72c1c45996ed05a2cd96a
|
data/lib/musa-dsl/repl/repl.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'socket'
|
2
|
+
require 'pathname'
|
2
3
|
|
3
4
|
module Musa
|
4
5
|
module REPL
|
@@ -37,7 +38,13 @@ module Musa
|
|
37
38
|
|
38
39
|
line.chomp!
|
39
40
|
case line
|
41
|
+
when '#path'
|
42
|
+
buffer = StringIO.new
|
43
|
+
|
40
44
|
when '#begin'
|
45
|
+
user_path = buffer&.string
|
46
|
+
binder.receiver.instance_variable_set(:@user_pathname, Pathname.new(user_path)) if user_path
|
47
|
+
|
41
48
|
buffer = StringIO.new
|
42
49
|
|
43
50
|
when '#end'
|
@@ -94,6 +101,10 @@ module Musa
|
|
94
101
|
@client_threads.clear
|
95
102
|
end
|
96
103
|
|
104
|
+
def puts(message)
|
105
|
+
send output: @connection, content: message
|
106
|
+
end
|
107
|
+
|
97
108
|
private
|
98
109
|
|
99
110
|
def send_echo(e, output:)
|
@@ -4,7 +4,7 @@ module Musa::Sequencer
|
|
4
4
|
class BaseSequencer
|
5
5
|
using Musa::Extension::InspectNice
|
6
6
|
|
7
|
-
private def _play_timed(timed_serie, control, &block)
|
7
|
+
private def _play_timed(timed_serie, start_position, control, &block)
|
8
8
|
|
9
9
|
if first_value_sample = timed_serie.peek_next_value
|
10
10
|
debug "_play_timed: first_value_sample #{first_value_sample}"
|
@@ -25,7 +25,7 @@ module Musa::Sequencer
|
|
25
25
|
binder = Musa::Extension::SmartProcBinder::SmartProcBinder.new(block)
|
26
26
|
|
27
27
|
_play_timed_step(hash_mode, component_ids, extra_attribute_names, timed_serie,
|
28
|
-
|
28
|
+
start_position, last_positions, binder, control)
|
29
29
|
end
|
30
30
|
|
31
31
|
private def _play_timed_step(hash_mode,
|
@@ -21,9 +21,9 @@ module Musa
|
|
21
21
|
logger: nil,
|
22
22
|
do_log: nil, do_error_log: nil, log_position_format: nil)
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
unless beats_per_bar && ticks_per_beat || beats_per_bar.nil? && ticks_per_beat.nil?
|
25
|
+
raise ArgumentError, "'beats_per_bar' and 'ticks_per_beat' parameters should be both nil or both have values"
|
26
|
+
end
|
27
27
|
|
28
28
|
if logger
|
29
29
|
@logger = logger
|
@@ -39,9 +39,9 @@ module Musa
|
|
39
39
|
@beats_per_bar = Rational(beats_per_bar)
|
40
40
|
@ticks_per_beat = Rational(ticks_per_beat)
|
41
41
|
|
42
|
-
|
42
|
+
singleton_class.include TickBasedTiming
|
43
43
|
else
|
44
|
-
|
44
|
+
singleton_class.include TicklessBasedTiming
|
45
45
|
end
|
46
46
|
|
47
47
|
_init_timing
|
@@ -215,10 +215,13 @@ module Musa
|
|
215
215
|
end
|
216
216
|
|
217
217
|
def play_timed(timed_serie,
|
218
|
+
at: nil,
|
218
219
|
on_stop: nil,
|
219
220
|
after_bars: nil, after: nil,
|
220
221
|
&block)
|
221
222
|
|
223
|
+
at ||= position
|
224
|
+
|
222
225
|
control = PlayTimedControl.new(@event_handlers.last,
|
223
226
|
on_stop: on_stop, after_bars: after_bars, after: after)
|
224
227
|
|
@@ -230,7 +233,7 @@ module Musa
|
|
230
233
|
|
231
234
|
@event_handlers.push control
|
232
235
|
|
233
|
-
_play_timed(timed_serie.instance, control, &block)
|
236
|
+
_play_timed(timed_serie.instance, at, control, &block)
|
234
237
|
|
235
238
|
@event_handlers.pop
|
236
239
|
|
@@ -28,9 +28,9 @@ module Musa
|
|
28
28
|
if @do_log && to_sleep.negative? & @logger
|
29
29
|
tick_errors = -to_sleep / @period
|
30
30
|
if tick_errors >= @delayed_ticks_error
|
31
|
-
@logger.error "Timer delayed #{tick_errors.round(2)} ticks (#{-to_sleep}s)"
|
31
|
+
@logger.error "Timer delayed #{tick_errors.round(2)} ticks (#{-to_sleep.round(3)}s)"
|
32
32
|
else
|
33
|
-
@logger.warn "Timer delayed #{tick_errors.round(2)} ticks (#{-to_sleep}s)"
|
33
|
+
@logger.warn "Timer delayed #{tick_errors.round(2)} ticks (#{-to_sleep.round(3)}s)"
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -12,6 +12,7 @@ module Musa
|
|
12
12
|
def initialize(clock,
|
13
13
|
beats_per_bar = nil,
|
14
14
|
ticks_per_beat = nil,
|
15
|
+
sequencer: nil,
|
15
16
|
before_begin: nil,
|
16
17
|
on_start: nil,
|
17
18
|
after_stop: nil,
|
@@ -39,7 +40,8 @@ module Musa
|
|
39
40
|
|
40
41
|
@do_log = do_log
|
41
42
|
|
42
|
-
@sequencer =
|
43
|
+
@sequencer = sequencer
|
44
|
+
@sequencer ||= Musa::Sequencer::Sequencer.new beats_per_bar, ticks_per_beat, logger: logger, do_log: @do_log
|
43
45
|
|
44
46
|
@clock.on_start do
|
45
47
|
do_on_start
|
data/lib/musa-dsl.rb
CHANGED
data/musa-dsl.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'musa-dsl'
|
3
|
-
s.version = '0.23.
|
4
|
-
s.date = '2021-
|
3
|
+
s.version = '0.23.23'
|
4
|
+
s.date = '2021-10-27'
|
5
5
|
s.summary = 'A simple Ruby DSL for making complex music'
|
6
6
|
s.description = 'Musa-DSL: A Ruby framework and DSL for algorithmic sound and musical thinking and composition'
|
7
7
|
s.authors = ['Javier Sánchez Yeste']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: musa-dsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.23.
|
4
|
+
version: 0.23.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Javier Sánchez Yeste
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: citrus
|