musicality 0.11.1 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. checksums.yaml +5 -5
  2. data/.coveralls.yml +1 -0
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +4 -0
  5. data/ChangeLog.md +11 -0
  6. data/README.md +3 -0
  7. data/Rakefile +11 -3
  8. data/lib/musicality/composition/model/rhythm.rb +33 -0
  9. data/lib/musicality/composition/model/rhythm_class.rb +30 -0
  10. data/lib/musicality/composition/sequencing/drum_machine/drum_kit.rb +18 -0
  11. data/lib/musicality/composition/sequencing/drum_machine/drum_machine.rb +59 -0
  12. data/lib/musicality/composition/sequencing/drum_machine/drum_parts.rb +21 -0
  13. data/lib/musicality/composition/sequencing/drum_machine/drum_pattern.rb +66 -0
  14. data/lib/musicality/composition/sequencing/drum_machine/drum_patterns/pop_drum_patterns.rb +146 -0
  15. data/lib/musicality/composition/sequencing/note_array.rb +33 -0
  16. data/lib/musicality/composition/sequencing/note_fifo.rb +73 -0
  17. data/lib/musicality/composition/sequencing/sequenceable.rb +9 -0
  18. data/lib/musicality/composition/sequencing/sequencer.rb +35 -0
  19. data/lib/musicality/errors.rb +2 -2
  20. data/lib/musicality/notation/model/dynamics.rb +2 -2
  21. data/lib/musicality/notation/model/key.rb +42 -91
  22. data/lib/musicality/notation/model/keys.rb +35 -34
  23. data/lib/musicality/notation/model/note.rb +31 -9
  24. data/lib/musicality/notation/model/pitch.rb +2 -2
  25. data/lib/musicality/notation/parsing/convenience_methods.rb +23 -12
  26. data/lib/musicality/notation/parsing/duration_parsing.rb +3 -3
  27. data/lib/musicality/notation/parsing/key_parsing.rb +150 -0
  28. data/lib/musicality/notation/parsing/key_parsing.treetop +37 -0
  29. data/lib/musicality/notation/parsing/meter_parsing.rb +3 -3
  30. data/lib/musicality/notation/parsing/numbers/nonnegative_float_parsing.rb +3 -1
  31. data/lib/musicality/notation/parsing/numbers/nonnegative_integer_parsing.rb +1 -0
  32. data/lib/musicality/notation/parsing/numbers/nonnegative_rational_parsing.rb +1 -1
  33. data/lib/musicality/notation/parsing/numbers/positive_float_parsing.rb +4 -1
  34. data/lib/musicality/notation/parsing/numbers/positive_rational_parsing.rb +1 -1
  35. data/lib/musicality/notation/parsing/parseable.rb +13 -17
  36. data/lib/musicality/notation/parsing/pitch_parsing.rb +7 -0
  37. data/lib/musicality/notation/parsing/segment_parsing.rb +3 -0
  38. data/lib/musicality/performance/conversion/note_sequence_extractor.rb +82 -134
  39. data/lib/musicality/performance/model/note_sequence.rb +22 -3
  40. data/lib/musicality/performance/supercollider/performer.rb +2 -2
  41. data/lib/musicality/performance/supercollider/sc_drum_kits.rb +29 -0
  42. data/lib/musicality/performance/supercollider/synthdefs/bass.rb +211 -0
  43. data/lib/musicality/performance/supercollider/synthdefs/claps.rb +80 -0
  44. data/lib/musicality/performance/supercollider/synthdefs/cymbals.rb +57 -0
  45. data/lib/musicality/performance/supercollider/synthdefs/hihats.rb +67 -0
  46. data/lib/musicality/performance/supercollider/synthdefs/kicks.rb +158 -0
  47. data/lib/musicality/performance/supercollider/synthdefs/mario.rb +49 -0
  48. data/lib/musicality/performance/supercollider/{synthdefs.rb → synthdefs/other.rb} +0 -767
  49. data/lib/musicality/performance/supercollider/synthdefs/pianos.rb +46 -0
  50. data/lib/musicality/performance/supercollider/synthdefs/snares.rb +169 -0
  51. data/lib/musicality/performance/supercollider/synthdefs/toms.rb +25 -0
  52. data/lib/musicality/performance/supercollider/synthdefs/volume.rb +20 -0
  53. data/lib/musicality/pitch_class.rb +1 -1
  54. data/lib/musicality/pitch_classes.rb +3 -5
  55. data/lib/musicality/version.rb +1 -1
  56. data/lib/musicality.rb +25 -1
  57. data/musicality.gemspec +3 -2
  58. data/spec/composition/convenience_methods_spec.rb +8 -8
  59. data/spec/composition/generation/random_rhythm_generator_spec.rb +5 -5
  60. data/spec/composition/model/pitch_class_spec.rb +22 -16
  61. data/spec/composition/model/pitch_classes_spec.rb +5 -5
  62. data/spec/composition/model/rhythm_class_spec.rb +42 -0
  63. data/spec/composition/model/rhythm_spec.rb +43 -0
  64. data/spec/composition/model/scale_class_spec.rb +26 -26
  65. data/spec/composition/model/scale_spec.rb +38 -38
  66. data/spec/composition/sequencing/drum_machine/drum_machine_spec.rb +67 -0
  67. data/spec/composition/sequencing/drum_machine/drum_pattern_spec.rb +58 -0
  68. data/spec/composition/sequencing/note_array_spec.rb +94 -0
  69. data/spec/composition/sequencing/note_fifo_spec.rb +183 -0
  70. data/spec/composition/sequencing/sequencer_spec.rb +76 -0
  71. data/spec/composition/util/adding_sequence_spec.rb +33 -33
  72. data/spec/composition/util/compound_sequence_spec.rb +6 -6
  73. data/spec/composition/util/note_generation_spec.rb +34 -34
  74. data/spec/composition/util/probabilities_spec.rb +7 -7
  75. data/spec/composition/util/random_sampler_spec.rb +3 -3
  76. data/spec/composition/util/repeating_sequence_spec.rb +28 -28
  77. data/spec/musicality_spec.rb +1 -1
  78. data/spec/notation/conversion/change_conversion_spec.rb +87 -87
  79. data/spec/notation/conversion/note_time_converter_spec.rb +22 -22
  80. data/spec/notation/conversion/score_conversion_spec.rb +1 -1
  81. data/spec/notation/conversion/score_converter_spec.rb +31 -31
  82. data/spec/notation/conversion/tempo_conversion_spec.rb +11 -11
  83. data/spec/notation/model/change_spec.rb +80 -80
  84. data/spec/notation/model/key_spec.rb +135 -69
  85. data/spec/notation/model/link_spec.rb +27 -27
  86. data/spec/notation/model/meter_spec.rb +28 -28
  87. data/spec/notation/model/note_spec.rb +68 -47
  88. data/spec/notation/model/part_spec.rb +19 -19
  89. data/spec/notation/model/pitch_spec.rb +69 -68
  90. data/spec/notation/model/score_spec.rb +50 -47
  91. data/spec/notation/parsing/articulation_parsing_spec.rb +4 -4
  92. data/spec/notation/parsing/convenience_methods_spec.rb +49 -10
  93. data/spec/notation/parsing/duration_nodes_spec.rb +13 -13
  94. data/spec/notation/parsing/duration_parsing_spec.rb +10 -10
  95. data/spec/notation/parsing/key_parsing_spec.rb +19 -0
  96. data/spec/notation/parsing/link_nodes_spec.rb +7 -7
  97. data/spec/notation/parsing/link_parsing_spec.rb +4 -4
  98. data/spec/notation/parsing/meter_parsing_spec.rb +5 -5
  99. data/spec/notation/parsing/note_node_spec.rb +19 -19
  100. data/spec/notation/parsing/note_parsing_spec.rb +4 -4
  101. data/spec/notation/parsing/numbers/nonnegative_float_spec.rb +8 -8
  102. data/spec/notation/parsing/numbers/nonnegative_integer_spec.rb +2 -2
  103. data/spec/notation/parsing/numbers/nonnegative_rational_spec.rb +1 -1
  104. data/spec/notation/parsing/numbers/positive_float_spec.rb +8 -8
  105. data/spec/notation/parsing/numbers/positive_integer_spec.rb +6 -6
  106. data/spec/notation/parsing/numbers/positive_rational_spec.rb +6 -6
  107. data/spec/notation/parsing/pitch_node_spec.rb +7 -7
  108. data/spec/notation/parsing/pitch_parsing_spec.rb +2 -2
  109. data/spec/notation/parsing/segment_parsing_spec.rb +3 -3
  110. data/spec/notation/util/function_spec.rb +15 -15
  111. data/spec/notation/util/transition_spec.rb +12 -12
  112. data/spec/notation/util/value_computer_spec.rb +35 -36
  113. data/spec/performance/conversion/glissando_converter_spec.rb +24 -24
  114. data/spec/performance/conversion/note_sequence_extractor_spec.rb +39 -39
  115. data/spec/performance/conversion/portamento_converter_spec.rb +23 -23
  116. data/spec/performance/midi/midi_util_spec.rb +41 -41
  117. data/spec/performance/midi/part_sequencer_spec.rb +10 -10
  118. data/spec/performance/midi/score_sequencer_spec.rb +15 -15
  119. data/spec/performance/midi/score_sequencing_spec.rb +2 -2
  120. data/spec/performance/util/optimization_spec.rb +9 -9
  121. data/spec/printing/note_engraving_spec.rb +16 -16
  122. data/spec/printing/score_engraver_spec.rb +5 -5
  123. data/spec/spec_helper.rb +5 -0
  124. metadata +85 -30
metadata CHANGED
@@ -1,125 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: musicality
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.1
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Tunnell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-19 00:00:00.000000000 Z
11
+ date: 2019-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '2.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.9'
47
+ version: '3.5'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.9'
54
+ version: '3.5'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: coveralls
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.8'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.8'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: treetop
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ~>
87
+ - - "~>"
74
88
  - !ruby/object:Gem::Version
75
89
  version: '1.5'
76
90
  type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ~>
94
+ - - "~>"
81
95
  - !ruby/object:Gem::Version
82
96
  version: '1.5'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: midilib
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ~>
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
103
  version: '2.0'
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ~>
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
110
  version: '2.0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: docopt
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - ~>
115
+ - - "~>"
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0.5'
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - ~>
122
+ - - "~>"
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0.5'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: os
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ~>
129
+ - - "~>"
116
130
  - !ruby/object:Gem::Version
117
131
  version: '0.9'
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ~>
136
+ - - "~>"
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0.9'
125
139
  description: The library is based around an abstract representation for music notation,
@@ -137,9 +151,11 @@ executables:
137
151
  extensions: []
138
152
  extra_rdoc_files: []
139
153
  files:
140
- - .gitignore
141
- - .rspec
142
- - .ruby-version
154
+ - ".coveralls.yml"
155
+ - ".gitignore"
156
+ - ".rspec"
157
+ - ".ruby-version"
158
+ - ".travis.yml"
143
159
  - ChangeLog.md
144
160
  - Gemfile
145
161
  - LICENSE.txt
@@ -165,9 +181,20 @@ files:
165
181
  - lib/musicality/composition/dsl/score_methods.rb
166
182
  - lib/musicality/composition/generation/counterpoint_generator.rb
167
183
  - lib/musicality/composition/generation/random_rhythm_generator.rb
184
+ - lib/musicality/composition/model/rhythm.rb
185
+ - lib/musicality/composition/model/rhythm_class.rb
168
186
  - lib/musicality/composition/model/scale.rb
169
187
  - lib/musicality/composition/model/scale_class.rb
170
188
  - lib/musicality/composition/model/scale_classes.rb
189
+ - lib/musicality/composition/sequencing/drum_machine/drum_kit.rb
190
+ - lib/musicality/composition/sequencing/drum_machine/drum_machine.rb
191
+ - lib/musicality/composition/sequencing/drum_machine/drum_parts.rb
192
+ - lib/musicality/composition/sequencing/drum_machine/drum_pattern.rb
193
+ - lib/musicality/composition/sequencing/drum_machine/drum_patterns/pop_drum_patterns.rb
194
+ - lib/musicality/composition/sequencing/note_array.rb
195
+ - lib/musicality/composition/sequencing/note_fifo.rb
196
+ - lib/musicality/composition/sequencing/sequenceable.rb
197
+ - lib/musicality/composition/sequencing/sequencer.rb
171
198
  - lib/musicality/composition/util/adding_sequence.rb
172
199
  - lib/musicality/composition/util/biinfinite_sequence.rb
173
200
  - lib/musicality/composition/util/compound_sequence.rb
@@ -206,6 +233,8 @@ files:
206
233
  - lib/musicality/notation/parsing/duration_nodes.rb
207
234
  - lib/musicality/notation/parsing/duration_parsing.rb
208
235
  - lib/musicality/notation/parsing/duration_parsing.treetop
236
+ - lib/musicality/notation/parsing/key_parsing.rb
237
+ - lib/musicality/notation/parsing/key_parsing.treetop
209
238
  - lib/musicality/notation/parsing/link_nodes.rb
210
239
  - lib/musicality/notation/parsing/link_parsing.rb
211
240
  - lib/musicality/notation/parsing/link_parsing.treetop
@@ -261,12 +290,23 @@ files:
261
290
  - lib/musicality/performance/supercollider/message.rb
262
291
  - lib/musicality/performance/supercollider/node.rb
263
292
  - lib/musicality/performance/supercollider/performer.rb
293
+ - lib/musicality/performance/supercollider/sc_drum_kits.rb
264
294
  - lib/musicality/performance/supercollider/score_conducting.rb
265
295
  - lib/musicality/performance/supercollider/server.rb
266
296
  - lib/musicality/performance/supercollider/synth.rb
267
297
  - lib/musicality/performance/supercollider/synthdef.rb
268
298
  - lib/musicality/performance/supercollider/synthdef_settings.rb
269
- - lib/musicality/performance/supercollider/synthdefs.rb
299
+ - lib/musicality/performance/supercollider/synthdefs/bass.rb
300
+ - lib/musicality/performance/supercollider/synthdefs/claps.rb
301
+ - lib/musicality/performance/supercollider/synthdefs/cymbals.rb
302
+ - lib/musicality/performance/supercollider/synthdefs/hihats.rb
303
+ - lib/musicality/performance/supercollider/synthdefs/kicks.rb
304
+ - lib/musicality/performance/supercollider/synthdefs/mario.rb
305
+ - lib/musicality/performance/supercollider/synthdefs/other.rb
306
+ - lib/musicality/performance/supercollider/synthdefs/pianos.rb
307
+ - lib/musicality/performance/supercollider/synthdefs/snares.rb
308
+ - lib/musicality/performance/supercollider/synthdefs/toms.rb
309
+ - lib/musicality/performance/supercollider/synthdefs/volume.rb
270
310
  - lib/musicality/performance/util/optimization.rb
271
311
  - lib/musicality/pitch_class.rb
272
312
  - lib/musicality/pitch_classes.rb
@@ -295,8 +335,15 @@ files:
295
335
  - spec/composition/generation/random_rhythm_generator_spec.rb
296
336
  - spec/composition/model/pitch_class_spec.rb
297
337
  - spec/composition/model/pitch_classes_spec.rb
338
+ - spec/composition/model/rhythm_class_spec.rb
339
+ - spec/composition/model/rhythm_spec.rb
298
340
  - spec/composition/model/scale_class_spec.rb
299
341
  - spec/composition/model/scale_spec.rb
342
+ - spec/composition/sequencing/drum_machine/drum_machine_spec.rb
343
+ - spec/composition/sequencing/drum_machine/drum_pattern_spec.rb
344
+ - spec/composition/sequencing/note_array_spec.rb
345
+ - spec/composition/sequencing/note_fifo_spec.rb
346
+ - spec/composition/sequencing/sequencer_spec.rb
300
347
  - spec/composition/util/adding_sequence_spec.rb
301
348
  - spec/composition/util/compound_sequence_spec.rb
302
349
  - spec/composition/util/note_generation_spec.rb
@@ -321,6 +368,7 @@ files:
321
368
  - spec/notation/parsing/convenience_methods_spec.rb
322
369
  - spec/notation/parsing/duration_nodes_spec.rb
323
370
  - spec/notation/parsing/duration_parsing_spec.rb
371
+ - spec/notation/parsing/key_parsing_spec.rb
324
372
  - spec/notation/parsing/link_nodes_spec.rb
325
373
  - spec/notation/parsing/link_parsing_spec.rb
326
374
  - spec/notation/parsing/meter_parsing_spec.rb
@@ -361,17 +409,16 @@ require_paths:
361
409
  - lib
362
410
  required_ruby_version: !ruby/object:Gem::Requirement
363
411
  requirements:
364
- - - '>='
412
+ - - ">="
365
413
  - !ruby/object:Gem::Version
366
414
  version: '2.0'
367
415
  required_rubygems_version: !ruby/object:Gem::Requirement
368
416
  requirements:
369
- - - '>='
417
+ - - ">="
370
418
  - !ruby/object:Gem::Version
371
419
  version: '0'
372
420
  requirements: []
373
- rubyforge_project:
374
- rubygems_version: 2.4.2
421
+ rubygems_version: 3.0.3
375
422
  signing_key:
376
423
  specification_version: 4
377
424
  summary: Music notation, composition, and performance
@@ -382,8 +429,15 @@ test_files:
382
429
  - spec/composition/generation/random_rhythm_generator_spec.rb
383
430
  - spec/composition/model/pitch_class_spec.rb
384
431
  - spec/composition/model/pitch_classes_spec.rb
432
+ - spec/composition/model/rhythm_class_spec.rb
433
+ - spec/composition/model/rhythm_spec.rb
385
434
  - spec/composition/model/scale_class_spec.rb
386
435
  - spec/composition/model/scale_spec.rb
436
+ - spec/composition/sequencing/drum_machine/drum_machine_spec.rb
437
+ - spec/composition/sequencing/drum_machine/drum_pattern_spec.rb
438
+ - spec/composition/sequencing/note_array_spec.rb
439
+ - spec/composition/sequencing/note_fifo_spec.rb
440
+ - spec/composition/sequencing/sequencer_spec.rb
387
441
  - spec/composition/util/adding_sequence_spec.rb
388
442
  - spec/composition/util/compound_sequence_spec.rb
389
443
  - spec/composition/util/note_generation_spec.rb
@@ -408,6 +462,7 @@ test_files:
408
462
  - spec/notation/parsing/convenience_methods_spec.rb
409
463
  - spec/notation/parsing/duration_nodes_spec.rb
410
464
  - spec/notation/parsing/duration_parsing_spec.rb
465
+ - spec/notation/parsing/key_parsing_spec.rb
411
466
  - spec/notation/parsing/link_nodes_spec.rb
412
467
  - spec/notation/parsing/link_parsing_spec.rb
413
468
  - spec/notation/parsing/meter_parsing_spec.rb