smf 0.15.12
Sign up to get free protection for your applications and to get access to all the features.
- data/MANUAL +172 -0
- data/MANUAL.en +135 -0
- data/MANUAL.en.html +150 -0
- data/MANUAL.en.rd +144 -0
- data/MANUAL.html +201 -0
- data/MANUAL.rd +179 -0
- data/README +33 -0
- data/README.en +33 -0
- data/lib/smf.rb +736 -0
- data/lib/smf/divert.rb +21 -0
- data/lib/smf/io.rb +1278 -0
- data/lib/smf/toy/beatmap.rb +73 -0
- data/lib/smf/toy/gm.rb +327 -0
- data/lib/smf/toy/groove.rb +34 -0
- data/lib/smf/toy/macro.rb +282 -0
- data/lib/smf/toy/macro/mml.rb +34 -0
- data/lib/smf/toy/macro/mml/parser.rb +545 -0
- data/lib/smf/toy/macro/mml/parser.ry +239 -0
- data/lib/smf/toy/macro/stt.rb +33 -0
- data/lib/smf/toy/morse.rb +126 -0
- data/lib/smf/toy/quantize.rb +32 -0
- data/lib/smf/toy/rmi.rb +29 -0
- data/lib/smf/toy/searchsegment.rb +24 -0
- data/lib/smf/toy/shuffle.rb +39 -0
- data/lib/smf/toy/tempomap.rb +75 -0
- data/lib/smf/toy/text.rb +369 -0
- data/lib/smf/toy/velcomp.rb +42 -0
- data/lib/smf/toy/virtual.rb +118 -0
- data/lib/smf/toy/xml.rb +377 -0
- data/sample/Makefile +58 -0
- data/sample/bwv772.mid +0 -0
- data/sample/bwv772.mml +94 -0
- data/sample/bwv775.mid +0 -0
- data/sample/bwv775.mml +157 -0
- data/sample/bwv787.mid +0 -0
- data/sample/bwv787.mml +129 -0
- data/sample/groove.grv +33 -0
- data/sample/groove.rb +45 -0
- data/sample/ltvddpd2.mid +0 -0
- data/sample/ltvddpd2.stt +60 -0
- data/sample/merge.rb +38 -0
- data/sample/mml-samp.rb +19 -0
- data/sample/mml.rb +36 -0
- data/sample/morse-samp.rb +11 -0
- data/sample/morse.rb +31 -0
- data/sample/play-oss.rb +215 -0
- data/sample/play-oss2.rb +253 -0
- data/sample/play-oss3.rb +150 -0
- data/sample/play-spkr.rb +97 -0
- data/sample/play-win.rb +195 -0
- data/sample/quantize.rb +41 -0
- data/sample/rand1.rb +21 -0
- data/sample/rand2.rb +24 -0
- data/sample/rmi2smf.rb +26 -0
- data/sample/shuffle.rb +43 -0
- data/sample/smf2rmi.rb +26 -0
- data/sample/smf2smf.rb +26 -0
- data/sample/smf2text.rb +27 -0
- data/sample/smf2wav.rb +123 -0
- data/sample/smf2xml.rb +27 -0
- data/sample/split.rb +40 -0
- data/sample/stt-samp.rb +19 -0
- data/sample/stt.rb +36 -0
- data/sample/text2smf.rb +28 -0
- data/sample/velcomp.rb +45 -0
- data/sample/virtual-samp.rb +19 -0
- data/sample/xml2smf.rb +28 -0
- metadata +128 -0
data/sample/smf2xml.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
# smf2xml.rb: Written by Tadayoshi Funaba 2004-2006
|
4
|
+
# $Id: smf2xml.rb,v 1.3 2006-11-10 21:57:06+09 tadf Exp $
|
5
|
+
|
6
|
+
require 'smf'
|
7
|
+
require 'smf/toy/xml'
|
8
|
+
require 'gopt'
|
9
|
+
include SMF
|
10
|
+
|
11
|
+
def usage
|
12
|
+
warn 'usage: smf2xml [-o output] [input]'
|
13
|
+
exit 1
|
14
|
+
end
|
15
|
+
|
16
|
+
usage unless opt = Gopt.gopt('o:')
|
17
|
+
usage unless $*.size >= 0 && $*.size <= 1
|
18
|
+
|
19
|
+
ifile = $*.shift
|
20
|
+
ifile = nil if ifile == '-'
|
21
|
+
|
22
|
+
ofile = opt[:o] if opt[:o]
|
23
|
+
ofile ||= File.basename(ifile, '.mid') + '.xml' if ifile
|
24
|
+
ofile = nil if ofile == '-'
|
25
|
+
|
26
|
+
sq = unless ifile then Sequence.read($stdin) else Sequence.load(ifile) end
|
27
|
+
unless ofile then sq.write_xml($stdout) else sq.save_xml(ofile) end
|
data/sample/split.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
# split.rb: Written by Tadayoshi Funaba 1999-2006
|
4
|
+
# $Id: split.rb,v 1.10 2006-11-10 21:57:06+09 tadf Exp $
|
5
|
+
|
6
|
+
require 'smf'
|
7
|
+
require 'smf/divert'
|
8
|
+
require 'gopt'
|
9
|
+
include SMF
|
10
|
+
|
11
|
+
def usage
|
12
|
+
warn 'usage: split [-o output] [input]'
|
13
|
+
exit 1
|
14
|
+
end
|
15
|
+
|
16
|
+
usage unless opt = Gopt.gopt('o:')
|
17
|
+
usage unless $*.size >= 0 && $*.size <= 1
|
18
|
+
|
19
|
+
ifile = $*.shift
|
20
|
+
ifile = nil if ifile == '-'
|
21
|
+
|
22
|
+
ofile = opt[:o] if opt[:o]
|
23
|
+
ofile ||= File.basename(ifile, '.mid') + '-split.mid' if ifile
|
24
|
+
ofile = nil if ofile == '-'
|
25
|
+
|
26
|
+
sq = unless ifile then Sequence.read($stdin) else Sequence.load(ifile) end
|
27
|
+
nsq = Sequence.new(1, sq.division)
|
28
|
+
eot = []
|
29
|
+
sq.each do |tr|
|
30
|
+
tr.divert(nsq) do |ev|
|
31
|
+
case ev
|
32
|
+
when EndOfTrack; eot << ev; nil
|
33
|
+
when ChannelMessage; ev.ch + 1
|
34
|
+
else; 0
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
max = eot.max unless eot.empty?
|
39
|
+
nsq.each{|tr| tr << max}
|
40
|
+
unless ofile then nsq.write($stdout) else nsq.save(ofile) end
|
data/sample/stt-samp.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
# stt-samp.rb: Written by Tadayoshi Funaba 2005
|
4
|
+
# $Id: stt-samp.rb,v 1.1 2005-07-17 17:16:18+09 tadf Exp $
|
5
|
+
|
6
|
+
require 'smf/toy/macro/stt'
|
7
|
+
include SMF
|
8
|
+
|
9
|
+
sq = Sequence.new
|
10
|
+
mm = STT.new(sq)
|
11
|
+
mm << 'gm=1 r ch=0 pr=0'
|
12
|
+
12.times do
|
13
|
+
mm << "{q �ɡ� h �ɡ� q r}&"
|
14
|
+
mm << "{q ��� h ��� q r}&"
|
15
|
+
mm << "{q �� h �� q r}"
|
16
|
+
mm << "oc += 1/12"
|
17
|
+
end
|
18
|
+
mm.generate
|
19
|
+
sq.save('stt-samp.mid')
|
data/sample/stt.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
# stt.rb: Written by Tadayoshi Funaba 2005,2006
|
4
|
+
# $Id: stt.rb,v 1.4 2006-11-10 21:57:06+09 tadf Exp $
|
5
|
+
|
6
|
+
require 'smf/toy/macro/stt'
|
7
|
+
require 'gopt'
|
8
|
+
include SMF
|
9
|
+
|
10
|
+
def usage
|
11
|
+
warn 'usage: stt [-o output] [-e command] [input]'
|
12
|
+
exit 1
|
13
|
+
end
|
14
|
+
|
15
|
+
usage unless opt = Gopt.gopt('o:e:')
|
16
|
+
usage unless $*.size >= 0 && $*.size <= 1
|
17
|
+
|
18
|
+
ifile = $*.shift
|
19
|
+
ifile = nil if ifile == '-'
|
20
|
+
|
21
|
+
ofile = opt[:o] if opt[:o]
|
22
|
+
ofile ||= File.basename(ifile, '.stt') + '.mid' if ifile
|
23
|
+
ofile = nil if ofile == '-'
|
24
|
+
|
25
|
+
so = opt[:e] if opt[:e]
|
26
|
+
so ||= unless ifile then $stdin.read else IO.read(ifile) end
|
27
|
+
sq = Sequence.new(1, 480)
|
28
|
+
mm = STT.new(sq)
|
29
|
+
mm << so
|
30
|
+
begin
|
31
|
+
mm.generate
|
32
|
+
rescue ParseError
|
33
|
+
warn format('%s: %s', (opt[:e] && '-e') || ifile || '(stdin)', $!)
|
34
|
+
exit 1
|
35
|
+
end
|
36
|
+
unless ofile then sq.write($stdout) else sq.save(ofile) end
|
data/sample/text2smf.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
# text2smf.rb: Written by Tadayoshi Funaba 2001-2006
|
4
|
+
# $Id: text2smf.rb,v 1.5 2006-11-10 21:57:06+09 tadf Exp $
|
5
|
+
|
6
|
+
require 'smf'
|
7
|
+
require 'smf/toy/text'
|
8
|
+
require 'gopt'
|
9
|
+
include SMF
|
10
|
+
|
11
|
+
def usage
|
12
|
+
warn 'usage: text2smf [-o output] [input]'
|
13
|
+
exit 1
|
14
|
+
end
|
15
|
+
|
16
|
+
usage unless opt = Gopt.gopt('o:')
|
17
|
+
usage unless $*.size >= 0 && $*.size <= 1
|
18
|
+
|
19
|
+
ifile = $*.shift
|
20
|
+
ifile = nil if ifile == '-'
|
21
|
+
|
22
|
+
ofile = opt[:o] if opt[:o]
|
23
|
+
ofile ||= File.basename(ifile, '.txt') + '.mid' if ifile
|
24
|
+
ofile = nil if ofile == '-'
|
25
|
+
|
26
|
+
sq = unless ifile
|
27
|
+
then Sequence.read_text($stdin) else Sequence.load_text(ifile) end
|
28
|
+
unless ofile then sq.write($stdout) else sq.save(ofile) end
|
data/sample/velcomp.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
# velcomp.rb: Written by Tadayoshi Funaba 2005,2006
|
4
|
+
# $Id: velcomp.rb,v 1.3 2006-11-10 21:57:06+09 tadf Exp $
|
5
|
+
|
6
|
+
require 'smf'
|
7
|
+
require 'smf/toy/velcomp'
|
8
|
+
require 'gopt'
|
9
|
+
include SMF
|
10
|
+
|
11
|
+
def usage
|
12
|
+
warn 'usage: velcomp [-o output] [-g gain] [-t thresh] [-r ratio] [input]'
|
13
|
+
exit 1
|
14
|
+
end
|
15
|
+
|
16
|
+
usage unless opt = Gopt.gopt('o:g:t:r:')
|
17
|
+
usage unless $*.size >= 0 && $*.size <= 1
|
18
|
+
|
19
|
+
ifile = $*.shift
|
20
|
+
ifile = nil if ifile == '-'
|
21
|
+
|
22
|
+
ofile = opt[:o] if opt[:o]
|
23
|
+
ofile ||= File.basename(ifile, '.mid') + '-velcomp.mid' if ifile
|
24
|
+
ofile = nil if ofile == '-'
|
25
|
+
|
26
|
+
g = (opt[:g] || '0').to_f
|
27
|
+
t = (opt[:t] || '80').to_f
|
28
|
+
r = (opt[:r] || '0.9').to_f
|
29
|
+
|
30
|
+
sq = unless ifile then Sequence.read($stdin) else Sequence.load(ifile) end
|
31
|
+
vc = VelComp.new
|
32
|
+
vc.gain = g
|
33
|
+
vc.thresh = t
|
34
|
+
vc.ratio = r
|
35
|
+
|
36
|
+
sq.each do |tr|
|
37
|
+
tr.pop
|
38
|
+
tr.each do |ev|
|
39
|
+
case ev
|
40
|
+
when NoteOn
|
41
|
+
vc.velcomp(ev)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
unless ofile then sq.write($stdout) else sq.save(ofile) end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
# virtual-samp.rb: Written by Tadayoshi Funaba 2005
|
4
|
+
# $Id: virtual-samp.rb,v 1.1 2005-07-17 17:16:18+09 tadf Exp $
|
5
|
+
|
6
|
+
require 'smf'
|
7
|
+
require 'smf/toy/virtual'
|
8
|
+
include SMF
|
9
|
+
|
10
|
+
sq = VirtualSequence.load('bwv772.mid')
|
11
|
+
sq.each do |tr|
|
12
|
+
tr.each do |ev|
|
13
|
+
case ev
|
14
|
+
when VirtualNote
|
15
|
+
ev.length /= 2
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
sq.save('virtual-samp.mid')
|
data/sample/xml2smf.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
# xml2smf.rb: Written by Tadayoshi Funaba 2004-2006
|
4
|
+
# $Id: xml2smf.rb,v 1.3 2006-11-10 21:57:06+09 tadf Exp $
|
5
|
+
|
6
|
+
require 'smf'
|
7
|
+
require 'smf/toy/xml'
|
8
|
+
require 'gopt'
|
9
|
+
include SMF
|
10
|
+
|
11
|
+
def usage
|
12
|
+
warn 'usage: xml2smf [-o output] [input]'
|
13
|
+
exit 1
|
14
|
+
end
|
15
|
+
|
16
|
+
usage unless opt = Gopt.gopt('o:d:')
|
17
|
+
usage unless $*.size >= 0 && $*.size <= 1
|
18
|
+
|
19
|
+
ifile = $*.shift
|
20
|
+
ifile = nil if ifile == '-'
|
21
|
+
|
22
|
+
ofile = opt[:o] if opt[:o]
|
23
|
+
ofile ||= File.basename(ifile, '.xml') + '.mid' if ifile
|
24
|
+
ofile = nil if ofile == '-'
|
25
|
+
|
26
|
+
sq = unless ifile
|
27
|
+
then Sequence.read_xml($stdin) else Sequence.load_xml(ifile) end
|
28
|
+
unless ofile then sq.write($stdout) else sq.save(ofile) end
|
metadata
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: smf
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.15.12
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tadayoshi Funaba
|
8
|
+
autorequire: smf
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-11-12 00:00:00 +09:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: gopt
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
description:
|
26
|
+
email: tadf@funaba.org
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files: []
|
32
|
+
|
33
|
+
files:
|
34
|
+
- MANUAL
|
35
|
+
- MANUAL.en
|
36
|
+
- MANUAL.en.html
|
37
|
+
- MANUAL.en.rd
|
38
|
+
- MANUAL.html
|
39
|
+
- MANUAL.rd
|
40
|
+
- README
|
41
|
+
- README.en
|
42
|
+
- lib/smf.rb
|
43
|
+
- lib/smf/divert.rb
|
44
|
+
- lib/smf/io.rb
|
45
|
+
- lib/smf/toy/beatmap.rb
|
46
|
+
- lib/smf/toy/gm.rb
|
47
|
+
- lib/smf/toy/groove.rb
|
48
|
+
- lib/smf/toy/macro.rb
|
49
|
+
- lib/smf/toy/macro/mml.rb
|
50
|
+
- lib/smf/toy/macro/mml/parser.rb
|
51
|
+
- lib/smf/toy/macro/mml/parser.ry
|
52
|
+
- lib/smf/toy/macro/stt.rb
|
53
|
+
- lib/smf/toy/morse.rb
|
54
|
+
- lib/smf/toy/quantize.rb
|
55
|
+
- lib/smf/toy/rmi.rb
|
56
|
+
- lib/smf/toy/searchsegment.rb
|
57
|
+
- lib/smf/toy/shuffle.rb
|
58
|
+
- lib/smf/toy/tempomap.rb
|
59
|
+
- lib/smf/toy/text.rb
|
60
|
+
- lib/smf/toy/velcomp.rb
|
61
|
+
- lib/smf/toy/virtual.rb
|
62
|
+
- lib/smf/toy/xml.rb
|
63
|
+
- sample/Makefile
|
64
|
+
- sample/bwv772.mid
|
65
|
+
- sample/bwv772.mml
|
66
|
+
- sample/bwv775.mid
|
67
|
+
- sample/bwv775.mml
|
68
|
+
- sample/bwv787.mid
|
69
|
+
- sample/bwv787.mml
|
70
|
+
- sample/groove.grv
|
71
|
+
- sample/groove.rb
|
72
|
+
- sample/ltvddpd2.mid
|
73
|
+
- sample/ltvddpd2.stt
|
74
|
+
- sample/merge.rb
|
75
|
+
- sample/mml-samp.rb
|
76
|
+
- sample/mml.rb
|
77
|
+
- sample/morse-samp.rb
|
78
|
+
- sample/morse.rb
|
79
|
+
- sample/play-oss.rb
|
80
|
+
- sample/play-oss2.rb
|
81
|
+
- sample/play-oss3.rb
|
82
|
+
- sample/play-spkr.rb
|
83
|
+
- sample/play-win.rb
|
84
|
+
- sample/quantize.rb
|
85
|
+
- sample/rand1.rb
|
86
|
+
- sample/rand2.rb
|
87
|
+
- sample/rmi2smf.rb
|
88
|
+
- sample/shuffle.rb
|
89
|
+
- sample/smf2rmi.rb
|
90
|
+
- sample/smf2smf.rb
|
91
|
+
- sample/smf2text.rb
|
92
|
+
- sample/smf2wav.rb
|
93
|
+
- sample/smf2xml.rb
|
94
|
+
- sample/split.rb
|
95
|
+
- sample/stt-samp.rb
|
96
|
+
- sample/stt.rb
|
97
|
+
- sample/text2smf.rb
|
98
|
+
- sample/velcomp.rb
|
99
|
+
- sample/virtual-samp.rb
|
100
|
+
- sample/xml2smf.rb
|
101
|
+
has_rdoc: false
|
102
|
+
homepage: http://www.funaba.org/en/ruby.html
|
103
|
+
post_install_message:
|
104
|
+
rdoc_options: []
|
105
|
+
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: "0"
|
113
|
+
version:
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: "0"
|
119
|
+
version:
|
120
|
+
requirements: []
|
121
|
+
|
122
|
+
rubyforge_project: tadf
|
123
|
+
rubygems_version: 1.3.1
|
124
|
+
signing_key:
|
125
|
+
specification_version: 2
|
126
|
+
summary: SMF is a "Standard MIDI File" module for an object-oriented scripting language Ruby.
|
127
|
+
test_files: []
|
128
|
+
|