smf 0.15.12
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.
- 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
|
+
|