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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 69d8893b895c8b836a51be4f7fc7b51fbab501383c6e3780d0af52e82f1bb324
4
- data.tar.gz: 017f7f8a8fb2cd5b3104d6c1f5c5acd535ea3db4c4285d15f1c81fe792cf123c
3
+ metadata.gz: d553a28107482bf41290cc93cdfca73a8096fa9525658b8c3f41d26681de062b
4
+ data.tar.gz: 7491c04165a88ac74ce1131e7721ee071d9e2bf54b0a3d1ca2b09844d2c5f174
5
5
  SHA512:
6
- metadata.gz: 681651cd39523a69d2cbe3fe7271b79ab6f8c0d616cabd8f7d9ef4e0af8f8bbaaed39d41977c35900a748057af8a274b5672762340b98537b9f1d2cba7c5b401
7
- data.tar.gz: 29cc0e37bf4f3513d78e32776c9df7a6a622c913a965f7bef8944bd0961ef7f8e23bfc348dbbe9eb7d18a211e224f6f27acc95210340bbad05aacde0d34f5404
6
+ metadata.gz: d147175f329eb74f1660c11d643de3ff65abaea2c4d1ed2554322d353b626bade1d073e2c7d6c25d2c9982916253d8318f792d0f3b41f9294505954f642e5f45
7
+ data.tar.gz: 4938ef8a3b0115dad3ad7c09ce8410d0049844965f5cfcdb22c58de8f85353541fae483e3f1578b97c149daf168b37efd23b596808e72c1c45996ed05a2cd96a
@@ -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
- position, last_positions, binder, control)
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
- raise ArgumentError,
25
- "'beats_per_bar' and 'ticks_per_beat' parameters should be both nil or both have values" \
26
- unless beats_per_bar && ticks_per_beat || beats_per_bar.nil? && ticks_per_beat.nil?
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
- self.singleton_class.include TickBasedTiming
42
+ singleton_class.include TickBasedTiming
43
43
  else
44
- self.singleton_class.include TicklessBasedTiming
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
 
@@ -43,8 +43,8 @@ module Musa
43
43
  @dsl.with &block if block_given?
44
44
  end
45
45
 
46
- def with(&block)
47
- @dsl.with &block
46
+ def with(*value_parameters, **key_parameters, &block)
47
+ @dsl.with(*value_parameters, **key_parameters, &block)
48
48
  end
49
49
 
50
50
  class DSLContext
@@ -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 = Musa::Sequencer::Sequencer.new beats_per_bar, ticks_per_beat, logger: logger, do_log: @do_log
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
@@ -1,5 +1,5 @@
1
1
  module Musa
2
- VERSION = '0.23.19'
2
+ VERSION = '0.23.23'
3
3
  end
4
4
 
5
5
  require_relative 'musa-dsl/core-ext'
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.19'
4
- s.date = '2021-09-28'
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.19
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-09-28 00:00:00.000000000 Z
11
+ date: 2021-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: citrus