smml 0.1.8 → 0.1.8.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e2a5f8a92f538689c4376fde815e064a7d4887ec
4
- data.tar.gz: cb84d1b91997d306b5de5bbdb4033c3a01e0a1ca
3
+ metadata.gz: 21c1875b3d3c6af5a1ab009c3061b3b414fc38a7
4
+ data.tar.gz: 81e2af2f63f365d8e8023cce052b5568055a6eb2
5
5
  SHA512:
6
- metadata.gz: d31c883cdba860e6dc39175eccad5d8ce55cfe95c31fba806042473ae9e5dff29bf3506f8b6c762c62d75fba36b6cfa20b56c257700e03b11fe4fe36d711fd95
7
- data.tar.gz: 14dff95b8b0cdf6c81eedb3fa284cb16c9e0d9ed7250022b0eb0928e4c626f68849e1c6614c27896197e4a5825ce6856e8806b87adbe4b2f3e66df2d578ad589
6
+ metadata.gz: 05da008c658c956c680682349dc51ea61e82947d20d9f5ba9dff6e6c332adef2829ce81e27392bdd00be622e8bda06c7f16ceb38454200c409eb1ac81949223f
7
+ data.tar.gz: ba55e9d66319fb206069149b90b2b436714ddaaaf0b12318049531e3b4ff5fa4dd1f1fd548ef60aa87bd85b6bd55cf6c8461387d87fee8f63bd7931191234ae3
data/lib/smml/msm.rb CHANGED
@@ -1059,14 +1059,16 @@ module MidiHex
1059
1059
  @basekey=0x3C
1060
1060
  @chordCenter=@chordCenterOrg=@basekey
1061
1061
  @basekeyRythm=@basekeyOrg=@basekey
1062
+ @bendCentOn=false
1062
1063
  @bendrange=2
1063
- @bendCent=1
1064
+ @bendNow=0
1065
+ self.bendCentReset
1064
1066
  @pancenter=64
1065
1067
  @scalenotes=ScaleNotes.new.reset
1066
1068
  @gtune=guitarTuning
1067
1069
  self.setDefault
1068
1070
  @chmax=15
1069
- @bendrangemax=127
1071
+ @bendrangemax=24
1070
1072
  file="midi-programChange-list.txt"
1071
1073
  pfile="midi-percussion-map.txt"
1072
1074
  base=File.dirname(__FILE__)
@@ -1076,13 +1078,16 @@ module MidiHex
1076
1078
  self.loadPercussionMap(pfile)
1077
1079
  self.dumpstatus if $DEBUG && $debuglevel>3
1078
1080
  end
1081
+ def setBendRangeMax v
1082
+ @bendrangemax=v
1083
+ end
1079
1084
  def self.setDefault
1080
1085
  @prepareSet=[
1081
- @tbase,@ch,@velocity,@expression,@velocityFuzzy,@basekey,@gateRate,@bendrange,@bendCent,@scalenotes,@gtune,@expressionRest,@expressionDef
1086
+ @tbase,@ch,@velocity,@expression,@velocityFuzzy,@basekey,@gateRate,@bendCentOn,@bendrange,@bendCent,@bendNow,@scalenotes,@gtune,@expressionRest,@expressionDef
1082
1087
  ]
1083
1088
  end
1084
1089
  def self.getDefault
1085
- @tbase,@ch,@velocity,@expression,@velocityFuzzy,@basekey,@gateRate,@bendrange,@bendCent,@scalenotes,@gtune,@expressionRest,@expressionDef=
1090
+ @tbase,@ch,@velocity,@expression,@velocityFuzzy,@basekey,@gateRate,@bendCentOn,@bendrange,@bendCent,@bendNow,@scalenotes,@gtune,@expressionRest,@expressionDef=
1086
1091
  @prepareSet
1087
1092
  end
1088
1093
  def self.dumpstatus
@@ -1135,15 +1140,20 @@ module MidiHex
1135
1140
  @bendrange=v.to_i
1136
1141
  end
1137
1142
  @bendrange=[[@bendrange,@bendrangemax].min,0].max
1143
+ self.bendCentReset
1138
1144
  r=[]
1139
1145
  r<<self.controlChange("101,0")
1140
1146
  r<<self.controlChange("100,0")
1141
1147
  r<<self.controlChange("6,#{@bendrange}")
1142
1148
  r
1143
1149
  end
1150
+ def self.bendCentReset
1151
+ cent= @bendCentOn ? 100.0 : 1
1152
+ @bendCent=@bendHalfMax/@bendrange/cent
1153
+ end
1144
1154
  def self.bendCent on
1145
- @bendCent=1
1146
- @bendCent=@bendHalfMax/@bendrange/100.0 if on
1155
+ @bendCentOn=on
1156
+ self.bendCentReset
1147
1157
  @lastbend=0
1148
1158
  end
1149
1159
  def self.trackPrepare tc=0
@@ -1235,11 +1245,13 @@ module MidiHex
1235
1245
  @waitingtime=0
1236
1246
  pos-=start
1237
1247
  depth=(key-@thereminNote)*100
1248
+ depth=depth+@bendNow
1238
1249
  r<<self.bend(start,depth.to_s,ch)
1239
1250
  r<<self.bend(pos,depth.to_s,ch)
1240
1251
  r
1241
1252
  end
1242
1253
  def self.oneNote len=@tbase,key=@basekey,velocity=@velocity,ch=@ch,sharp=0
1254
+ bendStart=@bendNow
1243
1255
  velocity=@preVelocity.shift if @preVelocity.size>0
1244
1256
  gate=@gateRate
1245
1257
  ch=[ch,0x0f].min
@@ -1275,7 +1287,8 @@ module MidiHex
1275
1287
  end
1276
1288
  @nowtime+=slen
1277
1289
  r<<Event.new(:e,slen," 8#{ch} #{key} 00 # #{slen}(gate:#{@gateRate})- #{len.to_i}(#{len.round(2)})ticks later, sound off [#{(@nowtime/@tbase).to_i}, #{@nowtime%@tbase}]\n")
1278
- r<<self.bend(0,0) if bends
1290
+ r<<self.bend(0,bendStart) if bends
1291
+ @bendNow=bendStart
1279
1292
  r<<self.expre(0,127) if expre
1280
1293
  if rest>0
1281
1294
  @nowtime+=rest
@@ -1316,6 +1329,7 @@ module MidiHex
1316
1329
  self.oneNote(len,key,vel,@rythmChannel,sharp)
1317
1330
  end
1318
1331
  def self.notes c,l=false,accent=false,sharp=0,sharpFloat=false
1332
+ bendStart=@bendNow
1319
1333
  @lastnoteName=c
1320
1334
  n=@notes[c]
1321
1335
  if @octmode==:near && n.class != Array
@@ -1330,11 +1344,14 @@ module MidiHex
1330
1344
  end
1331
1345
  r=[]
1332
1346
  if sharpFloat && sharpFloat!=0
1333
- v=sharpFloat*@bendHalfMax
1334
- v=sharpFloat*100 if @bendCent>1
1347
+ v=sharpFloat*@bendHalfMax/@bendrange
1348
+ v=sharpFloat*100 if @bendCentOn
1349
+ v+=bendStart
1335
1350
  r<<self.bend(0,v)
1351
+ @bendNow=v
1336
1352
  r<<self.notekey(n,l,accent,sharp)
1337
- r<<self.bend(0,0)
1353
+ r<<self.bend(0,bendStart)
1354
+ @bendNow=bendStart
1338
1355
  else
1339
1356
  r<<self.notekey(n,l,accent,sharp)
1340
1357
  end
@@ -1594,6 +1611,7 @@ module MidiHex
1594
1611
  Event.new(:sys,len," #{ex} # GM\n")
1595
1612
  end
1596
1613
  def self.XGsystemOn len=0
1614
+ @bendrangemax=127
1597
1615
  @nowtime+=len
1598
1616
  ex=self.sysExEvent("43 10 4C 00 00 7E 00")
1599
1617
  Event.new(:sys,len," #{ex} # XG\n")
@@ -1689,7 +1707,7 @@ module MidiHex
1689
1707
  end
1690
1708
  depth=@lastbend+depth if plus
1691
1709
  @lastbend=depth
1692
- depth=(depth*@bendCent).to_i
1710
+ depth=(depth*@bendCent).to_i if @bendCentOn
1693
1711
  pos+=@waitingtime
1694
1712
  @waitingtime=0
1695
1713
  @nowtime+=pos
@@ -1896,7 +1914,7 @@ module MidiHex
1896
1914
  ch=format("%01x",@ch)
1897
1915
  vel=format("%02x",@velocity)
1898
1916
  r<<Event.new(:e,0," 9#{ch} #{key} #{vel} # theremin sound on note #{@thereminNote} velocity #{@velocity}\n")
1899
- r<<self.bendRange(12*4)
1917
+ r<<self.bendRange(@bendrangemax)
1900
1918
  self.bendCent(true)
1901
1919
  else
1902
1920
  @thereminNote=false
data/lib/smml/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Smml
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.8.2"
3
3
  end
data/sample/midi-test.mml CHANGED
@@ -10,7 +10,7 @@ t:=abcde
10
10
  tt(x):=ee$xff
11
11
 
12
12
  a`b'cd (stroke:86) [ef{e,f,g}g_c!:cmaj7,<(stroke:3)]4>>>> (p:flut)(g:80)[/2:aAbcCdef/(g:20)-]2
13
- (bendCent:off)[c(bend:200.2)/cc/(bend:0)c(bendCent:on)]2
13
+ (bendCent:off)[c(bend:200.2)/cc/(bend:0)(+0.3)c(bendCent:on)]2
14
14
  (mark:tes)(p:guit)/2:c2gc/[/2:~{e,g}=f/] (g:100) f*240e*120d*60 --(p:organ) $t (+3)a(+)b(0)c $tt(4:1,2,3)
15
15
 
16
16
 
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.8
4
+ version: 0.1.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - tabasano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-04 00:00:00.000000000 Z
11
+ date: 2014-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler