smml 0.1.8 → 0.1.8.2

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 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