musa-dsl 0.40.0 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/Gemfile +0 -1
  4. data/docs/subsystems/music.md +326 -15
  5. data/lib/musa-dsl/generative/darwin.rb +36 -1
  6. data/lib/musa-dsl/generative/generative-grammar.rb +28 -0
  7. data/lib/musa-dsl/generative/markov.rb +2 -0
  8. data/lib/musa-dsl/generative/rules.rb +54 -0
  9. data/lib/musa-dsl/generative/variatio.rb +69 -0
  10. data/lib/musa-dsl/midi/midi-recorder.rb +4 -0
  11. data/lib/musa-dsl/midi/midi-voices.rb +10 -0
  12. data/lib/musa-dsl/music/chords.rb +54 -9
  13. data/lib/musa-dsl/music/equally-tempered-12-tone-scale-system.rb +70 -521
  14. data/lib/musa-dsl/music/scale_kinds/bebop/bebop_dominant_scale_kind.rb +110 -0
  15. data/lib/musa-dsl/music/scale_kinds/bebop/bebop_major_scale_kind.rb +110 -0
  16. data/lib/musa-dsl/music/scale_kinds/bebop/bebop_minor_scale_kind.rb +110 -0
  17. data/lib/musa-dsl/music/scale_kinds/blues/blues_major_scale_kind.rb +100 -0
  18. data/lib/musa-dsl/music/scale_kinds/blues/blues_scale_kind.rb +99 -0
  19. data/lib/musa-dsl/music/scale_kinds/chromatic_scale_kind.rb +79 -0
  20. data/lib/musa-dsl/music/scale_kinds/ethnic/double_harmonic_scale_kind.rb +102 -0
  21. data/lib/musa-dsl/music/scale_kinds/ethnic/hungarian_minor_scale_kind.rb +102 -0
  22. data/lib/musa-dsl/music/scale_kinds/ethnic/neapolitan_major_scale_kind.rb +102 -0
  23. data/lib/musa-dsl/music/scale_kinds/ethnic/neapolitan_minor_scale_kind.rb +101 -0
  24. data/lib/musa-dsl/music/scale_kinds/ethnic/phrygian_dominant_scale_kind.rb +103 -0
  25. data/lib/musa-dsl/music/scale_kinds/harmonic_major/harmonic_major_scale_kind.rb +104 -0
  26. data/lib/musa-dsl/music/scale_kinds/major_scale_kind.rb +110 -0
  27. data/lib/musa-dsl/music/scale_kinds/melodic_minor/altered_scale_kind.rb +106 -0
  28. data/lib/musa-dsl/music/scale_kinds/melodic_minor/dorian_b2_scale_kind.rb +104 -0
  29. data/lib/musa-dsl/music/scale_kinds/melodic_minor/locrian_sharp2_scale_kind.rb +103 -0
  30. data/lib/musa-dsl/music/scale_kinds/melodic_minor/lydian_augmented_scale_kind.rb +103 -0
  31. data/lib/musa-dsl/music/scale_kinds/melodic_minor/lydian_dominant_scale_kind.rb +106 -0
  32. data/lib/musa-dsl/music/scale_kinds/melodic_minor/melodic_minor_scale_kind.rb +104 -0
  33. data/lib/musa-dsl/music/scale_kinds/melodic_minor/mixolydian_b6_scale_kind.rb +103 -0
  34. data/lib/musa-dsl/music/scale_kinds/minor_harmonic_scale_kind.rb +125 -0
  35. data/lib/musa-dsl/music/scale_kinds/minor_natural_scale_kind.rb +123 -0
  36. data/lib/musa-dsl/music/scale_kinds/modes/dorian_scale_kind.rb +111 -0
  37. data/lib/musa-dsl/music/scale_kinds/modes/locrian_scale_kind.rb +114 -0
  38. data/lib/musa-dsl/music/scale_kinds/modes/lydian_scale_kind.rb +111 -0
  39. data/lib/musa-dsl/music/scale_kinds/modes/mixolydian_scale_kind.rb +111 -0
  40. data/lib/musa-dsl/music/scale_kinds/modes/phrygian_scale_kind.rb +111 -0
  41. data/lib/musa-dsl/music/scale_kinds/pentatonic/pentatonic_major_scale_kind.rb +93 -0
  42. data/lib/musa-dsl/music/scale_kinds/pentatonic/pentatonic_minor_scale_kind.rb +99 -0
  43. data/lib/musa-dsl/music/scale_kinds/symmetric/diminished_hw_scale_kind.rb +110 -0
  44. data/lib/musa-dsl/music/scale_kinds/symmetric/diminished_wh_scale_kind.rb +110 -0
  45. data/lib/musa-dsl/music/scale_kinds/symmetric/whole_tone_scale_kind.rb +99 -0
  46. data/lib/musa-dsl/music/scale_systems/equally_tempered_12_tone_scale_system.rb +80 -0
  47. data/lib/musa-dsl/music/scale_systems/twelve_semitones_scale_system.rb +60 -0
  48. data/lib/musa-dsl/music/scales.rb +427 -0
  49. data/lib/musa-dsl/series/buffer-serie.rb +6 -0
  50. data/lib/musa-dsl/series/hash-or-array-serie-splitter.rb +23 -0
  51. data/lib/musa-dsl/series/quantizer-serie.rb +12 -0
  52. data/lib/musa-dsl/series/queue-serie.rb +13 -0
  53. data/lib/musa-dsl/version.rb +2 -1
  54. data/musa-dsl.gemspec +20 -15
  55. metadata +85 -22
data/musa-dsl.gemspec CHANGED
@@ -3,38 +3,43 @@ require_relative 'lib/musa-dsl/version'
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'musa-dsl'
5
5
  s.version = Musa::VERSION
6
- s.date = '2025-08-23'
7
6
  s.summary = 'A simple Ruby DSL for making complex music'
8
7
  s.description = 'Musa-DSL: A Ruby framework and DSL for algorithmic sound and musical thinking and composition'
9
8
  s.authors = ['Javier Sánchez Yeste']
10
9
  s.email = 'javier.sy@gmail.com'
11
10
  s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|samples|\.github)/}) }
12
- s.homepage = 'https://github.com/javier-sy/musa-dsl'
11
+ s.homepage = 'https://musadsl.yeste.studio'
13
12
  s.license = 'LGPL-3.0-or-later'
14
13
 
15
14
  s.required_ruby_version = '>= 3.4.7'
16
15
 
17
16
  s.metadata = {
18
17
  'homepage_uri' => s.homepage,
19
- 'source_code_uri' => s.homepage,
20
- 'documentation_uri' => 'https://www.rubydoc.info/gems/musa-dsl'
18
+ 'source_code_uri' => 'https://github.com/javier-sy/musa-dsl',
19
+ 'documentation_uri' => 'https://www.rubydoc.info/gems/musa-dsl',
20
+ 'rubygems_mfa_required' => 'true'
21
21
  }
22
22
 
23
- s.add_runtime_dependency 'prime', '~> 0.1'
24
- s.add_runtime_dependency 'matrix', '~> 0.4'
25
- s.add_runtime_dependency 'sorted_set', '~> 1.0'
26
-
27
- s.add_runtime_dependency 'logger', '~> 1.4', '>= 1.4.3'
23
+ s.add_dependency 'matrix', '~> 0.4'
24
+ s.add_dependency 'prime', '~> 0.1'
25
+ s.add_dependency 'sorted_set', '~> 1.0'
28
26
 
29
- s.add_runtime_dependency 'citrus', '~> 3.0'
27
+ s.add_dependency 'logger', '~> 1.4', '>= 1.4.3'
30
28
 
31
- s.add_runtime_dependency 'midi-events', '~> 0.7'
32
- s.add_runtime_dependency 'midi-parser', '~> 0.5'
29
+ s.add_dependency 'citrus', '~> 3.0'
30
+
31
+ s.add_dependency 'midi-events', '~> 0.7'
32
+ s.add_dependency 'midi-parser', '~> 0.5'
33
33
 
34
34
  s.add_development_dependency 'descriptive-statistics', '~> 2.2'
35
- s.add_development_dependency 'rspec', '~> 3'
36
- s.add_development_dependency 'yard', '~> 0.9'
35
+ s.add_development_dependency 'rack', '~> 2.2'
37
36
  s.add_development_dependency 'redcarpet', '~> 3.6'
37
+ s.add_development_dependency 'rspec', '~> 3'
38
38
  s.add_development_dependency 'webrick', '~> 1.8'
39
- s.add_development_dependency 'rack', '~> 2.2'
39
+ s.add_development_dependency 'yard', '~> 0.9'
40
+
41
+ s.add_development_dependency 'debug', '~> 1'
42
+ s.add_development_dependency 'rubocop', '~> 1'
43
+ # s.add_development_dependency 'ruby-lsp'
44
+ # s.add_development_dependency 'steep'
40
45
  end
metadata CHANGED
@@ -1,42 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: musa-dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.40.0
4
+ version: 0.41.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Sánchez Yeste
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-08-23 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: prime
13
+ name: matrix
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0.1'
18
+ version: '0.4'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '0.1'
25
+ version: '0.4'
26
26
  - !ruby/object:Gem::Dependency
27
- name: matrix
27
+ name: prime
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '0.4'
32
+ version: '0.1'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.4'
39
+ version: '0.1'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: sorted_set
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -128,47 +128,47 @@ dependencies:
128
128
  - !ruby/object:Gem::Version
129
129
  version: '2.2'
130
130
  - !ruby/object:Gem::Dependency
131
- name: rspec
131
+ name: rack
132
132
  requirement: !ruby/object:Gem::Requirement
133
133
  requirements:
134
134
  - - "~>"
135
135
  - !ruby/object:Gem::Version
136
- version: '3'
136
+ version: '2.2'
137
137
  type: :development
138
138
  prerelease: false
139
139
  version_requirements: !ruby/object:Gem::Requirement
140
140
  requirements:
141
141
  - - "~>"
142
142
  - !ruby/object:Gem::Version
143
- version: '3'
143
+ version: '2.2'
144
144
  - !ruby/object:Gem::Dependency
145
- name: yard
145
+ name: redcarpet
146
146
  requirement: !ruby/object:Gem::Requirement
147
147
  requirements:
148
148
  - - "~>"
149
149
  - !ruby/object:Gem::Version
150
- version: '0.9'
150
+ version: '3.6'
151
151
  type: :development
152
152
  prerelease: false
153
153
  version_requirements: !ruby/object:Gem::Requirement
154
154
  requirements:
155
155
  - - "~>"
156
156
  - !ruby/object:Gem::Version
157
- version: '0.9'
157
+ version: '3.6'
158
158
  - !ruby/object:Gem::Dependency
159
- name: redcarpet
159
+ name: rspec
160
160
  requirement: !ruby/object:Gem::Requirement
161
161
  requirements:
162
162
  - - "~>"
163
163
  - !ruby/object:Gem::Version
164
- version: '3.6'
164
+ version: '3'
165
165
  type: :development
166
166
  prerelease: false
167
167
  version_requirements: !ruby/object:Gem::Requirement
168
168
  requirements:
169
169
  - - "~>"
170
170
  - !ruby/object:Gem::Version
171
- version: '3.6'
171
+ version: '3'
172
172
  - !ruby/object:Gem::Dependency
173
173
  name: webrick
174
174
  requirement: !ruby/object:Gem::Requirement
@@ -184,19 +184,47 @@ dependencies:
184
184
  - !ruby/object:Gem::Version
185
185
  version: '1.8'
186
186
  - !ruby/object:Gem::Dependency
187
- name: rack
187
+ name: yard
188
188
  requirement: !ruby/object:Gem::Requirement
189
189
  requirements:
190
190
  - - "~>"
191
191
  - !ruby/object:Gem::Version
192
- version: '2.2'
192
+ version: '0.9'
193
193
  type: :development
194
194
  prerelease: false
195
195
  version_requirements: !ruby/object:Gem::Requirement
196
196
  requirements:
197
197
  - - "~>"
198
198
  - !ruby/object:Gem::Version
199
- version: '2.2'
199
+ version: '0.9'
200
+ - !ruby/object:Gem::Dependency
201
+ name: debug
202
+ requirement: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: '1'
207
+ type: :development
208
+ prerelease: false
209
+ version_requirements: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '1'
214
+ - !ruby/object:Gem::Dependency
215
+ name: rubocop
216
+ requirement: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: '1'
221
+ type: :development
222
+ prerelease: false
223
+ version_requirements: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '1'
200
228
  description: 'Musa-DSL: A Ruby framework and DSL for algorithmic sound and musical
201
229
  thinking and composition'
202
230
  email: javier.sy@gmail.com
@@ -276,6 +304,40 @@ files:
276
304
  - lib/musa-dsl/music/chord-definitions.rb
277
305
  - lib/musa-dsl/music/chords.rb
278
306
  - lib/musa-dsl/music/equally-tempered-12-tone-scale-system.rb
307
+ - lib/musa-dsl/music/scale_kinds/bebop/bebop_dominant_scale_kind.rb
308
+ - lib/musa-dsl/music/scale_kinds/bebop/bebop_major_scale_kind.rb
309
+ - lib/musa-dsl/music/scale_kinds/bebop/bebop_minor_scale_kind.rb
310
+ - lib/musa-dsl/music/scale_kinds/blues/blues_major_scale_kind.rb
311
+ - lib/musa-dsl/music/scale_kinds/blues/blues_scale_kind.rb
312
+ - lib/musa-dsl/music/scale_kinds/chromatic_scale_kind.rb
313
+ - lib/musa-dsl/music/scale_kinds/ethnic/double_harmonic_scale_kind.rb
314
+ - lib/musa-dsl/music/scale_kinds/ethnic/hungarian_minor_scale_kind.rb
315
+ - lib/musa-dsl/music/scale_kinds/ethnic/neapolitan_major_scale_kind.rb
316
+ - lib/musa-dsl/music/scale_kinds/ethnic/neapolitan_minor_scale_kind.rb
317
+ - lib/musa-dsl/music/scale_kinds/ethnic/phrygian_dominant_scale_kind.rb
318
+ - lib/musa-dsl/music/scale_kinds/harmonic_major/harmonic_major_scale_kind.rb
319
+ - lib/musa-dsl/music/scale_kinds/major_scale_kind.rb
320
+ - lib/musa-dsl/music/scale_kinds/melodic_minor/altered_scale_kind.rb
321
+ - lib/musa-dsl/music/scale_kinds/melodic_minor/dorian_b2_scale_kind.rb
322
+ - lib/musa-dsl/music/scale_kinds/melodic_minor/locrian_sharp2_scale_kind.rb
323
+ - lib/musa-dsl/music/scale_kinds/melodic_minor/lydian_augmented_scale_kind.rb
324
+ - lib/musa-dsl/music/scale_kinds/melodic_minor/lydian_dominant_scale_kind.rb
325
+ - lib/musa-dsl/music/scale_kinds/melodic_minor/melodic_minor_scale_kind.rb
326
+ - lib/musa-dsl/music/scale_kinds/melodic_minor/mixolydian_b6_scale_kind.rb
327
+ - lib/musa-dsl/music/scale_kinds/minor_harmonic_scale_kind.rb
328
+ - lib/musa-dsl/music/scale_kinds/minor_natural_scale_kind.rb
329
+ - lib/musa-dsl/music/scale_kinds/modes/dorian_scale_kind.rb
330
+ - lib/musa-dsl/music/scale_kinds/modes/locrian_scale_kind.rb
331
+ - lib/musa-dsl/music/scale_kinds/modes/lydian_scale_kind.rb
332
+ - lib/musa-dsl/music/scale_kinds/modes/mixolydian_scale_kind.rb
333
+ - lib/musa-dsl/music/scale_kinds/modes/phrygian_scale_kind.rb
334
+ - lib/musa-dsl/music/scale_kinds/pentatonic/pentatonic_major_scale_kind.rb
335
+ - lib/musa-dsl/music/scale_kinds/pentatonic/pentatonic_minor_scale_kind.rb
336
+ - lib/musa-dsl/music/scale_kinds/symmetric/diminished_hw_scale_kind.rb
337
+ - lib/musa-dsl/music/scale_kinds/symmetric/diminished_wh_scale_kind.rb
338
+ - lib/musa-dsl/music/scale_kinds/symmetric/whole_tone_scale_kind.rb
339
+ - lib/musa-dsl/music/scale_systems/equally_tempered_12_tone_scale_system.rb
340
+ - lib/musa-dsl/music/scale_systems/twelve_semitones_scale_system.rb
279
341
  - lib/musa-dsl/music/scales.rb
280
342
  - lib/musa-dsl/musicxml.rb
281
343
  - lib/musa-dsl/musicxml/builder/attributes.rb
@@ -350,13 +412,14 @@ files:
350
412
  - lib/musa-dsl/transport/transport.rb
351
413
  - lib/musa-dsl/version.rb
352
414
  - musa-dsl.gemspec
353
- homepage: https://github.com/javier-sy/musa-dsl
415
+ homepage: https://musadsl.yeste.studio
354
416
  licenses:
355
417
  - LGPL-3.0-or-later
356
418
  metadata:
357
- homepage_uri: https://github.com/javier-sy/musa-dsl
419
+ homepage_uri: https://musadsl.yeste.studio
358
420
  source_code_uri: https://github.com/javier-sy/musa-dsl
359
421
  documentation_uri: https://www.rubydoc.info/gems/musa-dsl
422
+ rubygems_mfa_required: 'true'
360
423
  rdoc_options: []
361
424
  require_paths:
362
425
  - lib