musa-dsl 0.22.3 → 0.22.4
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.rb +1 -1
- data/lib/musa-dsl/datasets/p.rb +3 -1
- data/lib/musa-dsl/matrix/matrix.rb +9 -7
- data/lib/musa-dsl/sequencer/base-sequencer-implementation-play-timed.rb +10 -1
- data/lib/musa-dsl/sequencer/base-sequencer.rb +4 -0
- 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: fe8d0a64e4ba5518c7ed0fe4b75fffbf059217ef65e83025889a21d1c830a6e7
|
4
|
+
data.tar.gz: a78c43004243d81a9411c42e34338ecfe4ca7ef17322417dc2e8eb9a953b9abd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bf51f55471c9a753ec648cb1c223ef0564307d2807ec0c569a144856ef330ca7567e8ed4f8f0f651e1808ea42712c02c686ac123424d0feaa90955e2f6d77fe
|
7
|
+
data.tar.gz: 2bd503000a0d7cd2bd0e74f9790cbf5533335bc7d74cc6846cb60ea3bad4f1fd3fb24e74ed0bd1c6955b476d45274f51047202c89e12582e5fd642753d34144e
|
data/lib/musa-dsl.rb
CHANGED
data/lib/musa-dsl/datasets/p.rb
CHANGED
@@ -22,8 +22,10 @@ module Musa::Datasets
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
def to_timed_serie(time_start
|
25
|
+
def to_timed_serie(time_start: nil, time_start_component: nil, base_duration: nil)
|
26
26
|
time_start ||= 0r
|
27
|
+
time_start += self.first[time_start_component] if time_start_component
|
28
|
+
|
27
29
|
base_duration ||= 1/4r # TODO review incoherence between neumalang 1/4r base duration for quarter notes and general 1r size of bar
|
28
30
|
|
29
31
|
# TODO if instead of using clone (needed because of p.shift) we use index counter the P elements would be evaluated on the last moment
|
@@ -22,8 +22,8 @@ module Musa
|
|
22
22
|
indexes
|
23
23
|
end
|
24
24
|
|
25
|
-
def to_p(time_dimension
|
26
|
-
condensed_matrices.collect { |m| m.to_p(time_dimension, keep_time: keep_time) }
|
25
|
+
def to_p(time_dimension:, keep_time: nil)
|
26
|
+
condensed_matrices.collect { |m| m.to_p(time_dimension: time_dimension, keep_time: keep_time) }
|
27
27
|
end
|
28
28
|
|
29
29
|
def condensed_matrices
|
@@ -69,14 +69,14 @@ module Musa
|
|
69
69
|
refine ::Matrix do
|
70
70
|
include Musa::Datasets
|
71
71
|
|
72
|
-
def to_p(time_dimension
|
72
|
+
def to_p(time_dimension:, keep_time: nil)
|
73
73
|
decompose(self.to_a, time_dimension).collect do |points|
|
74
74
|
line = []
|
75
75
|
|
76
76
|
start_point = points[0]
|
77
77
|
start_time = start_point[time_dimension]
|
78
78
|
|
79
|
-
line << start_point.tap { |_| _.delete_at(time_dimension) unless keep_time; _ }.extend(Datasets::V)
|
79
|
+
line << start_point.clone.tap { |_| _.delete_at(time_dimension) unless keep_time; _ }.extend(Datasets::V)
|
80
80
|
|
81
81
|
(1..points.size-1).each do |i|
|
82
82
|
end_point = points[i]
|
@@ -84,7 +84,7 @@ module Musa
|
|
84
84
|
end_time = end_point[time_dimension]
|
85
85
|
|
86
86
|
line << end_time - start_time
|
87
|
-
line << end_point.tap { |_| _.delete_at(time_dimension) unless keep_time; _ }.extend(Datasets::V)
|
87
|
+
line << end_point.clone.tap { |_| _.delete_at(time_dimension) unless keep_time; _ }.extend(Datasets::V)
|
88
88
|
|
89
89
|
start_time = end_time
|
90
90
|
end
|
@@ -107,8 +107,9 @@ module Musa
|
|
107
107
|
|
108
108
|
x_dim_values_indexes.keys.sort.each do |value|
|
109
109
|
x_dim_values_indexes[value].each do |index|
|
110
|
+
#
|
110
111
|
# hacia un lado
|
111
|
-
|
112
|
+
#
|
112
113
|
unless used_indexes.include?(index)
|
113
114
|
i = index
|
114
115
|
xx = array[i][time_dimension]
|
@@ -125,8 +126,9 @@ module Musa
|
|
125
126
|
|
126
127
|
directional_segments << a if a.size > 1
|
127
128
|
|
129
|
+
#
|
128
130
|
# y hacia el otro
|
129
|
-
|
131
|
+
#
|
130
132
|
i = index
|
131
133
|
xx = array[i][time_dimension]
|
132
134
|
|
@@ -9,11 +9,15 @@ module Musa; module Sequencer
|
|
9
9
|
control,
|
10
10
|
reference: nil,
|
11
11
|
step: nil,
|
12
|
+
predictive: nil,
|
12
13
|
right_open: nil,
|
14
|
+
stops: nil,
|
13
15
|
&block)
|
14
16
|
|
15
17
|
reference ||= 0r
|
16
18
|
step ||= 1r
|
19
|
+
predictive ||= predictive
|
20
|
+
stops = stops.nil? ? true : stops
|
17
21
|
|
18
22
|
if first_value_sample = timed_serie.peek_next_value
|
19
23
|
|
@@ -26,6 +30,8 @@ module Musa; module Sequencer
|
|
26
30
|
|
27
31
|
reference = reference.hashify(keys: components)
|
28
32
|
step = step.hashify(keys: components)
|
33
|
+
predictive = predictive.hashify(keys:components)
|
34
|
+
stops = stops.hashify(keys:components)
|
29
35
|
right_open = right_open.hashify(keys:components)
|
30
36
|
else
|
31
37
|
size = first_value_sample[:value].size
|
@@ -33,6 +39,8 @@ module Musa; module Sequencer
|
|
33
39
|
|
34
40
|
reference = reference.arrayfy(size: size)
|
35
41
|
step = step.arrayfy(size: size)
|
42
|
+
predictive = predictive.arrayfy(size: size)
|
43
|
+
stops = stops.arrayfy(size: size)
|
36
44
|
right_open = right_open.arrayfy(size: size)
|
37
45
|
end
|
38
46
|
|
@@ -44,8 +52,9 @@ module Musa; module Sequencer
|
|
44
52
|
QUANTIZE(split[component],
|
45
53
|
reference: reference[component],
|
46
54
|
step: step[component],
|
55
|
+
predictive: predictive[component],
|
47
56
|
right_open: right_open[component],
|
48
|
-
stops:
|
57
|
+
stops: stops[component]).instance
|
49
58
|
end
|
50
59
|
|
51
60
|
last_positions = hash_mode ? {} : []
|
@@ -218,6 +218,8 @@ module Musa
|
|
218
218
|
def play_timed(timed_serie,
|
219
219
|
reference: nil,
|
220
220
|
step: nil,
|
221
|
+
predictive: nil,
|
222
|
+
stops: nil,
|
221
223
|
right_open: nil,
|
222
224
|
on_stop: nil,
|
223
225
|
after_bars: nil, after: nil,
|
@@ -238,6 +240,8 @@ module Musa
|
|
238
240
|
control,
|
239
241
|
reference: reference,
|
240
242
|
step: step,
|
243
|
+
predictive: predictive,
|
244
|
+
stops: stops,
|
241
245
|
right_open: right_open,
|
242
246
|
&block)
|
243
247
|
|
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.22.
|
4
|
-
s.date = '2020-11-
|
3
|
+
s.version = '0.22.4'
|
4
|
+
s.date = '2020-11-14'
|
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']
|
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.22.
|
4
|
+
version: 0.22.4
|
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: 2020-11-
|
11
|
+
date: 2020-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: citrus
|