README.alsaseq
1=======================================================================
2 ALSA Sequencer Interface
3 Copyright (c) 2000 Takashi Iwai <tiwai@suse.de>
4=======================================================================
5
6DESCRIPTION
7===========
8
9This document describes about the Advanced Linux Sound Architecture
10(ALSA) sequencer interface. The ALSA sequencer interface communicates
11between ALSA sequencer core and timidity. The interface receives
12events from sequencer and plays it in (quasi-)real-time.
13On this mode, TiMidity works purely as the software real-time MIDI
14render, that is as a software MIDI synth engine on ALSA.
15There is no scheduling routine in this interface, since all scheduling
16is done by ALSA sequencer core.
17
18For invoking ALSA sequencer interface, run timidity as follows:
19 % timidity -iA -B2,8 -Os -q0/0 -k0
20The fragment size is adjustable. The smaller number gives better
21real-time response. Then timidity shows new port numbers which were
22newly created (128:0 and 128:1 below).
23 ---------------------------------------
24 % timidity -iA -B2,8 -Os -q0/0 -k0
25 TiMidity starting in ALSA server mode
26 Opening sequencer port 128:0 128:1
27 ---------------------------------------
28These ports can be connected with any other sequencer ports.
29For example, playing a MIDI file via pmidi (what's an overkill :-),
30 % pmidi -p128:0 foo.mid
31If a midi file needs two ports, you may connect like this:
32 % pmidi -p128:0,128:1 bar.mid
33Connecting from external MIDI keyboard may become like this:
34 % aconnect 64:0 128:0
35
36INSTALLATION
37============
38
39Configure with --enable-alsaseq and --enable-audio=alsa option.
40Of course, other audio devices or interfaces can be chosen
41additionally, too.
42
43For getting better real-time response, timidity must be run as root
44(see below). Set-UID root is the easiest way to achieve this. You
45may change the owner and the permission of installed timidity binary
46as follows:
47 # chown root /usr/local/bin/timidity
48 # chmod 4755 /usr/local/bin/timidity
49
50Be aware that this might cause a security hole!
51
52
53REAL-TIME RESPONSE
54==================
55
56The interface tries to reset process scheduling to SCHED_FIFO and as
57high priority as possible. The SCHED_FIFO'd program exhibits much
58better real-time response. For example, without SCHED_FIFO, timidity
59may cause significant pauses at every time /proc is accessed.
60For enabling this feature, timidity must be invoked by root or
61installed with set-uid root.
62
63
64INSTRUMENT LOADING
65==================
66
67Timidity loads instruments dynamically at each time a program change
68event is received. This causes sometimes pauses due to buffer
69underrun during playback. Furthermore, timidity resets the loaded
70instruments when the all subscriptions are disconnected. Thus for
71keeping all loaded instruments even after playback is finished, you
72need to connect a dummy port (e.g. midi input port) to a timidity port
73via aconnect:
74 % aconnect 64:0 128:0
75
76
77RESET PLAYBACK
78==============
79
80You may stop all sounds during playback by sending SIGHUP signal to
81timiditiy. The connections will be kept even after reset, but the
82events will be no longer processed. For enabling the audio again, you
83have to reconnect the ports.
84
85
86VISUALIZATION
87=============
88
89If you prefer a bit more fancy visual output, try my tiny program,
90aseqview.
91 % aseqview -p2 &
92Then connect two ports to timidity ports (assumed 129:0 and 129:1 were
93created by aseqview):
94 % aconnect 129:0 128:0
95 % aconnect 129:1 128:1
96The outputs ought to be redirected to 129:0,1 instead of 128:0,1.
97 % pmidi -p129:0,129:1 foo.mid
98
99
100COMPATIBILITY WITH OSS
101======================
102
103You may access to timidity also via OSS MIDI emulation on ALSA
104sequencer. Take a look at /proc/asound/seq/oss for checking the
105device number to be accessed.
106 ---------------------------------------
107 % cat /proc/asound/seq/oss
108 OSS sequencer emulation version 0.1.8
109 ALSA client number 63
110 ALSA receiver port 0
111 ...
112 midi 1: [TiMidity port 0] ALSA port 128:0
113 capability write / opened none
114
115 midi 2: [TiMidity port 1] ALSA port 128:1
116 capability write / opened none
117 ---------------------------------------
118In the case above, the MIDI devices 1 and 2 are assigned to timidity.
119Now, play with playmidi:
120 % playmidi -e -D1 foo.mid
121
122
123BUGS
124====
125
126Well, well, they must be there..
127
128
129RESOURCES
130=========
131
132- ALSA home page
133 http://www.alsa-project.org
134- My ALSA hack page (including aseqview)
135 http://members.tripod.de/iwai/alsa.html
136
README.dl
1====================== DYNAMIC INTERFACE ======================
2
3 Interface modules that are specified with `-i' option can be
4loadable modules by using dynamic link module.
5 Place the shared library
6
7 if_<NAME>.so
8
9on the SHARED_LIB_PATH directory. In this case <NAME> is the interface's
10short name to be identified.
11 TiMidity++ requires to this shared library the following function:
12 (In this case <ID> is the interface's ID that are specified at `-i' option.)
13
14ControlMode* interface_<ID>_loader(void)
15{
16 ControlMode* ctl;
17 /* ... */
18
19 return ctl;
20}
21
22 If the dynamic interface that are specified at -i<ID>, TiMidity++
23loads if_<NAME>.so at the SHARED_LIB_PATH (this is the macro specified
24in the Makefile) and calls a function in the shared library
25interface_<ID>_loader().
26
27 If a file
28
29 if_<NAME>.txt
30
31describing the information about the interface by 1 line is in the
32SHARED_LIB_PATH, TiMidity++ displays this information when `-h'
33option is specified.
34
35
36WARNING:
37
38 You shouldn't specify the interface you want to build as dynamic link
39as enabled in Makefile. TiMidity++ searches its interfaces first from
40interfaces statically linked with TiMidity++, and next from dynamic linked
41interfaces.
42
43
README.m2m
1m2m: mod->midi file converter for TiMidity++
2
3
4
5
6BRIEF SYNOPSIS:
7
8This adds the new -OM output mode to TiMidity++, which will read in a mod file
9and output a midi file. All parameters needed for the conversion are
10contained in a .m2m file of the same base name as the mod. If this file can
11not be found, it will generate one for you. Chord assignment and
12transposition values can be very difficult and tedious to assign by hand. It
13is STRONGLY recommended that you let the program generate the initial .m2m
14file, so that it can do most (if not all) of this for you. You will still
15need to assign drums, correct banks/programs, and tweak volume amps by hand.
16
17
18
19
20EXAMPLE USAGE:
21
22timidity -c c:\timidity\timidity.cfg -OM -V 2 -idt foo.mod
23
24This will try to read in foo.m2m as the config file for the conversion, and
25will output a file called foo.mid. -V 2 tells it to generate midi for use
26on a device that uses an X^2 volume curve (all GM/GS/XG hardware). You can
27use the -o flag to specify any other output name you wish.
28
29If you don't have timidity installed, so that you don't have a valid
30timidity.cfg file, just create a 0 byte file and use it instead of the real
31thing. Since you're playing mod files, timidity doesn't need to load any
32midi instruments, so you don't need to have a set of patches or a real
33timidity.cfg file :)
34
35
36
37
38BACKGROUND:
39
40MOD files are a lot like MIDI files. Both formats are basicly a series of
41events that control how notes get played with which instruments. MODs
42package the instruments along with the events into a single file, while MIDI
43relies on external sources of instruments. It is this fundamental
44difference that creates the most difficulty in performing a mod->midi file
45conversion. The mod file does not need to know what pitch each sample is
46tuned to, if it is a drum, or if it is a chord. MOD players simply play the
47packaged sample at the requested pitch, assuming all samples are tuned to
48the same fixed frequency, whether they actually are or not. Thus, if you
49were to do a direct mod->midi event conversion, you would wind up with midi
50instruments playing in the wrong keys, snare drums being treated as normal
51melodic instruments, and single notes where there should be chords.
52Transposition, drum related channel movements, and chord emissions are the
53most noticable obstacles to overcome when performing an accurace mod->midi
54conversoin.
55
56Paolo Bonzini has already done half of my job for me. He contributed a good
57amount of code that turns TiMidity++ into a first rate mod player. This,
58alone, would not have helped me very much; it was how he implemented it.
59Rather than handle the events like every other mod player known to man,
60TiMidity++ converts them into standard midi events, loads the mod instruments
61in as special patches, and then renders them just like it would any normal
62midi file. The mod event parsing, instrument parsing, and direct event
63conversion was already done! All I had to do was handle the problems I
64mentioned above, along with many more minor ones I haven't mentioned, before
65writing the internal TiMidity++ events out to a midi file. See the comments
66at the top of m2m.c if you are interested in some of the other issues that
67needed to be addressed during the conversion process. Although some of
68these other issues were non-trivial to deal with, and pitch bends beyond 4
69octaves may still sound a bit odd, they are nothing that the average user
70needs to know about or keep in mind when trying to succesfully convert a mod
71file. The only thing you need to know is that, in order to address the
72conversion problems disscussed above, some information about each sample in
73the mod must be specified in a config file (.m2m) associated with each mod
74file. The format of this file is given below.
75
76
77
78
79M2M CONFIG FILE FORMAT:
80
81Comment lines must begin with a #. Blank lines (no spaces or any other
82character besides a newline or carriage return) are allowed. All other lines
83must specify ALL FIVE of the fields described below. Each field is separated
84by white space.
85
86
87
88FIELD 1: Sample Number
89
90This is the number of the sample that you are defining information for.
91The first sample in the mod file is 1 (not zero).
92
93
94
95FIELD 2: Bank/Program, drum flag, chord, silent flag
96
97This field specifies several different properties of the sample. Optional
98paramaters are given surrounded by parentheses. The format for this field
99is:
100
101(!)(bank/)program(chord)(*)
102
103If the field begins with an exclaimation mark, ! , then no notes will be
104issued for this sample. This can be used to silence samples that you can
105not assign to a general midi instrument, such as speech, complicated drum
106tracks, or any sound effect that you can not create a close approximation to
107using GS sfx banks.
108
109The bank portion of the field specifies an optional bank selection. This is
110the number of the bank to use, followed by a / to separate it from the
111program number.
112
113The program number is the midi instrument you are assigning to the sample.
114If the sample is a drum, this is the note that the drum is mapped to in the
115drum set.
116
117The optional chord field specifies what type of chord the sample is composed
118of. There are 4 types of chords, each of which has 3 subtypes. The
119supported chord types are (M)ajor, (m)inor, (d)iminished minor, and (f)ifth.
120Each chord is specified by the letter surrounded by parantheses in the
121previous line. The subtype of the chord describes how much the chord is
122"rotated" from a standard chord, which can be 0, 1, or 2. As an example of
123what I mean by "rotated", a major chord is composed of the following note
124semitone offsets: 0,4,7. If you were to rotate the chord one to the left, it
125would be: -5,0,4. Two to the left is: -8,-5,0. If no subtype is given,
126zero rotation is assumed.
127
128The final part specifies if the sample is a drum. Put a * at the end of the
129field to indicate this. Chord assignments will be ignored if the drum flag
130is set.
131
132Examples:
1338/48M bank 8, program 48 (Orchestra Strings), with a normal major chord
134!8/48M silence this sample
1358/48M2 same as the first example, only the chord is rotated down twice
13648 normal Marcato Strings in tone bank 0
13716/38* Power drum set, Snare1
13838* Snare1 on the regular drum set 0
139
140
141
142FIELD 3: Transposition
143
144This is how much to transpose the original note specified in the mod file.
145If the sample is tuned at middle C (pitch 60), it will need to be transposed
146+24 semitones for the midi instrument to play on the correct pitch. Samples
147marked as drums will not be transposed, since they are fixed to a single
148note on the drum channel. You must still enter a value for the
149transposition field, even if it is ignored by the drums, so that the config
150file parser will not crash.
151
152
153
154FIELD 4: Fine Tuning
155
156All pitch bend events for this sample will be adjusted by the given fraction
157of a pitch. This is sometimes necessary for highly out of tune samples.
158Some MOD composers, instead of tuning their samples correctly, use pitch
159bends to tune the samples. When you play this music with correctly tuned
160samples, these pitch bends detune the note and it sounds out of tune. So the
161fine tuning value is used to compensate for these detuning pitchbends.
162
163It is also common to find out of tune samples that were NOT tuned with
164pitchbends, so adding in a pitch bend adjustment would only make them sound
165worse in a midi file. To disable fine tuning, an optional ! can be placed
166before the fine tuning value. This is the DEFAULT SETTING in the automatic
167config file generator. If you find that a mod requires fine tuning for a
168sample, simply delete the ! and redo the conversion.
169
170This feature is not yet fully implemented. Only existing pitch bend events
171are affected, so no new pitch bend events are issued. This is not usually a
172problem, however, since most cases where this feature needs to be applied
173involve mods that issue pitch bends before the affected notes, since they
174were intended to tune the samples to begin with. I plan to eventually
175implement insertion of new pitch bend events, so that this will be a true
176fine tuning feature.
177
178
179
180FIELD 5: %Volume
181
182Each sample can be amplified by scaling the expression events. 100 is the
183default amount, which is 100% of the original volume. 50 would decrease it
184to half of the original volume, while 150 would be 1.5 times the original
185volume. Don't forget that the maximum expression value is 127, so any
186expression events that get scaled higher than this will cap off at 127 and
187you won't hear any difference. It is mainly used for quieting instruments
188that are too loud in the midi file, or for amplifying instruments whoose
189expression values are too low to begin with.
190
191Any fields beyond the first 5 will not be parsed. You can type anything
192here that you want. You do not have to place a # before comment text, but
193it is conventional to do so.
194
195
196
197
198FREQUENCY ANALYSIS:
199
200So, how do you figure out how much to transpose each sample and what chord
201it is? Load it up in a program that can perform an FFT on the sample and
202display the frequency peaks. The first peak is usually, but not always, the
203fundamental pitch of the sample. If the sample is a chord, take the first 3
204major peaks and assign the chord from these. Then enter the appropriate
205chord and transposition values in the .m2m file and see if it sounds correct.
206It is VERY time consuming to do all of this by hand.... So, I wrote routines
207to do all of the assignments for you :) It is not 100% accurate, but it's
208pretty darn close. And when it does miss a pitch or a chord, it always
209assigns it the correct LOOKING answer. That is, if I were to visually
210inspect the FFT data, I would pick the same pitch the algorithm does. I'm
211no expert at this, but after spending so many hours testing this on many
212different difficult to assign pitches, I think I'm pretty good at it now :)
213The only way I can see to improve it is to build in some sort of
214psychoacoustical model that takes into account how the human ear percieves
215the sound. And I don't think I want to do that at the moment.... It does an
216above average job at dealing with samples that have more than one pitch or
217chord in them, but don't be surprised if a noisy or multi-tonal sample
218doesn't get assigned correctly. Garbage in, garbage out :) The automatic
219assignment is very good for the vast majority of samples and should DEFINATELY
220be tried first before you start changing things by hand. When it does mess
221up, it's usually only off by a single semitone or an octave multiple, so it's
222easy to tweak from there.
223
224Before I wrote the automatic frequency analysis routines, I knew very little
225about the field. Pitch detection is a very old problem in the audio signal
226processing literature. I looked up references in the library dating from
227the 1960's. The stuff from back then is just as relevant as the later
228literature, since the methods really haven't improved much since then. The
229two major camps on how to do this are "autocorrelation" and "cepstrum"
230analysis. It turns out that autocorrelation was not the answer to my
231problems. While it works well on "well behaved" samples, it breaks down
232very quickly on synth instruments, noisy instruments, and instruments with
233multiple fundamental frequencies. A large number of samples encountered in
234mod files exhibit these properties. No matter what I did to try to tweak it,
235and I tried a lot of good things, I just could not make it robust enough to
236handle real world samples. It's a good theory, but it falls apart in
237practice.
238
239Cepstrum analysis proved to be much more robust. But even so, I had to do a
240good deal of pitch filtering and peak weighting before I could get it to work
241well. The 2nd FFT analysis kept giving me frequency peaks that didn't exist
242in the 1st FFT spectrum. They were, however, very close to real peaks. So I
243throw away all frequencies that fall below a pitch peak area and maximum
244magnitude filter, then force the cepstrum analysis to only choose pitches that
245have made it through the filter in the 1st FFT spectrum. I set a maximum
246frequency based on zero point crossing analysis, going out two zero crossings
247from the largest amplitude in the sample. This was necessary to prevent
248octave jumping errors. I found that it is also important to weight the
249cepstrum peak areas by the maximum magnitude within the corresponding pitch
250peak in the 1st FFT. This was a desperate attempt to get some especially
251troublesome bass samples to assign correctly. Surprisingly enough, it works
252great, giving me a higher success rate on all my samples without inducing any
253new misassignments! The only catch is that the weighting only works well for
254< 2 seconds of audio analysis. Any larger than that and the FFT size gets
255so big that the pitch peaks are too diffused, so the maximum magnitudes for
256the pitches are too small, and the weighting starts to give wrong answers.
257If anyone wants to analyze >= 2 seconds of data, which isn't neccessary for
258assigning pitches to mod/midi instruments, it would be easy to implement a
259sliding window average that calls the existing frequency assignment
260function.
261
262It appears to work better than any of the other sample analysis software I
263have. If you are interested in more details of how I did the cepstrum
264analysis, try looking over the code in freq.c and/or email me for a more
265complete description of the algorithm I wound up with. The new FFT routines
266are not mine, but are public domain. From all the benchmarks I could find,
267this is the best FFT implementation for doing what I need to do (and for
268future effects processing, should they ever be added to TiMidity++). See
269fft4g.c for info on where to get the original FFT package.
270
271
272
273
274SUGGESTIONS ?:
275
276Feel free to email me with any suggestions you may have on how I can do a
277better job of converting the mods, or how I can implement things on the TODO
278or WISH lists in m2m.c. I am considering turning this into a stand alone
279program, but until I get more free time and energy, it's going to stay as
280just an addon for TiMidity++.
281
282
283
284
285LEGAL STUFF:
286
287TiMidity++ is distributed under the GPL, and since my code is derived from
288and makes use of it, I guess it's under the GPL too. So blah blah blah,
289legal stuff, blah blah blah, etc.. You know the drill.
290
291
292
293
294Eric A. Welsh <ewelsh@ccb.wustl.edu>
295Center for Molecular Design
296Center for Computational Biology
297Washington University
298St. Louis, MO
299
README.mts
1======================================================================
2MIDI Tuning Standard summary
3======================================================================
4
5Besides GS/XG scale tuning which adjusts the pitch of 12 tones in an
6octave individually, TiMidity++ supports MIDI Tuning Standard in
7Universal SysEx. MIDI Tuning Standard has the following advantages
8compared with GS/XG scale tuning:
9
10 - Support for microtonal sound other than 12 tones
11 - The pitch can be adjusted in 1/100 cent or less accuracy
12 - Temperaments can be rationally setup based on the tonality
13
14For details, please refer to the recommended practice.
15
16(1) Bulk Tuning Dump Request (Non Real-Time)
17----------------------------------------------------------------------
18F0 7E <device ID> 08 00 tt F7
19
20F0 7E Universal Non-Real Time SysEx header
21<device ID> ID of target device (7F = all devices)
2208 sub-ID#1 = "MIDI Tuning Standard"
2300 sub-ID#2 = "bulk tuning dump request (Non Real-Time)"
24tt tuning program number (0 - 127)
25F7 EOX
26----------------------------------------------------------------------
27
28(2) Bulk Tuning Dump (Non Real-Time)
29----------------------------------------------------------------------
30F0 7E <device ID> 08 01 tt <tuning name> [xx yy zz] ... chksum F7
31
32F0 7E Universal Non-Real Time SysEx header
33<device ID> ID of target device (7F = all devices)
3408 sub-ID#1 = "MIDI Tuning Standard"
3501 sub-ID#2 = "bulk tuning dump (Non Real-Time)"
36tt tuning program number (0 - 127)
37<tuning name> 16 ASCII characters
38[xx yy zz] frequency data for one note (repeated 128 times)
39chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
40F7 EOX
41----------------------------------------------------------------------
42
43(3) Single Note Tuning Change (Real-Time)
44----------------------------------------------------------------------
45F0 7F <device ID> 08 02 tt ll [kk xx yy zz] F7
46
47F0 7F Universal Real Time SysEx header
48<device ID> ID of target device (7F = all devices)
4908 sub-ID#1 = "MIDI Tuning Standard"
5002 sub-ID#2 = "single note tuning change (Real-Time)"
51tt tuning program number (0 - 127)
52ll number of changes (1 change = 1 set of [kk xx yy zz])
53[kk MIDI key number
54 xx yy zz] frequency data for that key (repeated 'll' number of times)
55F7 EOX
56----------------------------------------------------------------------
57
58(4) Bulk Tuning Dump Request (Bank) (Non Real-Time)
59----------------------------------------------------------------------
60F0 7E <device ID> 08 03 bb tt F7
61
62F0 7E Universal Non-Real Time SysEx header
63<device ID> ID of target device (7F = all devices)
6408 sub-ID#1 = "MIDI tuning standard"
6503 sub-ID#2 = "bulk tuning dump request (Bank) (Non Real-Time)"
66bb tuning bank number (0 - 127)
67 (described as 1-128 in MIDI Tuning Specification)
68tt tuning program number (0 - 127)
69F7 EOX
70----------------------------------------------------------------------
71
72(5) Key-Based Tuning Dump (Non Real-Time)
73----------------------------------------------------------------------
74F0 7E <device ID> 08 04 bb tt <tuning name> [xx yy zz] ... chksum F7
75
76F0 7E Universal Non-Real Time SysEx header
77<device ID> ID of target device (7F = all devices)
7808 sub-ID#1 = "MIDI tuning standard"
7904 sub-ID#2 = "key-based tuning dump (Non Real-Time)"
80bb tuning bank number (0 - 127)
81 (described as 1-128 in MIDI Tuning Specification)
82tt tuning program number (0 - 127)
83<tuning name> 16 ASCII characters
84[xx yy zz] frequency data for one note (repeated 128 times)
85chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
86F7 EOX
87----------------------------------------------------------------------
88
89(6) Scale/Octave Tuning Dump 1-Byte Form (Non Real-Time)
90----------------------------------------------------------------------
91F0 7E <device ID> 08 05 bb tt <tuning name> [xx] ... chksum F7
92
93F0 7E Universal Non-Real Time SysEx header
94<device ID> ID of target device (7F = all devices)
9508 sub-ID#1 = "MIDI tuning standard"
9605 sub-ID#2 = "scale/octave tuning dump 1-byte form
97 (Non Real-Time)"
98bb tuning bank number (0 - 127)
99 (described as 1-128 in MIDI Tuning Specification)
100tt tuning program number (0 - 127)
101<tuning name> 16 ASCII characters
102[xx] frequency data for C,C#,... B (12 bytes total)
103 00H means -64 Cent
104 40H means +/- 0 Cent
105 7FH means +63 Cent
106chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
107F7 EOX
108----------------------------------------------------------------------
109
110(7) Scale/Octave Tuning Dump 2-Byte Form (Non Real-Time)
111----------------------------------------------------------------------
112F0 7E <device ID> 08 06 bb tt <tuning name> [xx yy] ... chksum F7
113
114F0 7E Universal Non-Real Time SysEx header
115<device ID> ID of target device (7F = all devices)
11608 sub-ID#1 = "MIDI tuning standard"
11706 sub-ID#2 = "scale/octave tuning dump 2-byte form
118 (Non Real-Time)"
119bb tuning bank number (0 - 127)
120 (described as 1-128 in MIDI Tuning Specification)
121tt tuning program number (0 - 127)
122<tuning name> 16 ASCII characters
123[xx yy] frequency data for C,C#,... B (24 bytes total)
124 00H 00H means -100 cents (8,192 steps of .012207 cents)
125 40H 00H means 0 cents (equal temperament)
126 7FH 7FH means +100 cents (8,191 steps of .012207 cents)
127chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
128F7 EOX
129----------------------------------------------------------------------
130
131(8) Single Note Tuning Change (Bank) (Real-Time)
132----------------------------------------------------------------------
133F0 7F <device ID> 08 07 bb tt ll [kk xx yy zz] ... F7
134
135F0 7F Universal Real Time SysEx header
136<device ID> ID of target device (7F = all devices)
13708 sub-ID#1 = "MIDI tuning standard"
13807 sub-ID#2 = "single note tuning change (Bank) (Real-Time)"
139bb tuning bank number (0 - 127)
140 (described as 1-128 in MIDI Tuning Specification)
141tt tuning program number (0 - 127)
142ll number of changes (1 change = 1 set of [kk xx yy zz])
143[kk MIDI key number
144 xx yy zz] frequency data for that key (repeated 'll' number of times)
145F7 EOX
146----------------------------------------------------------------------
147
148(9) Single Note Tuning Change (Bank) (Non Real-Time)
149----------------------------------------------------------------------
150F0 7E <device ID> 08 07 bb tt ll [kk xx yy zz] ... F7
151
152F0 7E Universal Non-Real Time SysEx header
153<device ID> ID of target device (7F = all devices)
15408 sub-ID#1 = "MIDI tuning standard"
15507 sub-ID#2 = "single note tuning change (Bank) (Non Real-Time)"
156bb tuning bank number (0 - 127)
157 (described as 1-128 in MIDI Tuning Specification)
158tt tuning program number (0 - 127)
159ll number of changes (1 change = 1 set of [kk xx yy zz])
160[kk MIDI key number
161 xx yy zz] frequency data for that key (repeated 'll'number of times)
162F7 EOX
163----------------------------------------------------------------------
164
165(10) Scale/Octave Tuning 1-Byte Form (Real-Time)
166----------------------------------------------------------------------
167F0 7F <device ID> 08 08 ff gg hh [ss] ... F7
168
169F0 7F Universal Real-Time SysEx header
170<device ID> ID of target device (7F = all devices)
17108 sub-ID#1 = "MIDI Tuning Standard"
17208 sub-ID#2 = "scale/octave tuning 1-byte form (Real-Time)"
173ff channel/options byte 1
174 bits 0 to 1 = channel 15 to 16
175 bits 2 to 6 = reserved for future expansion
176gg channel byte 2 - bits 0 to 6 = channel 8 to 14
177hh channel byte 3 - bits 0 to 6 = channel 1 to 7
178[ss] 12 byte tuning offset of 12 semitones from C to B
179 00H means -64 cents
180 40H means 0 cents (equal temperament)
181 7FH means +63 cents
182F7 EOX
183----------------------------------------------------------------------
184
185(11) Scale/Octave Tuning 1-Byte Form (Non Real-Time)
186----------------------------------------------------------------------
187F0 7E <device ID> 08 08 ff gg hh [ss] ... F7
188
189F0 7E Universal Non Real-Time SysEx header
190<device ID> ID of target device (7F = all devices)
19108 sub-ID#1 = "MIDI Tuning Standard"
19208 sub-ID#2 = "scale/octave tuning 1-byte form (Non Real-Time)"
193ff channel/options byte 1
194 bits 0 to 1 = channel 15 to 16
195 bits 2 to 6 = reserved for future expansion
196gg channel byte 2 - bits 0 to 6 = channel 8 to 14
197hh channel byte 3 - bits 0 to 6 = channel 1 to 7
198[ss] 12 byte tuning offset of 12 semitones from C to B
199 00H means -64 cents
200 40H means 0 cents (equal temperament)
201 7FH means +63 cents
202F7 EOX
203----------------------------------------------------------------------
204
205(12) Scale/Octave Tuning 2-Byte Form (Real-Time)
206----------------------------------------------------------------------
207F0 7F <device ID> 08 09 ff gg hh [ss tt] ... F7
208
209F0 7F Universal Real-Time SysEx header
210<device ID> ID of target device (7F = all devices)
21108 sub-ID#1 = "MIDI Tuning Standard"
21209 sub-ID#2 = "scale/octave tuning 2-byte form (Real-Time)"
213ff channel/options byte 1
214 bits 0 to 1 = channel 15 to 16
215 bits 2 to 6 = reserved for future expansion
216gg channel byte 2 - bits 0 to 6 = channel 8 to 14
217hh channel byte 3 - bits 0 to 6 = channel 1 to 7
218[ss tt] 24 byte tuning offset of 2 bytes per semitone from C to B
219 00H 00H means -100 cents (8,192 steps of .012207 cents)
220 40H 00H means 0 cents (equal temperament)
221 7FH 7FH means +100 cents (8,191 steps of .012207 cents)
222F7 EOX
223----------------------------------------------------------------------
224
225(13) Scale/Octave Tuning 2-Byte Form (Non Real-Time)
226----------------------------------------------------------------------
227F0 7E <device ID> 08 09 ff gg hh [ss tt] ... F7
228
229F0 7E Universal Non Real Time SysEx header
230<device ID> ID of target device (7F = all devices)
23108 sub-ID#1 = "MIDI Tuning Standard"
23209 sub-ID#2 = "scale/octave tuning 2-byte form (Non Real-Time)"
233ff channel/options byte 1
234 bits 0 to 1 = channel 15 to 16
235 bits 2 to 6 = reserved for future expansion
236gg channel byte 2 - bits 0 to 6 = channel 8 to 14
237hh channel byte 3 - bits 0 to 6 = channel 1 to 7
238[ss tt] 24 byte tuning offset of 2 bytes per semitone from C to B
239 00H 00H means -100 cents (8,192 steps of .012207 cents)
240 40H 00H means 0 cents (equal temperament)
241 7FH 7FH means +100 cents (8,191 steps of .012207 cents)
242F7 EOX
243----------------------------------------------------------------------
244
245(14) Temperament Tonality Control Tuning (Real-Time)
246----------------------------------------------------------------------
247F0 7F <device ID> 08 0A sf mi F7
248
249F0 7F Universal Real-Time SysEx header
250<device ID> ID of target device (7F = all devices)
25108 sub-ID#1 = "MIDI Tuning Standard"
2520A sub-ID#2 = "temperament tonality control tuning
253 (Real-Time)"
254sf number of sharp/flat (1 byte)
255 39H means 7 flats
256 3FH means 1 flat
257 40H means key of C
258 41H means 1 sharp
259 47H means 7 sharps
260mi major/minor (1 byte)
261 00H means major key
262 01H means minor key
263 02H means passing major key
264 03H means passing minor key
265F7 EOX
266----------------------------------------------------------------------
267
268(15) Temperament Tonality Control Tuning (Non Real-Time)
269----------------------------------------------------------------------
270F0 7E <device ID> 08 0A sf mi F7
271
272F0 7E Universal Non Real-Time SysEx header
273<device ID> ID of target device (7F = all devices)
27408 sub-ID#1 = "MIDI Tuning Standard"
2750A sub-ID#2 = "temperament tonality control tuning
276 (Non Real-Time)"
277sf number of sharp/flat (1 byte)
278 39H means 7 flats
279 3FH means 1 flat
280 40H means key of C
281 41H means 1 sharp
282 47H means 7 sharps
283mi major/minor (1 byte)
284 00H means major key
285 01H means minor key
286 02H means passing major key
287 03H means passing minor key
288F7 EOX
289----------------------------------------------------------------------
290
291(16) Temperament Type Control Tuning (Real-Time)
292----------------------------------------------------------------------
293F0 7F <device ID> 08 0B ff gg hh tt F7
294
295F0 7F Universal Real-Time SysEx header
296<device ID> ID of target device (7F = all devices)
29708 sub-ID#1 = "MIDI Tuning Standard"
2980B sub-ID#2 = "temperament type control tuning (Real-Time)"
299ff channel/options byte 1
300 bits 0 to 1 = channel 15 to 16
301 bit 2 = port A/B
302 bits 3 to 6 = reserved for future expansion
303gg channel byte 2 - bits 0 to 6 = channel 8 to 14
304hh channel byte 3 - bits 0 to 6 = channel 1 to 7
305tt temperament type (1 byte)
306 00H means equal temperament
307 01H means Pythagoras tuning
308 02H means mean-tone tuning
309 03H means pure intonation
310 40H means user-defined temperament #0
311 41H means user-defined temperament #1
312 42H means user-defined temperament #2
313 43H means user-defined temperament #3
314F7 EOX
315----------------------------------------------------------------------
316
317(17) Temperament Type Control Tuning (Non Real-Time)
318----------------------------------------------------------------------
319F0 7E <device ID> 08 0B ff gg hh tt F7
320
321F0 7E Universal Non Real Time SysEx header
322<device ID> ID of target device (7F = all devices)
32308 sub-ID#1 = "MIDI Tuning Standard"
3240B sub-ID#2 = "temperament type control tuning (Non Real-Time)"
325ff channel/options byte 1
326 bits 0 to 1 = channel 15 to 16
327 bit 2 = port A/B
328 bits 3 to 6 = reserved for future expansion
329gg channel byte 2 - bits 0 to 6 = channel 8 to 14
330hh channel byte 3 - bits 0 to 6 = channel 1 to 7
331tt temperament type (1 byte)
332 00H means equal temperament
333 01H means Pythagoras tuning
334 02H means mean-tone tuning
335 03H means pure intonation
336 40H means user-defined temperament #0
337 41H means user-defined temperament #1
338 42H means user-defined temperament #2
339 43H means user-defined temperament #3
340F7 EOX
341----------------------------------------------------------------------
342
343(18) User-defined Temperament Entry (Non Real-Time)
344----------------------------------------------------------------------
345F0 7E <device ID> 08 0C tt <temper name>
346 ll [fh fl bh bl aa bb cc dd ee ff] ... F7
347
348F0 7E Universal Non Real Time SysEx header
349<device ID> ID of target device (7F = all devices)
35008 sub-ID#1 = "MIDI Tuning Standard"
3510C sub-ID#2 = "user-defined temperament entry (Non Real-Time)"
352tt temperament program number (0 - 63)
353<temper name> 16 ASCII characters
354ll number of formula (1 formula =
355 1 set of [fh fl bh bl aa bb cc dd ee ff])
356[fh applying pitch bit mask byte 1
357 bits 0 to 3 = circle of fifth forward 8 to 11
358 bits 4 to 5 = reserved for future expansion
359 bit 6 = major flag (reversal)
360 fl applying pitch bit mask byte 2
361 bits 0 to 6 = circle of fifth forward 1 to 7
362 bh applying pitch bit mask byte 3
363 bits 0 to 3 = circle of fifth backward 8 to 11
364 bits 4 to 5 = reserved for future expansion
365 bit 6 = minor flag (reversal)
366 bl applying pitch bit mask byte 4
367 bits 0 to 6 = circle of fifth backward 1 to 7
368 aa bb fraction (aa/bb)
369 cc dd ee ff] power ((cc/dd)^(ee/ff)) (repeated 'll' number of times)
370F7 EOX
371----------------------------------------------------------------------
372
373======================================================================
374The major/minor in the temperament tonality
375======================================================================
376
377The basic chords used in general music in C major are not only C, G, F
378but also Am, Em, Dm which appear frequently. There may also be Cm,
379Gm, Fm, A, E, D, and so on. Since these chords are not supported only
380in pure intonation (C major), players need to change temperaments
381according to progress of music.
382
383To solve the issue, TiMidity++ prepares
384
385(1) pure intonation (C major)
386 based on the pitch of C in Pythagoras tuning (C major)
387(2) pure intonation (A minor)
388 based on the pitch of A in Pythagoras tuning (A minor)
389(3) pure intonation (passing C major)
390 based on the pitch of A in Pythagoras tuning (C major)
391(4) pure intonation (passing A minor)
392 based on the pitch of C in Pythagoras tuning (A minor)
393
394I will explain more precisely. The following table gives the lattice
395(Cartesian model) of the scale system:
396
397-----------------------------------------------------------------------------
398D-- A-- E-- B-- F#-- C#-- G#-- D#-- A#-- E#-- B#-- F##-- C##--
399Bb- F- C- G- D- A- E- B- F#- C#- G#- D#- A#-
400Gb Db Ab Eb Bb F C G D A E B F#
401Ebb+ Bbb+ Fb+ Cb+ Gb+ Db+ Ab+ Eb+ Bb+ F+ C+ G+ D+
402Cbb++ Gbb++ Dbb++ Abb++ Ebb++ Bbb++ Fb++ Cb++ Gb++ Db++ Ab++ Eb++ Bb++
403-----------------------------------------------------------------------------
404
405The notation "ABCDEFG" is according to Pythagoras tuning. The
406notation "+", "-", "++" and "--" mean 1sc higher, 1sc lower, 2sc
407higher and 2sc lower respectively.
408
409A certain pure intonation is given as 12 sounds arranged by the
410rectangle of 4x3 from the lattice. For example, C tuning, A tuning,
411A- tuning and C+ tuning are given as following tables respectively:
412
413[C tuning (C major)]
414----------------------
415A- E- B- F#-
416F C G D
417Db+ Ab+ Eb+ Bb+
418----------------------
419
420[A tuning (A minor)]
421----------------------
422F#- C#- G#- D#-
423D A E B
424Bb+ F+ C+ G+
425----------------------
426
427[C+ tuning (passing C major)]
428----------------------
429A E B F#
430F+ C+ G+ D+
431Db++ Ab++ Eb++ Bb++
432----------------------
433
434[A- tuning (passing A minor)]
435----------------------
436F#-- C#-- G#-- D#--
437D- A- E- B-
438Bb F C G
439----------------------
440
441I think it is nice to select the tuning combination whose pitch of
442parallel key is slightly lower for major music, and slightly higher
443for minor music.
444
445======================================================================
446Preset temperament of Temperament Type Control Tuning
447======================================================================
448
449First, Pythagoras tuning (major) chromatic scale is expressed by the
450following recurrence relations. Here, the index [] is a offset of the
451tonic. The operation results are surely settled between 1 and 2, so
452they will be made into half or double if necessary.
453
454[Pythagoras tuning (major) chromatic scale]
455pytha_maj[ 0] = 1 # C 1
456pytha_maj[ 7] = pytha_maj[ 0] * 3/2 # G 3/2
457pytha_maj[ 2] = pytha_maj[ 7] * 3/2 # D 9/8
458pytha_maj[ 9] = pytha_maj[ 2] * 3/2 # A 27/16
459pytha_maj[ 4] = pytha_maj[ 9] * 3/2 # E 81/64
460pytha_maj[11] = pytha_maj[ 4] * 3/2 # B 243/128
461pytha_maj[ 6] = pytha_maj[11] * 3/2 # F# 729/512
462--
463pytha_maj[ 5] = pytha_maj[ 0] * 2/3 # F 4/3
464pytha_maj[10] = pytha_maj[ 5] * 2/3 # Bb 16/9
465pytha_maj[ 3] = pytha_maj[10] * 2/3 # Eb 32/27
466pytha_maj[ 8] = pytha_maj[ 3] * 2/3 # Ab 128/81
467pytha_maj[ 1] = pytha_maj[ 8] * 2/3 # Db 256/243
468
469On the other hand, pure intonation (major) chromatic scale can be
470expressed by the following recurrence relations. Here, sc means a
471syntonic comma (81/80).
472
473[pure intonation (major) chromatic scale]
474pure_maj[ 0] = 1 # C 1
475pure_maj[ 7] = pure_maj[ 0] * 3/2 # G 3/2
476pure_maj[ 2] = pure_maj[ 7] * 3/2 # D 9/8
477pure_maj[ 9] = pure_maj[ 2] * 3/2 / sc # A 5/3
478pure_maj[ 4] = pure_maj[ 9] * 3/2 # E 5/4
479pure_maj[11] = pure_maj[ 4] * 3/2 # B 15/8
480pure_maj[ 6] = pure_maj[11] * 3/2 # F# 45/32
481--
482pure_maj[ 5] = pure_maj[ 0] * 2/3 # F 4/3
483pure_maj[10] = pure_maj[ 5] * 2/3 * sc # Bb 9/5
484pure_maj[ 3] = pure_maj[10] * 2/3 # Eb 6/5
485pure_maj[ 8] = pure_maj[ 3] * 2/3 # Ab 8/5
486pure_maj[ 1] = pure_maj[ 8] * 2/3 # Db 16/15
487
488It can be understood that pure intonation is similar to Pythagoras
489tuning fundamentally except descending with 1sc at A and rising with
4901sc at B flat while going up and down respectively from the tonic in
491the circle of fifths.
492
493Similarly, expressed Pythagoras tuning and pure intonation (minor)
494chromatic scale by the following recurrence relations. Although the
495fractions written to right-hand side is terrible values, the
496recurrence relations themselves are very simple.
497
498[Pythagoras tuning (minor) chromatic scale]
499pytha_min[ 0] = 1 # C 1
500pytha_min[ 7] = pytha_min[ 0] * 3/2 # G 3/2
501pytha_min[ 2] = pytha_min[ 7] * 3/2 # D 9/8
502pytha_min[ 9] = pytha_min[ 2] * 3/2 # A 27/16
503pytha_min[ 4] = pytha_min[ 9] * 3/2 # E 81/64
504pytha_min[11] = pytha_min[ 4] * 3/2 # B 243/128
505pytha_min[ 6] = pytha_min[11] * 3/2 # F# 729/512
506pytha_min[ 1] = pytha_min[ 6] * 3/2 # C# 2187/2048
507pytha_min[ 8] = pytha_min[ 1] * 3/2 # G# 6561/4096
508pytha_min[ 3] = pytha_min[ 8] * 3/2 # D# 19683/16384
509--
510pytha_min[ 5] = pytha_min[ 0] * 2/3 # F 4/3
511pytha_min[10] = pytha_min[ 5] * 2/3 # Bb 16/9
512
513[pure intonation (minor) chromatic scale]
514pure_min[ 0] = 1 * sc # C 1 * sc
515pure_min[ 7] = pure_min[ 0] * 3/2 # G 3/2 * sc
516pure_min[ 2] = pure_min[ 7] * 3/2 / sc # D 10/9 * sc
517pure_min[ 9] = pure_min[ 2] * 3/2 # A 5/3 * sc
518pure_min[ 4] = pure_min[ 9] * 3/2 # E 5/4 * sc
519pure_min[11] = pure_min[ 4] * 3/2 # B 15/8 * sc
520pure_min[ 6] = pure_min[11] * 3/2 / sc # F# 25/18 * sc
521pure_min[ 1] = pure_min[ 6] * 3/2 # C# 25/24 * sc
522pure_min[ 8] = pure_min[ 1] * 3/2 # G# 25/16 * sc
523pure_min[ 3] = pure_min[ 8] * 3/2 # D# 75/64 * sc
524--
525pure_min[ 5] = pure_min[ 0] * 2/3 # F 4/3 * sc
526pure_min[10] = pure_min[ 5] * 2/3 # Bb 16/9 * sc
527
528The differences from the major tuning are that the boundary of
529Pythagoras tuning goes up three positions, that the positions of
530descending with syntonic comma are changed, and that pure intonation
531is adjusted 1sc higher so that melodic parts' tonic (Pythagoras
532tuning) and harmonic parts' tonic (pure intonation) are overlapped.
533
534By the way, mean-tone tuning is also prepared besides Pythagoras
535tuning and pure intonation as preset temperament of TiMidity++. While
536mean-tone tuning (major) is based on the general one whose major
537thirds are pure, mean-tone tuning (minor) is based on Salinas tuning
538whose minor thirds are pure. Both mean-tone tuning (major) chromatic
539scale and mean-tone tuning (minor) chromatic scale can be expressed by
540the following recurrence relations.
541
542[mean-tone tuning (major) chromatic scale]
543mt_maj[ 0] = 1 # C 1
544mt_maj[ 7] = mt_maj[ 0] * 5^(1/4) # G 5^(1/4)
545mt_maj[ 2] = mt_maj[ 7] * 5^(1/4) # D 5^(1/2) / 2
546mt_maj[ 9] = mt_maj[ 2] * 5^(1/4) # A 5^(3/4) / 2
547mt_maj[ 4] = mt_maj[ 9] * 5^(1/4) # E 5/4
548mt_maj[11] = mt_maj[ 4] * 5^(1/4) # B 5^(5/4) / 4
549mt_maj[ 6] = mt_maj[11] * 5^(1/4) # F# 5^(3/2) / 8
550--
551mt_maj[ 5] = mt_maj[ 0] / 5^(1/4) # F 2 / 5^(1/4)
552mt_maj[10] = mt_maj[ 5] / 5^(1/4) # Bb 4 / 5^(1/2)
553mt_maj[ 3] = mt_maj[10] / 5^(1/4) # Eb 4 / 5^(3/4)
554mt_maj[ 8] = mt_maj[ 3] / 5^(1/4) # Ab 8/5
555mt_maj[ 1] = mt_maj[ 8] / 5^(1/4) # Db 8 / 5^(5/4)
556
557[mean-tone tuning (minor) chromatic scale]
558mt_min[ 0] = 1 * sc # C 1 * sc
559mt_min[ 7] = mt_min[ 0] * (10/3)^(1/3) # G (10/3)^(1/3) * sc
560mt_min[ 2] = mt_min[ 7] * (10/3)^(1/3) # D (10/3)^(2/3) / 2 * sc
561mt_min[ 9] = mt_min[ 2] * (10/3)^(1/3) # A 5/3 * sc
562mt_min[ 4] = mt_min[ 9] * (10/3)^(1/3) # E (10/3)^(4/3) / 4 * sc
563mt_min[11] = mt_min[ 4] * (10/3)^(1/3) # B (10/3)^(5/3) / 4 * sc
564mt_min[ 6] = mt_min[11] * (10/3)^(1/3) # F# 25/18 * sc
565mt_min[ 1] = mt_min[ 6] * (10/3)^(1/3) # C# (10/3)^(7/3) / 16 * sc
566mt_min[ 8] = mt_min[ 1] * (10/3)^(1/3) # G# (10/3)^(8/3) / 16 * sc
567mt_min[ 3] = mt_min[ 8] * (10/3)^(1/3) # D# 125/108 * sc
568--
569mt_min[ 5] = mt_min[ 0] / (10/3)^(1/3) # F 2 / (10/3)^(1/3) * sc
570mt_min[10] = mt_min[ 5] / (10/3)^(1/3) # Bb 4 / (10/3)^(2/3) * sc
571
572The point that the boundary of mean-tone tuning goes up three
573positions, and that mean-tone tuning is adjusted 1sc higher, are the
574same situation as Pythagoras tuning and pure intonation.
575
576Now, I think that mean-tone tuning could use for a harmony-melody
577because of the characteristic that is more harmony-like than
578Pythagoras tuning, and a scale is not uneven like pure intonation.
579
580======================================================================
581User-defined temperament entry
582======================================================================
583
584The function of user-defined temperament entry (experimental) is
585implemented in TiMidity++. This corresponds to (18) of MIDI Tuning
586Standard summary (see the top of this document). For example, it can
587generate various temperaments by the following SysEx's.
588
589[equal temperament]
590f0 7e 00 08 0c 00 ; temper prog number
59165 71 75 61 6c 00 00 00 00 00 00 00 00 00 00 00 ; "equal"
59201 ; number of formula
5930f 7f 00 00 01 01 02 01 07 0c ; (both) 2^(7/12)
594f7
595
596[Pythagoras tuning]
597f0 7e 00 08 0c 01 ; temper prog number
59850 79 74 68 61 67 6f 72 61 73 00 00 00 00 00 00 ; "Pythagoras"
59902 ; number of formula
60000 3f 40 1f 03 02 01 01 00 01 ; (maj) 3/2
60143 7f 00 03 03 02 01 01 00 01 ; (min) 3/2
602f7
603
604[mean-tone tuning]
605f0 7e 00 08 0c 02 ; temper prog number
6066d 65 61 6e 2d 74 6f 6e 65 00 00 00 00 00 00 00 ; "mean-tone"
60702 ; number of formula
60800 3f 40 1f 01 01 05 01 01 04 ; (maj) 5^(1/4)
60943 7f 00 03 01 01 0a 03 01 03 ; (min) (10/3)^(1/3)
610f7
611
612[pure intonation]
613f0 7e 00 08 0c 03 ; temper prog number
61470 75 72 65 20 69 6e 74 6f 6e 61 74 69 6f 6e 00 ; "pure intonation"
61504 ; number of formula
61600 3f 40 1f 03 02 01 01 00 01 ; (maj) 3/2
61700 04 40 02 05 01 02 03 04 01 ; (maj) 5*(2/3)^4
61843 7f 00 03 03 02 01 01 00 01 ; (min) 3/2
61940 22 00 00 05 01 02 03 04 01 ; (min) 5*(2/3)^4
620f7
621
622[Kirnberger-3]
623f0 7e 00 08 0c 00 ; temper prog number
6244b 69 72 6e 62 65 72 67 65 72 2d 33 00 00 00 00 ; "Kirnberger-3"
62502 ; number of formula
62600 0f 00 00 01 01 05 01 01 04 ; (both) 5^(1/4)
62700 30 00 1f 03 02 01 01 00 01 ; (both) 3/2
628f7
629
630[Hirashima temperament]
631f0 7e 00 08 0c 01 ; temper prog number
63248 69 72 61 73 68 69 6d 61 00 00 00 00 00 00 00 ; "Hirashima"
63302 ; number of formula
63400 1f 00 03 01 01 05 01 01 04 ; (both) 5^(1/4)
63500 00 00 3c 03 02 01 01 00 01 ; (both) 3/2
636f7
637
638[Werckmeister-3]
639f0 7e 00 08 0c 02 ; temper prog number
64057 65 72 63 6b 6d 65 69 73 74 65 72 2d 33 00 00 ; "Werckmeister-3"
64102 ; number of formula
64200 07 00 00 01 09 02 01 0f 04 ; (both) 2^(15/4)/9
64300 18 00 3f 03 02 01 01 00 01 ; (both) 3/2
644f7
645
646[well-temperament]
647f0 7e 00 08 0c 03 ; temper prog number
64877 65 6c 6c 2d 74 65 6d 70 65 72 00 00 00 00 00 ; "well-temper"
64902 ; number of formula
65000 07 00 00 01 09 02 01 0f 04 ; (both) 2^(15/4)/9
65100 00 01 7f 03 02 01 01 00 01 ; (both) 3/2
652f7
653
654----
655TAMUKI Shoichi <tamuki@linet.gr.jp>
656
README.sf
1================================================================
2 ** Timidity SoundFont Extension **
3
4 written by Takashi Iwai
5 <iwai@dragon.mm.t.u-tokyo.ac.jp>
6 <http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/>
7
8 patch level 1: April 2, 1997
9================================================================
10
11* WHAT'S THIS?
12
13This is an extension to use samples in SoundFont files with
14timidity-0.2i. You can employ both SoundFont file together with
15ordinary GUS patch files. Both SBK and SF2 formats are supported.
16
17
18* USAGE
19
20Two commands are newly added in configuration.
21
22To specify the SoundFont file to be used, just add a line in config
23file like:
24
25 soundfont sffile [order=number]
26
27The first parameter is the file name to be loaded. The file itself
28is stored once after reading all configurations, then converted to
29the internal records except wave sample data.
30
31The optional argument specifies the order of searching.
32'order=0' means to search the SoundFont file at first, then search
33the GUS patches if the appropriate sample is not found.
34'order=1' means to search the SoundFont file after GUS patches.
35
36Another command 'font' is supplied to control the behavior of sample
37selection. If you don't want to use some samples in the SoundFont
38file, specify the sample via 'exclude' sub-command.
39
40 font exclude bank [preset [keynote]]
41
42The first parameter is MIDI bank number of the sample to be removed.
43The optional second parameter is MIDI program number of the sample.
44For drum samples, specify 128 as bank, and drumset number as preset,
45and keynote number for the drum sample.
46
47You can change the order of individual sample (or bank) via "order"
48sub-command.
49
50 font order number bank [preset [keynote]]
51
52The first parameter is the order number (zero or one) to be changed,
53and the sequent parameters are as well as in exclude command above.
54
55
56* BUGS & TODO'S
57
58- noises on some bass drum samples
59- support of modulation envelope
60- support of cut off / resonance
61- support of chorus / reverb
62
63
64* CHANGES
65
66- pl.1
67 + fix volume envelope calcuation
68 + add font command
69 + fix font-exclude control
70
71
README.tk
1---------------------------------------------------------------------
2This is the README file of TkMidity Ver.1.5, Tcl/Tk interface for
3TiMidity MIDI Converter/Player.
4
5TkMidity realizes the Tk interface panel communicating with true
6TiMidity program. By using Tk, you can enjoy a beautiful Motif-like
7window without Motif libraries.
8
9
10* WHAT'S NEW in 1.5
11
12- Trace window using timer callback
13- Forward/backward buttons
14- A couple of bug fixes..
15
16
17* CONTENTS
18
19This archive contains the following files:
20
21README.tk - this file
22tk_c.c - tk-interface control source file
23tkmidity.ptcl - main tcl/tk source to be preprocessed
24tkpanel.tcl - main control panel tcl/tk script
25browser.tcl - file browser
26misc.tcl - miscellaneous subroutines
27tkbitmaps/*.xbm - bitmap files for TkMidity
28
29
30* USAGE
31
32There are four modes newly featured to TiMidity; repeat, shuffle,
33auto-start and auto-exit modes. Repeat mode plays musics after all
34files are finished repeatedly. Shuffle mode means the random pick-up
35playing. When Auto-start is on, the TkMidity begins playing music as
36soon as program starts. Auto-exit means to quit TkMidity automatically
37after all songs are over. Each setting can be saved by Save Config
38menu.
39
40You can change the display configuration in Displays menu. This
41configuration also can be saved on the start-up file by Save Config
42menu.
43
44From ver.1.3, File Open/Close menues and direct keyboard
45controls are supported. You can append arbitrary files from file
46browser. The shortcut key actions are as follows:
47
48 [Enter] : Start Playing
49 [Space] : Pause / Start Again
50 [c] : Stop Playing
51 [q] : Quit TkMidity
52 [p] or [Left] : Previous File
53 [n] or [Right] : Next File
54 [v] or [Down] : Volume Down (5%)
55 [V] or [Up] : Volume Up (5%)
56 [F10] : Menu Mode
57 [Alt]+[Any] : Select Each Menu
58
59From this version (1.4), trace mode window is realized. You can see a
60funny movements of volume and panning of each channel if you specify
61the option flag in command line (see manual).
62
63
64* PROGRAM NOTES
65
66This version requires Tcl7.5/Tk4.1 libraries. Unlike the older tk
67interface, timidity links the tcl/tk libraries on its binary, not
68using wish program. Also, shared memory access must be permitted.
69
70
71* TROUBLE SHOOTING
72
73+The present script verifies the existence of the file before pass to
74TiMidity, but occasionally this could happen...
75
76 Takashi Iwai <iwai@dragon.mm.t.u-tokyo.ac.jp>
77 <http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/>
78
README.w32
1How to compile TiMidity++ for Windows
2
3This file contains fllowing instructions.
4
51.Mingw in Msys environment
62.Turbo C++ in Msys environment
73.OpenWatcom C++ in Msys environment
84.Visual C++ in Msys environment
95.Digital Mars in Msys environment
106.Pelles C in Msys environment
11
121.Mingw in Msys environment
13
14(1)Setup Mingw and MSYS
15 1)Setup Mingw(http://sourceforge.net/projects/mingw/)
16 and MSYS (See MingwWiki(http://mingw.sourceforge.net/MinGWiki/))
17(2)Setup needed libraries
18 2-0)get pexports from Mingw
19 "pexports" is included in mingw-utils-0.3.tar.gz, get it and extract it.
20 2-1)pdcurses
21 Get pdcurses-2.6.0-2003.07.21-1.exe from Mingw. and extract them.
22 Move curses.h to include path and libcurses.a libarary path.
23 2-2)oggvorbis(http://www.vorbis.com/)
24 get OggVorbis-win32sdk-1.0.1.zip and extract it.
25 make export libraries
26 pexports xxxx.dll >xxxx.def
27 dlltool --dllname xxxx.dll --input-def xxxx.def --output-lib libxxxx.a
28 Change include\ogg\os_type.h line 29 as following
29 (os_types.h)
30 29 # if !defined(__GNUC__) || defined(__MINGW32__)
31 set environment variables in batch file like this.
32 REM OggVorbis
33 set PATH=\usr\local\oggvorbis-win32sdk-1.0.1\bin;\usr\local\oggvorbis-win32sdk-1.0.1\lib;%PATH%
34 set C_INCLUDE_PATH=/usr/local/oggvorbis-win32sdk-1.0.1/include:%C_INCLUDE_PATH
35 set LD_LIBRARY_PATH=/usr/local/oggvorbis-win32sdk-1.0.1/lib:%LD_LIBRARY_PATH%
36
37 2-3)gogo no coder(http://www.marinecat.net/mct_top.htm)
38 get gogo.dll from Gogo no Coder(http://www.marinecat.net/cgi/lcount/count.cgi?page=3112&name=wing311.exe&downex=wing311a.exe)
39 get gogo.h files from Gogo noCoder source(http://www.marinecat.net/cgi/lcount/count.cgi?page=3111&name=petit311-src.lzh&downex=petit311.lzh)
40 move gogo.h gogo\include\gogo
41 move gogo.dll gogo\lib
42 make export libraries
43 pexports gogo.dll >gogo.def
44 dlltool --dllname gogo.dll --input-def gogo.def --output-lib libgogo.a
45 set environment variables in batch file like this.
46 REM GOGO
47 set PATH=\usr\local\gogo\bin;\usr\local\gogo\lib;%PATH%
48 set C_INCLUDE_PATH=/usr/local/gogo/include:%C_INCLUDE_PATH%
49 set LD_LIBRARY_PATH=/usr/local/gogo/lib:%LD_LIBRARY_PATH%
50 2-4)flac(http://flac.sourceforge.net/)
51 Get "http://downloads.sourceforge.net/flac/flac-1.2.1-devel-win.zip" and extract it.
52 Change include\*\export.h line 58 as following
53 (export.h)
54 58 #if defined(FLAC__NO_DLL) || !defined(_MSC_VER) \
55 || !defined(__BORLANDC__) || !defined(__CYGWIN32__) || !defined(__MINGW32__)
56 set environment variables in batch file like this.
57 REM FLAC
58 set PATH=\usr\local\flac-1.2.1-devel-win\lib;;%PATH%
59 set C_INCLUDE_PATH=/usr/local/flac-1.2.1-devel-win/include:%C_INCLUDE_PATH%
60 set LD_LIBRARY_PATH=/usr/local/flac-1.2.1-devel-win/bin:%LD_LIBRARY_PATH%
61
62 2-5)portaudio(http://www.portaudio.com/)
63 Download portaudio v1.19. and extarct it.
64 Move portaudio.h to include path.
65 Get portaudio.dll from Csound5.08.2-gnu-win32-f.exe(http://sourceforge.net/project/showfiles.php?group_id=81968).
66 Rename portaudio.dll to libportaudio.dll and move it to library path.
67 Only portaudo.h is needed for compiling TiMidity++.
68
69(3)Make TiMidity++ binaries
70 3-1)timw32g.exe
71 (configure)
72 CFLAGS="-O2" ./configure --enable-network --enable-w32gui --enable-spline=gauss \
73 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
74 (make)
75 make
76 strip timidity.exe
77 mv timidity.exe timw32g.exe
78 3-2)twsyng.exe
79 (configure)
80 CFLAGS="-O2" ./configure --enable-network --enable-winsyng --enable-spline=linear \
81 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
82 (make)
83 make
84 strip timidity.exe
85 mv timidity.exe twsyng.exe
86
87 3-3)twsynsrv.exe
88 (configure)
89 CFLAGS="-O2" ./configure --enable-network --enable-winsyng --enable-spline=linear \
90 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
91 add config.h following line
92 #define TWSYNSRV 1
93 (make)
94 make
95 strip timidity.exe
96 mv timidity.exe twsynsrv.exe
97
98 3-4)timidity.exe
99 (configure)
100 CFLAGS="-O2" ./configure --enable-interface=ncurses,vt100,winsyn --enable-network --enable-spline=linear \
101 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
102 (make)
103 make
104 strip timidity.exe
105 3-5)timiditydrv.dll
106 (configure)
107 CFLAGS="-O2" ./configure --enable-winsyn --enable-windrv --enable-spline=linear \
108 --enable-audio=w32,portaudio
109 (make)
110 make
111 cd windrv
112 strip timiditydrv.dll
113
114
1152.Turbo C++ in Msys environment
116
117(1)Setup BorlandC and MSYS
118 1)Setup BorlandC
119 Downlod Turbo C++ Explorer(http://www.codegear.com/jp/downloads/free/turbo)
120 Write bcc32.cfg and ilink 32.cfg.
121 (bcc32.cfg)
122 -IC:\Borland\BDS\4.0\include
123 -LC:\Borland\BDS\4.0\lib
124 -LC:\Borland\BDS\4.0\lib\psdk
125 -DWINVER=0x0400
126 -D_WIN32_WINNT=0x0400
127 (ilink32.cfg )
128 -LC:\Borland\BDS\4.0\lib;C:\Borland\BDS\4.0\lib\psdk
129 ** Caution !! **
130 Folder name which include '-'s is not acceptable.
131 ilink32 can't understand such folder name.
132 2)Setup MSYS (See MingwWiki(http://mingw.sourceforge.net/MinGWiki/))
133 Remove mingw path from /etc/fstab.
134 Add fllowing line at the top of Msys.bat and create bcc_env.bat.
135 set PATH=C:\Borland\BDS\4.0\bin;%PATH%
136
137(2)Setup needed libraries
138 2-0-1)implib.exe(to make import library from dll)
139 implib -a -c xxx.lib xxx.dll
140 2-0-2)coff2omf.exe(VCC library to BCC library)
141 coff2omf xxxx.lib xxx_bcpp.lib.
142
143 2-1)pdcurses
144 pdcurses-2.6.0-src.tar.bz2 from Mingw(http://sourceforge.net/project/showfiles.php?group_id=2435)
145 and make them.
146 rename pdcurses.lib libpdcurses.lib
147 Add include path and library path bcc32.cfg.
148 Add library path in ilink32.cfg
149 2-2)oggvorbis(http://www.vorbis.com/)
150 get OggVorbis-win32sdk-1.0.1.zip and extract it.
151 Add include path and library path bcc32.cfg.
152 Add library path in ilink32.cfg
153 Only hederfiles are need for compiling TiMidity++
154 2-3)gogo no coder(http://www.marinecat.net/mct_top.htm)
155 get gogo.dll from Gogo no Coder(http://www.marinecat.net/cgi/lcount/count.cgi?page=3112&name=wing311.exe&downex=wing311a.exe)
156 get gogo.h files from Gogo no Coder source(http://www.marinecat.net/cgi/lcount/count.cgi?page=3111&name=petit311-src.lzh&downex=petit311.lzh)
157 move gogo.h gogo\include\gogo
158 (for timidity gogo.lib is not necessary)
159 Add include path and library path bcc32.cfg.
160 Add library path in ilink32.cfg
161 Only hederfiles are need for TiMidity++
162 2-5)flac(http://flac.sourceforge.net/)
163 get "http://downloads.sourceforge.net/flac/flac-1.2.1-devel-win.zip" and extract it.
164 Change include\*\export.h line 58 as following
165 (export.h)
166 58 #if defined(FLAC__NO_DLL) || !defined(_MSC_VER) \
167 || !defined(__BORLANDC__) || !defined(__CYGWIN32__) || !defined(__MINGW32__)
168 Add include path and library path bcc32.cfg.
169 Add library path in ilink32.cfg
170 2-6)portaudio(http://www.portaudio.com/)
171 I don't know how to comple portaudio with bcc commandline tools.
172 Only portaudio.h is needed for compiling TiMidity++.
173 You can get portaudio.dll from Csound5.08.2-gnu-win32-f.exe(http://sourceforge.net/project/showfiles.php?group_id=81968).
174
175(3)Make TiMidity++ binaries
176 3-0) perl -pe 's/CC\s-o\s\S\S*\s/CC /g' configure >configure_bc
177 ( -o xxxx options are not work correctly with BCC)
178
179 3-1)timw32g.exe
180 (configure)
181 CC="bcc32" CPP="cpp32" CFLAGS="" ./configure_bc --enable-w32gui --enable-spline=gauss \
182 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
183 (make)
184 make
185 mv timidity.exe timw32g.exe
186 3-2)twsyng.exe
187 (configure)
188 CC="bcc32" CPP="cpp32" CFLAGS="" \
189 ./configure_bc --enable-network --enable-winsyng --enable-spline=linear \
190 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
191 (make)
192 make
193 mv timidity.exe twsyng.exe
194 3-3)twsynsrv.exe
195 (configure)
196 CC="bcc32" CPP="cpp32" CFLAGS=""\
197 ./configure_bc --enable-network --enable-winsyng --enable-spline=linear \
198 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
199 add config.h following line
200 #define TWSYNSRV 1
201 (make)
202 make
203 mv timidity.exe twsynsrv.exe
204 3-4)timidity.exe
205 (configure)
206 CC="bcc32" CPP="cpp32" CFLAGS="" \
207 ./configure_bc --enable-interface=vt100,winsyn,ncurses --enable-network --enable-spline=linear \
208 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
209 (make)
210 make
211 3-5)timiditydrv.dll
212 (configure)
213 CC="bcc32" CPP="cpp32" CFLAGS="" \
214 ./configure_bc --enable-winsyn --enable-windrv --enable-spline=linear \
215 --enable-audio=w32,portaudio
216 (make)
217 make
218
219
2203.OpenWatcom C++ in Msys environment
221
222(1)OpenWatcom and MSYS
223 1)Set OpenWatcom(http://www.openwatcom.org)
224 1-1)Download OpenWatcom, install and configure them
225 1-2)Download Microsoft Platform SDK install and configure them.
226 Replace rc.exe of OpenWatom with the one of Platform SDK's one.
227 or get wrc.exe from wine-prgs-0.9.5.zip(http://www.winehq.com/), and rename rc.exe
228 (OpenWatcom's rc.exe can't use).
229 2)Setup Mngw and MSYS (See MingwWiki(http://mingw.sourceforge.net/MinGWiki/))
230 Remove mingw path from /etc/fstab.
231 Add fllowing line at the top of Msys.bat and create wcc_env.bat.
232 call wcc_env.bat
233 wcc_env.bat is like follow ing
234 @echo off
235 set LIB=
236 set INCLUDE=
237 call i:\watcom\setvars.bat
238 ----
239 ( setteing of various env. val. s )
240 ----
241(2)Setup needed libraries(The wcc386 option -5s is recomended !! Because of TiMidity++ compatibility.!!)
242 2-0) make import Libray from dll
243 mlib -n -b out.lib in.dll
244 2-1)pdcurses
245 Get pdcurses-2.5.0 from GnuWin32(http://sourceforge.net/projects/gnuwin32/)
246 and make import Libraries from dlls.
247 "libpdcurses.lib" is needed (not pdcurses.lib).
248 Move curses.h to include path and libpdcurses.lib libarary path.
249 2-2)oggvorbis(http://www.vorbis.com/)
250 Get OggVorbis-win32sdk-1.0.1.zip and extract it.
251 Edit include\ogg\os_types.h.
252 (os_types.h)
253 29 # if defined(__WATCOMC__)
254 30 /* MSVC/Borland */
255 31 typedef __int64 ogg_int64_t;
256 32 typedef int ogg_int32_t;
257 33 typedef unsigned int ogg_uint32_t;
258 34 typedef short ogg_int16_t;
259 35 typedef unsigned short ogg_uint16_t;
260 36 # else
261 -----
262 52 # endif
263 Make inport Libraries from dll
264 Set environment variables in batch file like this.
265 REM OggVorbis
266 set PATH=\usr\local\oggvorbis-win32sdk-1.0.1_wcc\bin;\usr\local\oggvorbis-win32sdk-1.0.1_wcc\lib;%PATH%
267 set C_INCLUDE_PATH=/usr/local/oggvorbis-win32sdk-1.0.1_wcc/include:%C_INCLUDE_PATH
268 set LIB=\usr\local\oggvorbis-win32sdk-1.0.1_wcc\lib:%LIB%
269 Only *.h files are needed for TiMidity++.
270 2-3)gogo no coder(http://www.marinecat.net/mct_top.htm)
271 Get gogo.dll from Gogo no Coder(http://www.marinecat.net/cgi/lcount/count.cgi?page=3112&name=wing311.exe&downex=wing311a.exe)
272 Get gogo.h files from Gogo noCoder source(http://www.marinecat.net/cgi/lcount/count.cgi?page=3111&name=petit311-src.lzh&downex=petit311.lzh)
273 Move gogo.h gogo\include\gogo
274 (for timidity gogo.lib not necessary)
275 Set environment variables in batch file like this.
276 REM GOGO
277 set PATH=\usr\local\gogo_wcc\bin;\usr\local\gogo_wcc\lib;%PATH%
278 set C_INCLUDE_PATH=/usr/local/gogo_wcc/include:%C_INCLUDE_PATH%
279 set LIB=\usr\local\gogo_wcc\lib:%LIB%
280 Only *.h files are needed for compiling TiMidity++.
281 2-5)flac(http://flac.sourceforge.net/)
282 get "http://downloads.sourceforge.net/flac/flac-1.2.1-devel-win.zip" and extract it.
283 make inport Libraries from dll
284 set environment variables in batch file like this.
285 REM FLAC
286 set PATH=\usr\local\flac-1.2.1-win_wcc\bin;%PATH%
287 set C_INCLUDE_PATH=/usr/local/flac-1.2.1-win_wcc/include:%C_INCLUDE_PATH%
288 set LIB=\usr\local\flac-1.2.1-win_wcc\bin:%LIB%
289 Only *.h files are needed for compiling TiMidity++.
290 2-6)portaudio(http://www.portaudio.com/)
291 I don't know how to comple portaudio with OpenWatcom commandline tools.
292 Only port audio.h is needed for compling TiMidity++.
293 You can get portaudio.dll from Csound5.08.2-gnu-win32-f.exe(http://sourceforge.net/project/showfiles.php?group_id=81968).
294
295(3)Make TiMidity++ binaries
296 3-0-1)wcc386_w.sh & wpp386_w.sh( They are in scripts/directory )
297 Wcc386 is not familier to GNU autoconf tools,
298 Use my wrapper wcc386_w.sh, instead of wcc386.exe
299 3-1)timw32g.exe
300 (configure)
301 CC="wcc386_w.sh" CPP="wcc386_w.sh -p" CFLAGS="-d0 -obll+riemcht" \
302 ./configure --enable-network --enable-w32gui --enable-spline=gauss \
303 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio \
304 --disable-oggtest --disable-vorbistest --disable-libFLACtest --disable-libOggFLACtest
305 (make)
306 make
307 mv timidity.exe timw32g.exe
308 3-2)twsyng.exe
309 (configure)
310 CC="wcc386_w.sh" CPP="wcc386_w.sh -p" CFLAGS="-d0 -obll+riemcht" \
311 ./configure --enable-network --enable-winsyng --enable-spline=linear \
312 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio \
313 --disable-oggtest --disable-vorbistest --disable-libFLACtest --disable-libOggFLACtest
314 (make)
315 make
316 mv timidity.exe twsyng.exe
317 3-3)twsynsrv.exe
318 (configure)
319 CC="wcc386_w.sh" CPP="wcc386_w.sh -p" CFLAGS="-d0 -obll+riemcht" \
320 ./configure --enable-network --enable-winsyng --enable-spline=linear \
321 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio \
322 --disable-oggtest --disable-vorbistest --disable-libFLACtest --disable-libOggFLACtest
323 add config.h following line
324 #define TWSYNSRV 1
325 (make)
326 make
327 mv timidity.exe twsynsrv.exe
328 3-4)timidity.exe
329 (configure)
330 CC="wcc386_w.sh" CPP="wcc386_w.sh -p" CFLAGS="-d0 -obll+riemcht" \
331 ./configure --enable-interface=ncurses,vt100,winsyn --enable-network --enable-spline=linear \
332 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio \
333 --disable-oggtest --disable-vorbistest --disable-libFLACtest --disable-libOggFLACtest
334 (make)
335 make
336 3-5)timiditydrv.dll
337 (configure)
338 CC="wcc386_w.sh" CPP="wcc386_w.sh -p" CFLAGS="-d0 -obll+riemcht" \
339 ./configure --enable-winsyn --enable-windrv --enable-spline=linear \
340 --enable-audio=w32,portaudio
341 (make)
342 make
343
344
3454.Visual C++ in Msys environment
346
347(1)Setup VisualC++ and MSYS
348 1)Setup Visual C++
349 Download
350 Visual C++ 2008 Express Edition(http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx)
351 Microsoft Platform SDK
352 install and configure them.
353
354 2)Setup Mngw and MSYS (See MingwWiki(http://mingw.sourceforge.net/MinGWiki/))
355 Remove mingw path from /etc/fstab.
356 Add fllowing line at the top of Msys.bat and create bcc_env.bat.
357 call vc_msys_env.bat
358 vc_msys_env.bat is like follow ing
359 @echo off
360 call c:\"Program Files\Microsoft Platform SDK"\SetEnv.Cmd /2000 /RETAIL
361 call c:"\Program Files\Microsoft Visual Studio 9.0"\Common7\Tools\vsvars32.bat
362
363 Set INCLUDE=c:\DXSDK\include;%INCLUDE%
364 Set LIB=c:\DXSDK\lib;%LIB%
365
366 ----
367 ( setteing of various env. val. s )
368 ----
369(2)Setup needed libraries
370 2-1)pdcurses
371 pdcurses-2.6.0-src.tar.bz2 from Mingw(http://sourceforge.net/project/showfiles.php?group_id=2435)
372 and make them.
373 rename pdcurses.lib libpdcurses.lib
374 move curses.h to include path and libpdcurses.lib libarary path.
375 2-2)oggvorbis(http://www.vorbis.com/)
376 get OggVorbis-win32sdk-1.0.1.zip and extract it.
377 set environment variables in batch file like this.
378 REM OggVorbis
379 set PATH=\usr\local\oggvorbis-win32sdk-1.0.1\bin;\usr\local\oggvorbis-win32sdk-1.0.1\lib;%PATH%
380 set C_INCLUDE_PATH=/usr/local/oggvorbis-win32sdk-1.0.1/include:%C_INCLUDE_PATH
381 set LIB=\usr\local\oggvorbis-win32sdk-1.0.1\lib:%LIB%
382
383 2-3)gogo no coder(http://www.marinecat.net/mct_top.htm)
384 Get gogo.dll from Gogo no Coder(http://www.marinecat.net/cgi/lcount/count.cgi?page=3112&name=wing311.exe&downex=wing311a.exe)
385 Get gogo.h files from Gogo noCoder source(http://www.marinecat.net/cgi/lcount/count.cgi?page=3111&name=petit311-src.lzh&downex=petit311.lzh)
386 Move gogo.h gogo\include\gogo
387 (for timidity gogo.lib not necessary)
388 Set environment variables in batch file like this.
389 REM GOGO
390 set PATH=\usr\local\gogo\bin;\usr\local\gogo\lib;%PATH%
391 set C_INCLUDE_PATH=/usr/local/gogo/include:%C_INCLUDE_PATH%
392 set LIB=\usr\local\gogo\lib:%LIB%
393 2-5)flac(http://flac.sourceforge.net/)
394 Get "http://downloads.sourceforge.net/flac/flac-1.2.1-devel-win.zip" and extract it.
395 Set environment variables in batch file like this.
396 REM FLAC
397 set PATH=\usr\local\flac-1.2.1-win\bin;;%PATH%
398 set C_INCLUDE_PATH=/usr/local/flac-1.2.1-win/include:%C_INCLUDE_PATH%
399 set LIB=\usr\local\flac-1.2.1-win\bin:%LIB%
400 2-6)portaudio(http://www.portaudio.com/).
401 I don't know how to comple portaudio with vc commandline tools.
402 But for compling TiMidity++ only portaudio.h is needed.
403 You can get portaudio.dll from Csound5.08.2-gnu-win32-f.exe(http://sourceforge.net/project/showfiles.php?group_id=81968).
404
405(3)Make TiMidity++ binaries
406 3-1)timw32g.exe
407 (configure)
408 CC="cl" CPP="cl.exe -EP" CFLAGS="-O2" \
409 ./configure --enable-network --enable-w32gui --enable-spline=gauss \
410 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
411 (make)
412 make
413 mv timidity.exe timw32g.exe
414 3-2)twsyng.exe
415 (configure)
416 CC="cl" CPP="cl.exe -EP" CFLAGS="-O2" \
417 ./configure --enable-network --enable-winsyng --enable-spline=linear \
418 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
419 (make)
420 make
421 mv timidity.exe twsyng.exe
422 3-3)twsynsrv.exe
423 (configure)
424 CC="cl" CPP="cl.exe -EP" CFLAGS="-O2"\
425 ./configure --enable-network --enable-winsyng --enable-spline=linear \
426 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
427 add config.h following line
428 #define TWSYNSRV 1
429 (make)
430 make
431 mv timidity.exe twsynsrv.exe
432 3-4)timidity.exe
433 (configure)
434 CC="cl" CPP="cl.exe -EP" CFLAGS="-O2" \
435 ./configure --enable-interface=ncurses,vt100,winsyn --enable-network --enable-spline=linear \
436 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
437 (make)
438 make
439 3-5)timiditydrv.dll
440 (configure)
441 CC="cl" CXX="cl" CPP="cl.exe -EP" CFLAGS="-O2" \
442 ./configure --enable-winsyn --enable-windrv --enable-spline=linear \
443 --enable-audio=w32,portaudio
444 (make)
445 make
446
447
4485.Digital Mars in Msys environment
449
450(1) Digtal Mars & MSYS
451 1) Installing up Digtal Mars(http://www.digitalmars.com/)
452 1-1) Download Digtal Mars.
453 2-2) replace rc.exe by that from Microsoft Platform SDK.
454 �i rc.exe included Digital Mars package is not suitable for compiling TiMidity.�j
455 2)Setting up MSYS(http://sourceforge.net/projects/mingw/�@http://mingw.sourceforge.net/MinGWiki/))
456 Remove mingw concening path from "/etc/fstab".
457 Make dm_env.bat(like following file) is called msys.bat.
458 (Add top of msys.bat�j
459 call dm_env.bat
460 (dm_env.bat example�j
461 set LIB=
462 set INCLUDE=
463
464 Set PATH=i:\dm\bin;%PATH%
465 Set INCLUDE=i:\dm\include;i:\dm\include\win32;%INCLUDE%
466 Set LIB=i:\dm\lib;%LIB%
467
468 Set PATH=i:\usr\local\gogo\bin;%PATH%
469 Set INCLUDE=i:\usr\local\gogo\include;%INCLUDE%
470 Set LIB=i:\usr\local\gogo\lib;%LIB%
471 �i�����j
472 ----
473(2) Setup Various Libraries
474 2-0) How to make import libraries from dlls
475 implib out.lib in.dll
476 2-1) pcurses
477 "Get pdcurses-2.5.0" from GnuWin32(http://sourceforge.net/projects/gnuwin32/).
478 Change curses.h as following
479 281 #if defined( _MSC_VER )|| defined(__DMC__) /* defined by compiler */
480 977 #if !defined(PDC_STATIC_BUILD) && (defined(_MSC_VER) || defined(__DMC__))&& defined(WIN32) && !defined(CURSES_LIBRARY)
481 988 # if !defined(PDC_STATIC_BUILD) && (defined(_MSC_VER) || defined(__DMC__)) && defined(WIN32)
482 Make import library with system option as follows.
483 $implib /system libpdcurses.lib pdcurses.dll
484 Change name of pccurses.lil to libpdcuses.lib/
485
486 2-2) oggvorbis(http://www.vorbis.com/)
487 Use "OggVorbis-win32sdk-1.0.1.zip".
488 Edit include\ogg\os_types.h as follows.
489 (os_types.h)
490 36 # elif defined(__MINGW32__) || defined(__DMC__)
491 Make import libraries from dlls
492
493 2-3) Gogo no Coder (mp3 encoding dll) (http://www.marinecat.net/mct_top.htm)
494 Get gogo.dll from Gogo no Coder(http://www.marinecat.net/cgi/lcount/count.cgi?page=3112&name=wing311.exe&downex=wing311a.exe)
495 Get gogo.h files from Gogo noCoder source(http://www.marinecat.net/cgi/lcount/count.cgi?page=3111&name=petit311-src.lzh&downex=petit311.lzh)
496 Make gogo.lib from gogo.dll
497 Move gogo.h gogo\include\gogo
498 Move gogo.dll libgogo.a gogo\lib
499
500 2-4) flac(http://flac.sourceforge.net/)
501 Use "http://downloads.sourceforge.net/flac/flac-1.2.1-devel-win.zip"
502 Edit line 58 of include\*\export.h s.
503 (export.h)
504 58 #if defined(FLAC__NO_DLL) || !defined(_MSC_VER) \
505 || !defined(__BORLANDC__) || !defined(__CYGWIN32__) || !defined(__MINGW32__) \
506 || !defined(__WATCOMC__) || !defined(__DMC__)
507 Make import libraries from dlls.
508
509 2-5) portaudio(http://www.portaudio.com/)
510 Only portaudio.h is required for compiling of TiMidity++
511 You can get portaudio.dll from Csound5.08.2-gnu-win32-f.exe(http://sourceforge.net/project/showfiles.php?group_id=81968).
512
513
514(3) Compiling TiMIdity++
515 3-0-1) "LF -> CRLF" conversion
516 $sh script/unix2dos.sh
517 3-0-1) perl -pe 's/CC\s-o\s\S\S*\s/CC /g' configure |perl -pe 's/CXX\s-o\s\S\S*\s/CXX /g' - >configure_dm
518 (because "-o xxxx" is not suitbable dmc.exe )
519 3-0-2) Get cpp.exe from Free Pascal Compiler(http://www.freepascal.org/),
520 and rename it as fpcpp.exe.
521 �ipreprocessor of dmc.exe is not compatible "gnu autotools"�j
522
523 3-1)timw32g.exe
524 (configure)
525 CC="dmc -Jm -w -mn -5 -o" CPP="fpcpp -D__NT__ -I/i/dm/include" \
526 ./configure_dm --enable-network --enable-w32gui --enable-spline=gauss \
527 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
528 (make)
529 make
530 mv timidity.exe timw32g.exe
531 3-2)twsyng.exe
532 (configure)
533 CC="dmc -Jm -w -mn -5 -o" CPP="fpcpp -D__NT__ -I/i/dm/include" \
534 ./configure_dm --enable-network --enable-winsyng --enable-spline=linear \
535 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
536 (make)
537 make
538 mv timidity.exe twsyng.exe
539 3-3)twsynsrv.exe
540 (configure)
541 CC="dmc -Jm -w -mn -5 -o" CPP="fpcpp -D__NT__ -I/i/dm/include" \
542 ./configure_dm --enable-network --enable-winsyng --enable-spline=linear \
543 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
544 add config.h �̍Ō�Ɉȉ��̍s��lj��B
545 #define TWSYNSRV 1
546 (make)
547 make
548 mv timidity.exe twsynsrv.exe
549 3-4)timidity.exe
550 (configure)
551 CC="dmc -Jm -w -mn -5 -o" CPP="fpcpp -D__NT__ -I/i/dm/include" \
552 ./configure_dm --enable-interface=ncurses,vt100,winsyn --enable-network --enable-spline=linear \
553 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
554 (make)
555 make
556 3-5)timiditydrv.dll
557 (configure)
558 CC="dmc -Jm -w -mn -5 -o" CPP="fpcpp -D__NT__ -I/i/dm/include" \
559 ./configure_dm --enable-interface=windrv,winsyn --enable-network --enable-spline=linear \
560 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
561 (make)
562 make
563 commentout timiditydrv.h 23:
564 23 //#error this stub requires an updated version of <rpcndr.h>
565 make
566
567
568
5696.Pelles C in Msys environment
570
571(1)Setting up Pelles C and MSYS
572 1) Pelles C
573 Get Pelles C from �ihttp://www.smorgasbordet.com/pellesc/).
574 �Q�jMSYS(http://sourceforge.net/projects/mingw/ http://mingw.sourceforge.net/MinGWiki/))
575 Remove pathes concerning with MINGW from "/etc/fstab".
576 Call new file "pocc_env.bat" from msys.bat.
577 (Top of msys.bat�j
578 call pocc_env.bat
579 ("vcc_env.bat" example�j
580 @echo off
581 call call c:\PellesC\bin\povars32.bat
582
583 Set INCLUDE=c:\DXSDK\include;%INCLUDE%
584 Set LIB=c:\DXSDK\lib;%LIB%
585 ... continue ...
586 ----
587(2) Setting up various libraries
588 2-1) pcurses
589 Get "pdcurses-2.6.0-src.tar.bz2" from "Mingw' web site", and compile it.
590 Rname pccurses.lib to libpdcuses.lib.
591
592 2-2) oggvorbis(http://www.vorbis.com/)
593 Get "OggVorbis-win32sdk-1.0.1.zip�h(http://www.vorbis.com/files/1.0.1/windows/OggVorbis-win32sdk-1.0.1.zip)
594
595 2-3) Gogo no Coder (mp3 encoding dll) (http://www.marinecat.net/mct_top.htm)
596 Get gogo.dll from Gogo no Coder(http://www.marinecat.net/cgi/lcount/count.cgi?page=3112&name=wing311.exe&downex=wing311a.exe)
597 Get gogo.h files from Gogo noCoder source(http://www.marinecat.net/cgi/lcount/count.cgi?page=3111&name=petit311-src.lzh&downex=petit311.lzh)
598 Make gogo.lib from gogo.dll
599 Move gogo.h gogo\include\gogo
600 Move gogo.dll libgogo.a gogo\lib
601
602 2-4) flac(http://flac.sourceforge.net/)
603 Use "http://downloads.sourceforge.net/flac/flac-1.2.1-devel-win.zip".
604 Edit "line 58"s of include\*\export.h as follows.
605 (export.h)
606 58 #if defined(FLAC__NO_DLL) || !defined(_MSC_VER) \
607 || !defined(__BORLANDC__) || !defined(__CYGWIN32__) || !defined(__MINGW32__) \
608 || !defined(__WATCOMC__) || !defined(__DMC__)
609
610 2-5) portaudio(http://www.portaudio.com/)
611 Only "portaudio.h" is requierd for compiling.
612 You can get portaudio.dll from Csound5.08.2-gnu-win32-f.exe(http://sourceforge.net/project/showfiles.php?group_id=81968).
613
614(3)Compiling TiMIdity++
615 3-0) perl -pe 's/CC\s-o\s\S\S*\s/CC /g' configure >configure_pocc
616 (" -o xxxx " in configure is not acceptable by pocc)
617 3-1)timw32g.exe
618 (configure)
619 CC="cc" CPP="pocc.exe -E" CFLAGS="-MT" ./configure_pocc \
620 --enable-network --enable-w32gui --enable-spline=gauss \
621 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
622 (make)
623 make
624 mv timidity.exe timw32g.exe
625 3-2)twsyng.exe
626 (configure)
627 CC="cc" CPP="pocc.exe -E" CFLAGS="-MT" ./configure_pocc \
628 --enable-network --enable-winsyng --enable-spline=linear \
629 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
630 (make)
631 make
632 mv timidity.exe twsyng.exe
633 3-3)twsynsrv.exe
634 (configure)
635 CC="cc" CPP="pocc.exe -E" CFLAGS="-MT" ./configure_pocc \
636 --enable-network --enable-winsyng --enable-spline=linear \
637 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
638 add config.h following line
639 #define TWSYNSRV 1
640 (make)
641 make
642 mv timidity.exe twsynsrv.exe
643 3-4)timidity.exe
644 (configure)
645 CC="cc" CPP="pocc.exe -E" CFLAGS="-MT" ./configure_pocc \
646 --enable-interface=ncurses,vt100,winsyn --enable-network --enable-spline=linear \
647 --enable-audio=w32,vorbis,gogo,ogg,flac,portaudio
648 (make)
649 make
650 3-5)timiditydrv.dll
651 (configure)
652 CC="cc" CPP="pocc.exe -E" CFLAGS="-MT" ./configure_pocc \
653 --enable-winsyn --enable-windrv --enable-spline=linear \
654 --enable-audio=w32,portaudio
655 (make)
656 make
657
658
6592008.4.10 Keishi Suenaga(skeishi@mutt.freemail.ne.jp)
660
README.xaw
1---------------------------------------------------------------------
2 HOW TO USE Xaw interface of TiMidity++
3
4Xaw interface of TiMidity prepares a GUI only with Athena Widget sets
5and Xt libraries that are standard toolkits of X Window System.
6
7
8* WHAT'S NEW in 2.14.0
9
10- Support for loading and saving playlists.
11- Vastly improved file dialog (Separate file/directory panes, filtering, etc.).
12- Scroll wheel support.
13- Supports Drag and Drop via the XDND protocol.
14- Tooltips for buttons are implemented.
15- Can mute individual channels in trace mode.
16- Fixed time thumb. Now it can also be used to change the position in the midi.
17- Support displaying more than 16 channels.
18- Many many bugs fixed and other small improvments.
19
20* INSTALLATION
21
22The xaw interface is compiled by passing either "--enable-interface=xaw"
23or "--enable-dynamic=xaw" as parameters for the configure script.
24TiMidity++ ordianary install will than contain the xaw interface.
25
26The are several ways to configure the xaw interface before compilation:
27
28A) Some parameters can be passed to GNU configure to modify the xaw
29interface. Namely:
30
31--with-xawlib=<comma delimetered list of toolkit names>
32--with-xaw-resource-prefix=<prefix to resource dir>
33--enable-xdnd, --disable-xdnd
34--enable-offix, --disable-offix
35
36--with-xawlib:
37
38TiMidity++ supports multiple Xaw toolkits. By default it searches for them
39in this order: xaw3d, xaw. If you wish to force compilation
40with a specific toolkit, provide the --with-xawlib=<name> parameter to
41configure, e.g.:
42
43 ./configure --enable-interface=xaw --with-xawlib=xaw
44
45or even:
46
47 ./configure --enable-interface=xaw --with-xawlib=neXtaw,xaw3d,XawPlus,xaw
48
49 to force a different search order.
50
51--enable-xdnd, --enable-offix, --disable-xdnd, --disable-offix
52
53Enable/Disable support for XDND/Offix drag and drop protocols. By default
54both are disabled.
55
56--with-xaw-resource-prefix=<prefix>
57
58Optional parameter. If passed, timidity will try to install the resource files
59to <prefix>/app-defaults/ and <prefix>/ja_JP.EUCJP/app-defaults.
60
61B) The xaw.h and x_trace.h files can be edited as well to change some options:
62
63If you want to use Label Widget for lyrics as in version 1.1,
64remove /* */ so that this line is visible:
65
66 #define WIDGET_IS_LABEL_WIDGET
67
68Although $(HOME)/.xtimidity will be regarded as an initial personal
69configuration file, you can rename it by changing the line;
70
71 #define INITIAL_CONFIG ".xtimidity"
72
73If you'd like to see more/less than 16 channels in one screen when in
74trace mode, change
75
76 #define D_VISIBLE_CHANNELS 16
77
78in x_trace.h.
79
80(There's a way to change that after compilation: changing the traceHeight
81resource will change the number of visible channels in one screen.)
82
83!!! NOTE !!!
84Don't forget to make clean before build if these files are edited.
85
86* USAGE
87
88Xaw interface shows the following file menu:
89
90 LOAD
91 Load a new MIDI file.
92
93 SAVE
94 Save the currently shown MIDI file.
95
96 LOAD PLAYLIST
97 Loads a playlist.
98
99 SAVE PLAYLIST
100 Saves a playlist.
101
102 SAVE CONFIG
103 Save the current settings and modes e.g. shuffle,
104 repeat, auto-start and auto-exit flags to ~/.xtimidity .
105
106 HIDE/UNHIDE MESSAGES
107 Toggles displaying text widget showing messages and lyrics.
108
109 HIDE/UNHIDE TRACE
110 Toggles trace canvas.
111
112 SHUFFLE
113 Toggles shuffle flag.
114
115 REPEAT
116 Toggle repeat flag.
117
118 AUTO-START
119 Toggle auto-start flag.
120
121 AUTO-EXIT
122 Toggle auto-exit flag to exit or not after all songs are over.
123
124 FILE LIST
125 Popup the playing file list window.
126
127 EXTEND MODES
128 Popup the extend mode control window.
129
130 ABOUT
131 Information about Xaw interface of TiMidity++.
132
133 QUIT
134 terminate timidity.
135
136From ver.1.3, File Load and File List menues that enabled to add and/or
137delete playing list. You can append or delete arbitrary files from file
138browser. To play a file, you can select it by either of pull-down menu
139on the title bar or File List window.
140The shortcut key actions on each window are as follows:
141
142<Main Window>
143 [Enter] or [r] : Start Playing
144 [Space] : Pause / Start Again
145 [a] : Show about window
146 [l] : Show file list
147 [s] : Stop Playing
148 [q] : Quit TiMidity++
149 [p] or [Left] : Previous File
150 [n] or [Right] : Next File
151 [v] or [Down] : Volume Down (10%)
152 [V] or [Up] : Volume Up (10%)
153 [<] : Slower tempo
154 [>] : Faster tempo
155 [-] : Lower pitch
156 [+] : Raise pitch
157 [Alt + F], [z] : Show main menu
158 [Alt + N] : Load Files
159 [Ctrl + V] : Save File
160 [Alt + L] : Load Playlist
161 [Alt + P] : Save Playlist
162 [Alt + S] : Save settings to ~/.xtimidity
163 [Ctrl + M] : Hide/Show Messages
164 [Ctrl + T] : Hide/Show Trace canvas
165 [Ctrl + S] : Toggles Shuffle state
166 [Ctrl + R] : Toggles Repeat state
167 [Ctrl + D] : Toggles Tooltips
168 [Ctrl + O] : Show options window
169 [g] : Turns on/off spectrogram (if timidity was compiled
170 with --enable-spectrogram)
171
172<File List Window>
173 [p] or [Up] : Move the cursor to the previous file
174 [n] or [Down] : Move the cursor to the next file
175 [Right] : Move the cursor 5 lines backward
176 [Left] : Move the cursor 5 lines forward
177 [v] : Volume Down (10%)
178 [V] : Volume Up (10%)
179 [Enter] or [R] : Start Playing the selected file
180 [d] : Delete the selected file entry
181 [A] : Delete all entries
182 [Space] : Pause / Start Again
183 [s] : Stop Playing
184 [q] : Quit TiMidity++
185 [c] : Close the window
186 [ESC] : Close the window
187
188<Extend Mode Window>
189 [c] : Close the window
190 [ESC] : Close the window
191 [q] : Quit TiMidity++
192
193<Dialog in Load File Window>
194 [Tab] : File or directory completion
195 [Enter] : Select the directory entries
196 [Alt-Enter] : Selects all visible files
197 [Escape] or [CTRL]+[g] : Cancel and close the window
198 [Ctrl-a] : Move the cursor to the top
199 [Ctrl-e] : Move the cursor to the line-end
200 [Ctrl-k] : Delete strings after the cursor
201 [Ctrl-`] : Turn on filter
202By entering a string containing a wildcard in the dialog, the filter will
203be turned on, only displaying the matching files (case-insensitive). e.g.
204*.mid shows all filenames ending in '.mid', '.MID', etc.
205[AB]* shows all filenames beginning with 'a','A','b' or 'B'.
206[!c]* shows all filenames not starting with 'c'.
207
208* TRACE MODE
209Specify the interface option flag 't' in command line like as
210'timidity -iat' when you execute TiMidity (see timidity man page).
211You can see a funny movements of volume, expression, panning,
212pitchbending, reverb, chorus and voices et cetera of each channel on the
213trace canvas. Click left mouse button on the trace screen and you can
214toggle trace screen between 'pitchbend and instrument' or 'tonebank,
215reverb and chorus'. Click right mouse button and you can (un)mute a channel.
216Click middle mouse button, and you can play a channel solo.
217Wheel or 'j' key can scroll the trace to see more channels than the usual
21816 channels. If the trace is too tall for your resolution, simply set
219the traceHeight resource to a lower value.
220
221* RESOURCES
222
223Application class name is 'TiMidity', so specity resources in
224.Xdefaults or .Xresources in your home directory as follows for example;
225
226 TiMidity*textbackground: LemonChiffon
227 TiMidity*background: PeachPuff1
228 TiMidity*menubutton: goldenrod
229 TiMidity*buttonbackground: gold
230 TiMidity*labelfont: -adobe-helvetica-bold-o-*-*-14-*-75-75-*-*-*-*
231
232Application specific resources supported by TiMidity are listed below:
233
234Name Class Default
235----------------------------------------------------------
236arrangeTitle ArrangeTitle False
237 Show MIDI titles on the title bar of the main window.
238background Background gray65
239 Background color of the main window.
240menubutton MenuButtonBackground #CCFF33
241 Menu button color.
242textbackground TextBackground gray85
243 Background color of Text Widget.
244toggleforeground ToggleForeground MediumBlue
245 Foreground color of toggle buttons.
246buttonforeground ButtonForeground blue
247 Foreground color of command buttons and other transient windows.
248buttonbackground ButtonBackground gray76
249 Background color of command buttons and other transient windows.
250text2background Text2Background gray80
251 Background color of labels in file dialogs.
252
253labelfont FontSet -adobe-helvetica-bold-r-*-*-14-*-75-75-*-*-*-*
254 Label widget font.
255volumefont FontSet -adobe-helvetica-bold-r-*-*-12-*-75-75-*-*-*-*
256 Volume Label font.
257textfontset FontSet -*-*-medium-r-normal--14-*-*-*-*-*-*-*
258 Text font for message box and so on.
259ttitlefont FontSet -*-fixed-medium-r-normal--14-*-*-*-*-*-*-*
260 MIDI title font at the bottom of trace window.
261textHeight TextHeight 120
262 Height of the lyric widget (is 30 if WIDGET_IS_LABEL_WIDGET is defined).
263menuWidth MenuWidth 200
264 Width of popup menu.
265moreString String More...
266 Label of submenus on the pop-up menu.
267fileLabel String file...
268 Title of main menu.
269noPlaying String [ No Playing File ]
270 String appended to title when no file is being played.
271popup_confirm_title String Dialog
272 Title of confirm boxes.
273
274These resources are used only in trace mode:
275
276Name Class Default
277----------------------------------------------------------
278tracefont FontSet -*-*-medium-r-normal--14-*-*-*-*-*-*-*
279 Trace window font.
280traceWidth TraceWidth 627
281 Width of trace widget.
282traceHeight TraceHeight 332
283 Height of trace widget.
284tracebackground TraceBackground gray90
285 Background color of trace canvas.
286velforeground VelForeground orange
287 Color of bar in 'vel' (velocity) column for 'normal' channels.
288veldrumforeground VelDrumForeground red
289 Color of bar in 'vel' column, when the channel is a drum channel.
290volforeground VolForeground LightPink
291 Color of bar in 'vol' column.
292expforeground ExpForeground aquamarine
293 Color of bar in 'expr' column.
294panforeground PanForeground blue
295 Color of triangle in pan column.
296rimcolor RimColor gray20
297 Color of the border between channel bars.
298boxcolor BoxColor gray76
299 Color of the channel bars.
300captioncolor CaptionColor DarkSlateGrey
301 Color of text in the trace widget.
302whitekeycolor WhiteKeyColor white
303 Color of white keys in keyboard.
304blackkeycolor BlackKeyColor black
305 Color of black keys in keyboard.
306playingkeycolor PlayingKeyColor maroon1
307 Color of played key in keyboard.
308sustainedkeycolor SustainedKeyColor red4
309 Color of sustained key in keyboard.
310reverbcolor ReverbColor PaleGoldenrod
311 Color of bar in reverb column.
312choruscolor ChorusColor yellow
313 Color of bar in chorus column.
314untitled String <No title>
315 String used in foot when no file is being played.
316
317Note that all font resource are of type FontSet.
318Also traceWidth setting does not work yet.
319
320!!! NOTE !!!
321Some resource files were attached to TiMidity++1.3.6 or later.
322If you create a resource file of another locale except English or
323Japanese, please mail it to the timidity mailing list
324<timidity-talk@lists.sourceforge.net>.
325After building TiMidity++, put TiMidity.ad into the resources directory
326such as;
327 $(X11R6)/lib/X11/app-defaults
328And put TiMidity-uj.ad, which is the Japanese-EUC resource file into;
329 $(X11R6)/lib/X11/$(LANG)/app-defaults
330For example, those are as follows if the Japanese-EUC locale of your
331system is ja_JP.EUC as FreeBSD;
332 # cp TiMidity.ad /usr/X11R6/lib/X11/app-defaults/TiMidity
333 # cp TiMidity-uj.ad /usr/X11R6/lib/X11/app-defaults/ja_JP.EUC/TiMidity
334
335* SETTINGS FILE
336 ~/.xtimidity contains settings which are used by the xaw interface.
337 When "SAVE CONFIG" is selected, timidity will save the current configuration
338 to the file.
339
340 The file has a simple format. Each line begins with "set", than an option name,
341 followed by the option's value.
342 The options are:
343
344Name Allowed Values Default
345----------------------------------------------------------
346RepeatPlay 0/1 0
347 Repeat playing the playlist after the last file was played.
348ShufflePlay 0/1 0
349 Play the playlist in a random order.
350ExtOptions 0-63 Depends on compliation options.
351 Enable various sequencer extensional modes (see options window for list).
352ChorusOption 0/1 Depends on compliation options.
353 Enable chorus.
354CurVol 0-800 70
355 Initial volume.
356Showdotfiles 0/1 0
357 Show files and directories beginning with '.' in the file dialog.
358DefaultDir a valid dir name. The user's home directory.
359 The directory first displayed in the file dialog.
360Disp:trace 0/1 0
361 Always start in trace mode.
362Disp:text 0/1 1
363 Display the lyrics/messages widget at startup.
364Tooltips 0/1 1 [1]
365 Display tooltips for buttons.
366Autostart 0/1 1
367 Start playing immediately when the interface is started.
368AutoExit 0/1 0
369 Exit after playing has stopped.
370ConfirmExit 0/1 0
371 Confirm exit from interface if user tries to close it.
372SaveList 0/1 1
373 Save playlist to ~/.xtimidity when saving configuration. If Autostart is 1,
374 it will begin playing immediately when timidity is next started.
375SaveConfig 0/1 1
376 Save config at exit.
377File a valid file name. None
378 This file will be loaded at next start. If SaveList is 1, the previous
379 playlist will be saved using this option. This option may occur multiple
380 times in ~/.xtimidity.
381
382[1] When timidity is compiled with xaw3d, tooltips are by default off.
383 Tooltips can not be enabled when the neXtaw toolkit is used.
384
385* REPORTS
386
387Please send problems concerning Xaw interface, feature requests,
388bug reports or comments to the TiMidity mailing list
389<timidity-talk@lists.sourceforge.net>.
390
391 Regards,
392
393 Yoshishige Arai <ryo2@on.rim.or.jp>
394
README.xskin
1------------------------------------------------------------------
2This document describes about TiMidity++ skin interface.
3
4 Skin interface is the front-end of TiMidity++ to allow users to
5control TiMidity++ with funny GUI. The face of GUI is changable
6by using "skin data" of WinAmp / x11amp.
7
8
9* SETTING UP THE X-SKIN INTERFACE *
10
11 First, choose a skin data to use and place it on some directory.
12And set this path to the environment variable "timidity_skin"
13 e.g, If your favourite skin data (*.bmp) is placed on
14 ~/.x11amp/Skins/timidity/ :
15
16% setenv timidity_skin ~/.x11amp/Skins/timidity/ (csh)
17$ timidity_skin=~/.x11amp/Skins/timidity ; export timidity_skin (sh)
18
19 If your skin data archive file is on /dos/programs/winamp/skins/winamp.zip:
20
21% setenv timidity_skin /dos/programs/winamp/skins/winamp.zip
22$ timidity_skin=/dos/programs/winamp/skins/winamp.zip ; export timidity_skin
23
24 Only one skin can be specified. There are no selector of skin data.
25 Since default skin is not prepared, if the environment variable isn't
26specified or the data specified is broken, TiMidity++ won't boot.
27
28 This skin interface requires 10 BMP files for skin data such that:
29
30 main, titlebar, playpaus, cbuttons, monoster,
31 posbar, shufrep, text, volume, number
32
33 If your data losts some of these files, please borrow the corresponding
34data from other skin data.
35 In case the data has viscolor.txt, the color of spectrum analyzer is
36determined by this file. If not, the default colors are used.
37
38
39* BOOTING TiMidity++ *
40
41 To use skin interface, boot TiMidity++ with command-line option -ii(tv).
42After initializing of internal of TiMidity++, a window looks like WinAmp :)
43will raise.
44
45
46* USAGE OF INTERFACE *
47
48 Features of this interface now available are:
49
50 Prev/Play/Pause/Stop/Next/ Shuffle/Repeat/ Volume/ Exit
51
52with every corresponding buttons.
53 Clicking the area of displaying elapsed-time changes the contents of
54this area as elapsed-time / remained-time.
55 Clicking the area below the time displaying area changes the contents of
56this area as spectrum analyzer. If you want to display the spectrum analyzer,
57you should compile TiMidity++ with configure option --enable-spectrogram.
58
59 You can move interface's window by grabbing any place of this window.
60
61 To exit this interface, click the little button on right corner.
62
63
64* BUG? *
65
66 Text displaying area can display only English, digits and some graphical
67characters. Any of multi-byte character won't displayed.
68 Cannot set panpot, Equalizer and PlayList of TiMidity++.
69 There no effect by clicking the eject button.
70 Cannot iconize, smalling.
71
72
73 YOU CAN USE THIS INTERFACE AT YOUR OWN RISK.
74
75 Daisuke Nagano <breeze_geo@geocities.co.jp>
76 http://www.geocities.co.jp/Playtown/4370/index.html
77