smml 0.0.1.5 → 0.0.2

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 +29 -6
  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: 75ff5842372ded20636c957cecf250fd9281aeaa
4
- data.tar.gz: 9fa770527ddb702083efc7e8fadf3de322d2018c
3
+ metadata.gz: e9e4b5e286515548fd779124d93a0e4af0033544
4
+ data.tar.gz: 1d03edbde6611b9765734e39876c150bbd18174e
5
5
  SHA512:
6
- metadata.gz: 85190158c8daf8d4348b4b9a3bdab554296646d2177cd461cea9b31906b27c3595e23b7d12e4bb35a134f232c0822949eeb04271b873fff81e9c250aca2e03c3
7
- data.tar.gz: aaad50efe9d52991caf0742f0144091cd4f407f8bb51feb14a91fe3cf1a91a07494c573e0bbbb0ee9c924682855174b311ef23a702f7af8268dc03d40b42728a
6
+ metadata.gz: a4594fbee45fd10fc83d777f96771f6a9c8f661bd6ff8de91530798541ae6c3f072aff4a62c8e2104720c9bfe3e1d05154e494391359a42e64d1e8f867832df8
7
+ data.tar.gz: 16ac496ecb4c88b4d357371dd02efd3f4f67b6e65b7d478415f1aab981a893ed273a961b1a4d3ba6181a8aca52265c10040ed95b8c11318547818d9d22d82f44
data/lib/smml/msm.rb CHANGED
@@ -3,6 +3,8 @@
3
3
  require 'kconv'
4
4
  require 'optparse'
5
5
 
6
+ $debuglevel=0
7
+
6
8
  def hint
7
9
  cmd=File.basename($0)
8
10
  puts <<EOF
@@ -140,7 +142,7 @@ class String
140
142
  def cmark
141
143
  @@cmark
142
144
  end
143
- def trim ofs="",com=@@cmark
145
+ def commentoff ofs="",com=@@cmark
144
146
  lines=self.split("\n")
145
147
  d=multilineTrim(lines,com)
146
148
  d=d.map{|i|i.sub(/(#{com}).*/){}.chomp}*ofs
@@ -269,7 +271,7 @@ def rawdata d
269
271
  d.gsub(","){" "}
270
272
  end
271
273
  def trackSizeHex d,cmark="#"
272
- d=d.trim("",cmark).split.join
274
+ d=d.commentoff("",cmark).split.join
273
275
  i=(d.size+8)/2
274
276
  # p [d,i,i.to_s(16)]
275
277
  #("00000000"+i.to_s(16))[-8..-1]
@@ -646,6 +648,7 @@ end
646
648
  module MidiHex
647
649
  # 設定のため最初に呼ばなければならない
648
650
  def self.prepare bpm,tbase=480,vel=0x40,oct=:near,vfuzzy=2
651
+ @autopan=true
649
652
  @startBpm=bpm
650
653
  @midiname=false
651
654
  @cmark="#"
@@ -684,6 +687,7 @@ module MidiHex
684
687
  @basekeyRythm=@basekeyOrg=@basekey
685
688
  @bendrange=2
686
689
  @bendCent=1
690
+ @pancenter=64
687
691
  @prepareSet=[@tbase,@ch,@velocity,@velocityFuzzy,@basekey,@gateRate,@bendrange,@bendCent]
688
692
  @chmax=15
689
693
  @bendrangemax=127
@@ -714,7 +718,7 @@ module MidiHex
714
718
  @midiname+=".mid" if @midiname !~ /\.mid$/
715
719
  end
716
720
  end
717
- @data=File.read(name).trim(" ;").toutf8 if name && File.exist?(name)
721
+ @data=File.read(name).commentoff(" ;").toutf8 if name && File.exist?(name)
718
722
  end
719
723
  def self.getdata
720
724
  @data
@@ -758,8 +762,9 @@ module MidiHex
758
762
  @preBefore=[]
759
763
  @preAfter=[]
760
764
  @tracknum=tc+1
761
- tc+=1 if tc>=9 # ch10 is drum kit channel
765
+ tc+=1 if tc>=@rythmChannel # ch10 is drum kit channel
762
766
  tc=@chmax if tc>@chmax
767
+ @panoftrack=panbytrack(tc)
763
768
  @ch=tc
764
769
  end
765
770
  def self.header format,track,tbase=@tbase
@@ -1352,6 +1357,19 @@ module MidiHex
1352
1357
  end
1353
1358
  }
1354
1359
  end
1360
+ def self.autopan v
1361
+ @autopan=v
1362
+ end
1363
+ def self.autopanset tnum
1364
+ @panstep=0x7f/(tnum+2)
1365
+ end
1366
+ def self.panbytrack tc
1367
+ if @autopan
1368
+ tc==@rythmChannel ? @pancenter : (tc+1)*@panstep
1369
+ else
1370
+ @pancenter
1371
+ end
1372
+ end
1355
1373
  def self.strokeSpeed s
1356
1374
  s=s.to_i
1357
1375
  @strokespeed=s
@@ -1451,6 +1469,7 @@ module MidiHex
1451
1469
  @shiftbase=40
1452
1470
  accent=false
1453
1471
  sharp=0
1472
+ @h<<[:controlChange,"10,#{@panoftrack}"] if @autopan
1454
1473
  cmd=rundata.scan(/&\([^)]+\)|\([-+]*[[:digit:]]?\)|:[^\(,]+\([^\)\(]+\),|:[^,]+,|\([^:]*:[^)\(]*\)|_[^!_]+!|_[^_]__[^\?]+\?|v[[:digit:]]+|[<>][[:digit:]]*|\*?[[:digit:]]+\.[[:digit:]]+|\*?[[:digit:]]+|[-+[:alpha:]]|\^|`|'|./)
1455
1474
  cmd<<" " # dummy
1456
1475
  p "make start: ",cmd if $DEBUG
@@ -2166,7 +2185,7 @@ end
2166
2185
 
2167
2186
  class MmlTracks
2168
2187
  attr_accessor :tracknum, :tbase, :rundatas, :rawdatas, :mx
2169
- attr_accessor :bpm, :velocity, :octave, :vfuzzy, :data, :infile, :outfile
2188
+ attr_accessor :bpm, :velocity, :octave, :vfuzzy, :data, :infile, :outfile, :autopan
2170
2189
  def initialize tbase=480,pagesep='///',expfile=false,cmark=';;'
2171
2190
  String.new.setcmark(cmark)
2172
2191
  @mx=MidiHex
@@ -2183,6 +2202,7 @@ class MmlTracks
2183
2202
  @velocity=0x40
2184
2203
  @octave=:near
2185
2204
  @vfuzzy=2
2205
+ @autopan=true
2186
2206
  end
2187
2207
  def init test,fz
2188
2208
  @mx.prepare(@bpm,@tbase,@velocity,@octave,@vfuzzy)
@@ -2238,6 +2258,9 @@ class MmlTracks
2238
2258
  end
2239
2259
  def settracks
2240
2260
  @htracks=[]
2261
+ tcall=@rundatas.size
2262
+ @mx.autopanset(tcall)
2263
+ @mx.autopan(@autopan)
2241
2264
  tc=0
2242
2265
  # remember starting position check if data exist before sound
2243
2266
  @htracks << @mx.metaTitle + @mx.generaterText + @mx.starttempo.data + @mx.makefraze(@rundatas[0],tc) + @mx.lastrest
@@ -2250,7 +2273,7 @@ class MmlTracks
2250
2273
  @header=@mx.header(1, @tracknum, @tbase)
2251
2274
  alla=[@header]+@htracks.map{|t|@mx.trackMake(t)}.flatten
2252
2275
  puts alla if $DEBUG
2253
- all=alla.map{|i|i.trim("","#")}*""
2276
+ all=alla.map{|i|i.commentoff("","#")}*""
2254
2277
  array=[all.split.join]
2255
2278
  @binary = array.pack( "H*" )
2256
2279
  end
data/lib/smml/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Smml
2
- VERSION = "0.0.1.5"
2
+ VERSION = "0.0.2"
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.0.1.5
4
+ version: 0.0.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-08-18 00:00:00.000000000 Z
11
+ date: 2014-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler