musicality 0.5.0 → 0.5.1
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.
- checksums.yaml +4 -4
- data/ChangeLog.md +14 -5
- data/README.md +30 -2
- data/lib/musicality/performance/midi/score_sequencing.rb +1 -1
- data/lib/musicality/version.rb +1 -1
- data/spec/performance/midi/score_sequencing_spec.rb +45 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b88f653838ad19299cc067b8b849a521cf7ca95
|
4
|
+
data.tar.gz: 1be51ce70f8a1c873ef95cd7887d63db02f50ccf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4c6cc3c5383cf641734519e7bdb32969426252914d74f80649bf2d01fdc697dda211d73b31040550918688eb998a033c634b5b5413737a653780948fc1f396e
|
7
|
+
data.tar.gz: 7b5be121f5efa1881a309dbcda6209718428ee2ab8ebf73593d3345724b18b9d1983e3c0af40161e752f8aa988343129c49d24a414880b661ba4c076ec5ca702
|
data/ChangeLog.md
CHANGED
@@ -1,8 +1,17 @@
|
|
1
|
-
### 0.
|
2
|
-
*
|
3
|
-
*
|
4
|
-
|
5
|
-
|
1
|
+
### 0.5.0 / 2015-04-27
|
2
|
+
* Alter note syntax
|
3
|
+
* shift articulation placement to after pitches
|
4
|
+
* disallow articulation and accent when pitches aren't present
|
5
|
+
* do not provide syntax for targeted slur and legato links
|
6
|
+
* Add *basic* support for Lilypond engraving (sheet music printing)
|
7
|
+
* Add `#to_midi_seq` convenience method to `Timed` and `TempoBased` scores.
|
8
|
+
* Add some rudimentary composition features
|
9
|
+
* `ScaleClass` class: contains a series of increasing pitch intervals. Can be realized as a scale given a starting pitch class.
|
10
|
+
* `Scale` class: contains a starting pitch class, and a series of pitch intervals. Can be realized as a series of pitches given a starting octave.
|
11
|
+
* Biinfinite sequence generators for adding and repeating
|
12
|
+
* Random rhythm generator
|
13
|
+
* Counterpoint generator
|
14
|
+
* Instead of `Program` class, use plain array for Score program
|
6
15
|
* Add (optional) argument to Score::Measured#measures_long, to convert a specific note duration to measure duration. If not specified, the note duration of the longest part is used (as before).
|
7
16
|
|
8
17
|
### 0.3.0 / 2014-12-01
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
$ gem install musicality
|
20
20
|
|
21
|
-
## Usage
|
21
|
+
## Basic Usage
|
22
22
|
|
23
23
|
Raw notation objects can be created like this:
|
24
24
|
```ruby
|
@@ -35,9 +35,37 @@ part = Part.new(MP, notes:[single,rest,chord])
|
|
35
35
|
|
36
36
|
Or, a compact, string representation can be used, instead.
|
37
37
|
```ruby
|
38
|
-
Part.new(FF, "/4Ab4 /4 1C3,E3,G3".to_notes)
|
38
|
+
Part.new(FF, notes: "/4Ab4 /4 1C3,E3,G3".to_notes)
|
39
39
|
```
|
40
40
|
|
41
|
+
Parts can be put together to make a whole musical score. The block syntax can be used for embedding parts in the score.
|
42
|
+
```ruby
|
43
|
+
require 'musicality'
|
44
|
+
include Musicality
|
45
|
+
include Meters
|
46
|
+
include Dynamics
|
47
|
+
|
48
|
+
twinkle = Score::Measured.new(TWO_FOUR, 120) do |s|
|
49
|
+
s.parts["rhand"] = Part.new(MF) do |p|
|
50
|
+
p.notes += ("/4C4 "*2 + "/4G4 "*2 +
|
51
|
+
"/4A4 "*2 + "/2G4").to_notes
|
52
|
+
end
|
53
|
+
s.parts["lhand"] = Part.new(MF) do |p|
|
54
|
+
p.notes += ("/2C3,E3,G3 "*2 +
|
55
|
+
"/2F2,A2,C3 /2C3,E3,G3").to_notes
|
56
|
+
end
|
57
|
+
s.program.push 0...4
|
58
|
+
end
|
59
|
+
```
|
60
|
+
|
61
|
+
To continue the above example, a score can be prepare for MIDI playback using the `Score::Measured#to_midi_seq` method.
|
62
|
+
```ruby
|
63
|
+
TEMPO_SAMPLE_RATE = 500
|
64
|
+
seq = twinkle.to_midi_seq TEMPO_SAMPLE_RATE
|
65
|
+
File.open('twinkle.mid', 'wb'){ |fout| seq.write(fout) }
|
66
|
+
```
|
67
|
+
##
|
68
|
+
|
41
69
|
## Contributing
|
42
70
|
|
43
71
|
1. Fork it ( https://github.com/[my-github-username]/musicality/fork )
|
data/lib/musicality/version.rb
CHANGED
@@ -0,0 +1,45 @@
|
|
1
|
+
describe Score::Timed do
|
2
|
+
before :all do
|
3
|
+
@score = Score::Timed.new do |s|
|
4
|
+
s.parts["rhand"] = Part.new(Dynamics::MF) do |p|
|
5
|
+
p.notes += ("/2C4 "*2 + "/2G4 "*2 +
|
6
|
+
"/2A4 "*2 + "1G4").to_notes
|
7
|
+
end
|
8
|
+
s.parts["lhand"] = Part.new(Dynamics::MF) do |p|
|
9
|
+
p.notes += ("1C3,E3,G3 "*2 +
|
10
|
+
"1F2,A2,C3 1C3,E3,G3").to_notes
|
11
|
+
end
|
12
|
+
s.program.push 0...8
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#to_midi_seq' do
|
17
|
+
it 'should produce a MIDI::Sequence' do
|
18
|
+
seq = @score.to_midi_seq
|
19
|
+
seq.should be_a MIDI::Sequence
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe Score::TempoBased do
|
25
|
+
before :all do
|
26
|
+
@score = Score::Measured.new(TWO_FOUR, 120) do |s|
|
27
|
+
s.parts["rhand"] = Part.new(Dynamics::MF) do |p|
|
28
|
+
p.notes += ("/4C4 "*2 + "/4G4 "*2 +
|
29
|
+
"/4A4 "*2 + "/2G4").to_notes
|
30
|
+
end
|
31
|
+
s.parts["lhand"] = Part.new(Dynamics::MF) do |p|
|
32
|
+
p.notes += ("/2C3,E3,G3 "*2 +
|
33
|
+
"/2F2,A2,C3 /2C3,E3,G3").to_notes
|
34
|
+
end
|
35
|
+
s.program.push 0...4
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#to_midi_seq' do
|
40
|
+
it 'should produce a MIDI::Sequence' do
|
41
|
+
seq = @score.to_midi_seq 200
|
42
|
+
seq.should be_a MIDI::Sequence
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: musicality
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Tunnell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -291,6 +291,7 @@ files:
|
|
291
291
|
- spec/performance/midi/midi_util_spec.rb
|
292
292
|
- spec/performance/midi/part_sequencer_spec.rb
|
293
293
|
- spec/performance/midi/score_sequencer_spec.rb
|
294
|
+
- spec/performance/midi/score_sequencing_spec.rb
|
294
295
|
- spec/performance/model/note_sequence_spec.rb
|
295
296
|
- spec/performance/util/note_linker_spec.rb
|
296
297
|
- spec/performance/util/optimization_spec.rb
|
@@ -377,6 +378,7 @@ test_files:
|
|
377
378
|
- spec/performance/midi/midi_util_spec.rb
|
378
379
|
- spec/performance/midi/part_sequencer_spec.rb
|
379
380
|
- spec/performance/midi/score_sequencer_spec.rb
|
381
|
+
- spec/performance/midi/score_sequencing_spec.rb
|
380
382
|
- spec/performance/model/note_sequence_spec.rb
|
381
383
|
- spec/performance/util/note_linker_spec.rb
|
382
384
|
- spec/performance/util/optimization_spec.rb
|