smml 0.1.2.1 → 0.1.3
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/bin/smml +8 -4
- data/lib/smml/msm.rb +41 -13
- data/lib/smml/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a729ae19582944c975ae13ebf91da26892d6a45d
|
4
|
+
data.tar.gz: c0c49b883cd80909160385613ec563c86d181c74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b3a68fe184996d7995a6dd5146efdca24237e62061f432713b7ed3a602df484d662a1b37bac4dd7421b485554f9c50a7fb5b7eca0d75a07f8b35d6d32bd2b871
|
7
|
+
data.tar.gz: 9519e4fa0758a35d23ffc80a1f556b80989ad04e9b504e5dbd797dab1cbe094c4c0afd49fc24471054c9d48d72d7afe1883f088a8f1c626d7816f115ee0f6dd3
|
data/bin/smml
CHANGED
@@ -15,6 +15,7 @@ outfile=false
|
|
15
15
|
expfile=false
|
16
16
|
vfuzzy=2
|
17
17
|
autopan=true
|
18
|
+
strictmode=false
|
18
19
|
velocity=0x40
|
19
20
|
$debuglevel=1
|
20
21
|
data=""
|
@@ -45,8 +46,7 @@ opt.on('-p pspl',"page split chars") {|v| pspl=v }
|
|
45
46
|
opt.on('-F i',"fuzzy shift mode") {|v| $fuzzy=v.to_i }
|
46
47
|
opt.on('-v i',"velocity fuzzy value [default 2]") {|v| vfuzzy=v.to_i }
|
47
48
|
opt.on('-V',"dont use all fuzzy or auto feature") {|v|
|
48
|
-
|
49
|
-
autopan=false
|
49
|
+
strictmode=true
|
50
50
|
}
|
51
51
|
opt.on('-O',"octave legacy mode") {|v| octaveMode=:far }
|
52
52
|
opt.on('-I',"ignore roland check sum") {|v| $ignoreChecksum=v }
|
@@ -62,7 +62,11 @@ m.data=data
|
|
62
62
|
m.velocity=velocity
|
63
63
|
m.bpm=bpm
|
64
64
|
m.octave=octaveMode
|
65
|
-
|
66
|
-
m.
|
65
|
+
if strictmode
|
66
|
+
m.strict if strictmode
|
67
|
+
else
|
68
|
+
m.vfuzzy=vfuzzy
|
69
|
+
m.autopan=autopan
|
70
|
+
end
|
67
71
|
m.make($test,$fuzzy)
|
68
72
|
m.save if not $testonly
|
data/lib/smml/msm.rb
CHANGED
@@ -823,9 +823,11 @@ def guitarTuning
|
|
823
823
|
end
|
824
824
|
module MidiHex
|
825
825
|
# 設定のため最初に呼ばなければならない
|
826
|
-
def self.prepare bpm=120,tbase=480,vel=0x40,oct=:near,vfuzzy=2
|
826
|
+
def self.prepare bpm=120,tbase=480,vel=0x40,oct=:near,vfuzzy=2,strict=false
|
827
827
|
@ready=true
|
828
|
-
@
|
828
|
+
@strictmode=strict
|
829
|
+
@autopan= strict ? false : true
|
830
|
+
@strokefaster= strict ? 1 : 3
|
829
831
|
@startBpm=bpm
|
830
832
|
@midiname=false
|
831
833
|
@cmark="#"
|
@@ -925,6 +927,7 @@ module MidiHex
|
|
925
927
|
def self.trackPrepare tc=0
|
926
928
|
@tbase,@ch,@velocity,@velocityFuzzy,@basekey,@gateRate,@bendrange,@bendCent,@scalenotes,@gtune=@prepareSet
|
927
929
|
@strokespeed=0
|
930
|
+
@strokeUpDown=1
|
928
931
|
@preGate=[]
|
929
932
|
@preVelocity=[]
|
930
933
|
@preNote=[]
|
@@ -1198,9 +1201,9 @@ module MidiHex
|
|
1198
1201
|
def self.chord c,l=false,accent=false,sharp=0
|
1199
1202
|
r=[]
|
1200
1203
|
sspeed=@strokespeed
|
1201
|
-
|
1204
|
+
c=c.reverse if @strokeUpDown<0
|
1202
1205
|
span=c.size
|
1203
|
-
sspeed=l/span if span*sspeed>l
|
1206
|
+
sspeed=l/span/@strokefaster if span*sspeed>l/@strokefaster
|
1204
1207
|
c.each{|i|
|
1205
1208
|
r+=self.soundOn(i,@velocity,@ch,sharp)
|
1206
1209
|
@waitingtime+=sspeed
|
@@ -1210,9 +1213,13 @@ module MidiHex
|
|
1210
1213
|
c.each{|i|
|
1211
1214
|
r+=self.soundOff(i,@ch,sharp)
|
1212
1215
|
}
|
1216
|
+
self.strokeUpDownReset
|
1213
1217
|
r+=self.rest(rest) if rest>0
|
1214
1218
|
r
|
1215
1219
|
end
|
1220
|
+
def self.strokeUpDownReset
|
1221
|
+
@strokeUpDown=1
|
1222
|
+
end
|
1216
1223
|
def self.rest len=@tbase,ch=@ch
|
1217
1224
|
chx=format("%01x",ch)
|
1218
1225
|
@nowtime+=len
|
@@ -1491,7 +1498,6 @@ module MidiHex
|
|
1491
1498
|
end
|
1492
1499
|
def self.gtuning s
|
1493
1500
|
@gtune=s.split(",")
|
1494
|
-
p @gtune
|
1495
1501
|
end
|
1496
1502
|
def self.preLength v
|
1497
1503
|
@preLength=v.map{|i|
|
@@ -1575,8 +1581,16 @@ p @gtune
|
|
1575
1581
|
end
|
1576
1582
|
end
|
1577
1583
|
def self.strokeSpeed s
|
1578
|
-
s
|
1579
|
-
|
1584
|
+
case s
|
1585
|
+
when "-"
|
1586
|
+
@strokeUpDown=-1
|
1587
|
+
when "+"
|
1588
|
+
@strokeUpDown=1
|
1589
|
+
else
|
1590
|
+
s=s.to_i
|
1591
|
+
@strokeUpDown= s<0 ? -1 : 1
|
1592
|
+
@strokespeed=s.abs
|
1593
|
+
end
|
1580
1594
|
end
|
1581
1595
|
def self.setmark m
|
1582
1596
|
n=@marktrack.getcount(m,@tracknum)
|
@@ -1897,7 +1911,7 @@ p @gtune
|
|
1897
1911
|
end
|
1898
1912
|
@bpm=@bpm*rate
|
1899
1913
|
@h<<[:tempo,@bpm]
|
1900
|
-
when
|
1914
|
+
when /^([-+])([[:digit:]]+)?/
|
1901
1915
|
plus=$1
|
1902
1916
|
num=$2 ? $2.to_i : 1
|
1903
1917
|
@h<<[:call,:basekeySet,plus,num]
|
@@ -2080,7 +2094,7 @@ def multiplet d,tbase
|
|
2080
2094
|
else
|
2081
2095
|
total=tbase*rate
|
2082
2096
|
end
|
2083
|
-
r=i.scan(/=|\(\?:[^\]]+\)|\(x:[^\]]+\)|\(chord:[^)]+\)|\(C:[^)]+\)|:[^\(,]+\([^\)]+\),|:[^,]+,|[[:digit:]\.]+|_[^!]+!|~|\([-+]*[[:digit:]]?\)|[-+]+[[:digit:]]*|[\^`'<>]|./)
|
2097
|
+
r=i.scan(/=|\(\?:[^\]]+\)|\(x:[^\]]+\)|\(chord:[^)]+\)|\(C:[^)]+\)|:[^\(,]+\([^\)]+\),|:[^,]+,|[[:digit:]\.]+|_[^!]+!|~|\([-+]*[[:digit:]]?\)|[-+]+[[:digit:]]*|[\^`'<>]|\([^\)]*\)|./)
|
2084
2098
|
lengths=[]
|
2085
2099
|
notes=[]
|
2086
2100
|
mod=[]
|
@@ -2098,6 +2112,8 @@ def multiplet d,tbase
|
|
2098
2112
|
when /^[[:digit:]]+/
|
2099
2113
|
lengths[-1]*=i.to_f
|
2100
2114
|
when " "
|
2115
|
+
when /^\([^\)]*\)/
|
2116
|
+
mod<<i
|
2101
2117
|
else
|
2102
2118
|
lengths<<1
|
2103
2119
|
notes<<"#{mod*""}#{i}"
|
@@ -2269,6 +2285,7 @@ def tie d,tbase
|
|
2269
2285
|
line
|
2270
2286
|
end
|
2271
2287
|
# repeat block analysis: no relation with MIDI format
|
2288
|
+
# '(:..)' => '(lastcmd:..)'
|
2272
2289
|
def repCalc line,macro,tbase
|
2273
2290
|
rpt=/\[([^\[\]]*)\] *([[:digit:]]+)/
|
2274
2291
|
line.gsub!(rpt){$1*$2.to_i} while line=~rpt
|
@@ -2284,17 +2301,18 @@ def repCalc line,macro,tbase
|
|
2284
2301
|
r ? r : b
|
2285
2302
|
end
|
2286
2303
|
}*""
|
2287
|
-
|
2304
|
+
regex=/\/[^\/]+\/|\[|\]|\.FINE|\.DS|\.DC|\.\$|\.toCODA|\.CODA|\.SKIP|\$\{[^ \{\}]+\}|\$[^ ;\$_*^,\)\(`'\/+-]+|\([^\)]*:|\)|./
|
2305
|
+
a=line.scan(regex)
|
2288
2306
|
a=a.map{|i|
|
2289
2307
|
if i=~/^\/[^\/]+\//
|
2290
2308
|
if i=~/\$/
|
2291
2309
|
i=i.gsub(/\$\{([^ ;\$_*^,\)\(`'\/+-]+)\}/){macro[$1]}.gsub(/\$([^ ;\$_*^,\)\(`'\/+-]+)/){macro[$1]}
|
2292
2310
|
end
|
2293
|
-
multiplet(i,tbase)
|
2311
|
+
multiplet(i,tbase).scan(regex)
|
2294
2312
|
else
|
2295
2313
|
i
|
2296
2314
|
end
|
2297
|
-
}
|
2315
|
+
}.flatten
|
2298
2316
|
hs={}
|
2299
2317
|
a.each_with_index{|d,i|hs[i]=d}
|
2300
2318
|
hs=hs.invert
|
@@ -2351,6 +2369,10 @@ def repCalc line,macro,tbase
|
|
2351
2369
|
pointDS=countertmp
|
2352
2370
|
when ";"
|
2353
2371
|
current=""
|
2372
|
+
when /^\(([^\)]+):$/
|
2373
|
+
lastcmd=$1 if $1 != "C"
|
2374
|
+
when "(:"
|
2375
|
+
current="(#{lastcmd}:"
|
2354
2376
|
else
|
2355
2377
|
current
|
2356
2378
|
end
|
@@ -2426,6 +2448,12 @@ class Smml
|
|
2426
2448
|
@octave=:near
|
2427
2449
|
@vfuzzy=2
|
2428
2450
|
@autopan=true
|
2451
|
+
@strictmode=false
|
2452
|
+
end
|
2453
|
+
def strict
|
2454
|
+
@autopan=false
|
2455
|
+
@vfuzzy=0
|
2456
|
+
@strictmode=true
|
2429
2457
|
end
|
2430
2458
|
def self.syntax
|
2431
2459
|
hintminimum
|
@@ -2443,7 +2471,7 @@ class Smml
|
|
2443
2471
|
puts @mx.percussionList.select{|i|i=~/#{k}/i}
|
2444
2472
|
end
|
2445
2473
|
def init test,fz
|
2446
|
-
@mx.prepare(@bpm,@tbase,@velocity,@octave,@vfuzzy)
|
2474
|
+
@mx.prepare(@bpm,@tbase,@velocity,@octave,@vfuzzy,@strictmode)
|
2447
2475
|
@mx.setfile(@infile)
|
2448
2476
|
@mx.setmidiname(@outfile) if @outfile
|
2449
2477
|
@mx.setdata(@data) if ! @mx.getdata
|
data/lib/smml/version.rb
CHANGED