smml 0.1.0.4 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/smml/msm.rb +53 -19
  3. data/lib/smml/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5502e954b9a84c81d1589125b9c6bff866c7a47c
4
- data.tar.gz: 7a54373e442e7d92e5200fd699bd99cbddff5118
3
+ metadata.gz: 17054e465ae5c0f404fa3670cd8baed2c8084ad0
4
+ data.tar.gz: 5f256889f73d29076c707924367ba4ead7a51a07
5
5
  SHA512:
6
- metadata.gz: 3724df4add3c3d66ac9cc733149a5762bf8e899d0bf28e673d4d01b066b529d72ed612f77cca459612ea5ee06df9bd2d3669f0668fcc2f3320ac318108624117
7
- data.tar.gz: f65ca001292854935dfd31c15d73d5556d7e4fee703026a864d62760c4fea85b5746b44434239caa49964f0e189fee9e484ec0f18ba648431615cb620a4cf514
6
+ metadata.gz: b6aa7ea713b36761c92e9d931f7414f045a136b601015038f56ff86eda259211e34d83a2fd7a3523f72cfdb78f4b21c686e800acc143c2f08d122821bae8c051
7
+ data.tar.gz: a7f56ee6a605dd5033dde9404342bed36f5a97ca4b68ba6a108610b1f463dfa3eaf538bbbe7ad6f43275fe91d65c1a88bc6c9109e5b574748b6991f29843b01e
data/lib/smml/msm.rb CHANGED
@@ -198,6 +198,47 @@ class Array
198
198
  r
199
199
  end
200
200
  end
201
+ class Notes < Hash
202
+ @@rythmChannel=9
203
+ @@n={
204
+ "c"=>0,
205
+ "C"=>1,
206
+ "d"=>2,
207
+ "D"=>3,
208
+ "e"=>4,
209
+ "f"=>5,
210
+ "F"=>6,
211
+ "g"=>7,
212
+ "G"=>8,
213
+ "a"=>9,
214
+ "A"=>10,
215
+ "b"=>11,
216
+ "t"=>[0,@@rythmChannel],
217
+ "s"=>[3,@@rythmChannel],
218
+ "u"=>[6,@@rythmChannel]
219
+ }
220
+ @@invert=@@n.invert
221
+ @@octave=12
222
+ def initialize
223
+ @@n.each{|k,v|self[k]=v}
224
+ end
225
+ def self.get last,n=0
226
+ last=~/(\-*)(\+*)([[:alpha:]])/
227
+ oct=$1.size*(-1)+$2.size
228
+ last=$3
229
+ lastnote=@@n[last]+oct*@@octave
230
+ num=lastnote+n.to_i
231
+ octave= num / @@octave
232
+ pre=if octave>0
233
+ "+"*octave
234
+ elsif octave<0
235
+ "-"*(octave*-1)
236
+ else
237
+ ""
238
+ end
239
+ pre+@@invert[num%@@octave]
240
+ end
241
+ end
201
242
  class ScaleNotes < Array
202
243
  def setSampleRate c
203
244
  @samplerate=c
@@ -213,6 +254,9 @@ class ScaleNotes < Array
213
254
  self.sample
214
255
  end
215
256
  end
257
+ def reset
258
+ initialize
259
+ end
216
260
  end
217
261
  def unirand n,c,reset=false
218
262
  a=[0,n]
@@ -741,23 +785,7 @@ module MidiHex
741
785
  @onlist=[]
742
786
  @waitingtime=0
743
787
  @rythmChannel=9
744
- @notes={
745
- "c"=>0,
746
- "C"=>1,
747
- "d"=>2,
748
- "D"=>3,
749
- "e"=>4,
750
- "f"=>5,
751
- "F"=>6,
752
- "g"=>7,
753
- "G"=>8,
754
- "a"=>9,
755
- "A"=>10,
756
- "b"=>11,
757
- "t"=>[0,@rythmChannel],
758
- "s"=>[3,@rythmChannel],
759
- "u"=>[6,@rythmChannel]
760
- }
788
+ @notes=Notes.new
761
789
  @ch=0
762
790
  @velocity=vel
763
791
  @velocityOrg=vel
@@ -1160,7 +1188,7 @@ module MidiHex
1160
1188
  end
1161
1189
  def self.generaterText
1162
1190
  file=__FILE__
1163
- thisVer=File.mtime(file).strftime("%Y-%m-%d")
1191
+ thisVer="v#{Smml::VERSION}"
1164
1192
  thisVer="" if $debuglevel && $debuglevel>1
1165
1193
  pos=@tbase
1166
1194
  self.metaText("generated by midi-simple-make.rb (#{thisVer})",pos)
@@ -1384,11 +1412,17 @@ module MidiHex
1384
1412
  @chordCenter=[[0,@chordCenter].max,0x7f].min
1385
1413
  @firstchordbase=@chordCenter
1386
1414
  end
1415
+ # todo: use scale name
1387
1416
  def self.scale s
1417
+ @scalenotes.reset
1388
1418
  s=s.split(",")
1419
+ first=s.first
1389
1420
  s.each{|i|
1390
- @scalenotes<<i
1421
+ note=i
1422
+ note=Notes.get(first,i) if i=~/^[-+]+[[:digit:]]+$/
1423
+ @scalenotes<<note
1391
1424
  }
1425
+ p @scalenotes if $DEBUG
1392
1426
  end
1393
1427
  def self.preLength v
1394
1428
  @preLength=v.map{|i|
data/lib/smml/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Smml
2
- VERSION = "0.1.0.4"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.4
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - tabasano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-23 00:00:00.000000000 Z
11
+ date: 2014-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler