File: NOTES

package info (click to toggle)
lxmusserv 0.94-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, sarge
  • size: 176 kB
  • ctags: 189
  • sloc: ansic: 1,530; makefile: 73
file content (243 lines) | stat: -rw-r--r-- 8,909 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
CONTENTS:
	- RELEASE NOTES for:
		LXMUSSERV-0.94
		LXMUSSERV-0.93
		LXMUSSERV-0.92b
		LXMUSSERV-0.91
		LXMUSSERV-0.9

	- TODO/WISHLIST

	- REFERENCES

---------------------------------------------------------------------

LXMUSSERV-0.94 RELEASE NOTES - Rafael Reilova (rreilova@ececs.uc.edu)
			        March. 20, 1999.

Changes from 0.93:

- Linux kernel <= 2.1.64 don't have sound blaster AWE support by default,
  #ifdef'ed code to make lxmusserv compile under these.  Thanks to
  Gady Kozma for pointing this out.

- Updated README.awe to reflect the above.


LXMUSSERV-0.93 RELEASE NOTES - Rafael Reilova (rreilova@ececs.uc.edu)
			        March. 11, 1999.

Changes from 0.92b:

- Pause/Resume now just set the volume to zero and back, this makes
  for much cleaner resuming.

- Fixed: music volume wasn't being kept across songs, or setup at startup

- Changes to the lxdoom-musserv interface to simplify things (this
  will make it incompatible with lxdoom versions <= 1.3.5)

- Fine-tuning of the voice allocator to deal even more intelligently
  with the out-of-voices case. I have tested with 9 voices, secondary
  voices enabled, and it sounds all-right.

- Discovered and coded a workaround for undocumented out-of-range percussion
  channel notes.  This is an issue only for FM-synth.  Now they get
  played in whatever patch was set on channel 9 (if any).  At least,
  that is what my AWE was doing with them anyways and it sounds ok.

- Removed a lot of unneeded SEQ_DUMPBUF() macros, server should be
  slightly more efficient now.

- More tiny code cleanups

- Updated README to detail how to play MUS files standalone


LXMUSSERV-0.92b RELEASE NOTES - Rafael Reilova (rreilova@ececs.uc.edu)
			        March. 4, 1999.

Changes from ver.0.92:

- Back to using the mixer for FM-volume control.  Changing the voices
  volume directly wasn't working.

- Because of above, FM-voice volume is throttled down by a factor of
  four to avoid clipping the OPL chip.

- Changed volume from log to linear scale. Drivers already do the conv.

- Minor tidyups.


Changes from ver.0.91:

- New improved FM-voice allocator, voices now stick to their previous
  channel whenever possible.  This fixes the FM problem with intruments
  with long attack rates not getting a chance to pick up volume.

- Since the new allocator has the side-effect of reducing clipping on
  FM, volume is back up to full-range.  Lower the volume from within
  the game if clipping is a problem.

- Added standalone operation.  Give the mus-file (and an FM-patch file
  if using FM-synthesis) as arguments.  See the -D option below for
  how to get the files out of Doom.

- Added option -D to cause a dump of the general MIDI FM-patch file
  and all songs that are played on the server.  The songs will be
  named "songX.mus" where X starts at zero and increases accordingly.
  You need write access to the cwd of lxmusserv. Please note that the
  songs in Doom are also covered by the Id-software copyright.

- Changed the volume log-scale to a linear one.  The OPL driver
  already does a log-conversion.  Now we have some useful volume range.

- Removed the -V option.  Volume works perfectly, no need to disable.

- Fixed bug with bad percussion patches getting set when note is out
  of range for a percussion instr. but is on the percussion channel.

- Dual voices FM-synth fixes. It's almost perfect now.  Last feature seems
  impossible to implement since the sound API is in the way: The
  second voice fine-tuning looks like a raw OPL pitch adj. (less than
  a semitone). Could use the bender for this at a great expense in complexity.

- Many small cleanups.

- Real ext. MIDI is still untested.  Seem to work OK under emulation with
  the AWE32 driver except for the percussions.

Almost everything seems to be working, hopefully this will be the last
developer-only release...



LXMUSSERV-0.91 RELEASE NOTES - Rafael Reilova (rreilova@ececs.uc.edu)
			       March. 1, 1999.

Changes from ver.0.9:

- Fixed bug with FM synthesis being one octave below for all
  non-percusive instruments.

- Added support for pause/resume of music pieces.

- Added options -1 and -2 to override musserv "good judgement" regarding 
  double-voiced instruments.  You can now play those even if you have
  an Adlib (not recommended).  If you do, let me know how bad is it ;-)
  You can also force an OPL3 card to play them single voice only.

- Don't set volume to max. for FM voices.  It seems some OPL's start
  clipping if too many voices are set to max. producing horrible sound.
  Discovered this while playing Heretic Mus files, which happens to
  set all channels to 127.  Voice volume is now never set above 63
  (0-127 range).  Even with this, slight clipping can be heard
  ocassionaly.  If this bothers you lower the music volume from within
  DOOM.

- Some minor MIDI fixups, can't really tell if it works correctly.  If
  you happen to have real MIDI hardware (not emulation) send me a note.

- Removed percussion intr. special case from FM-voice allocator when all
  voices are in use.  First, percussions are usually short in
  duration.  Second, there was the pathological case where if all voices
  happened to be assigned to the percussion channel we whould
  exceed array bounds (and possibly go bananas).

- Undocumented command arguments allow for direct playing of
  MUS-files.  If you want to generate the MUS and FM-patch files
  look into readwad.c.  This came out as a debugging facility and may
  dissappear on future releases.  You'll also have to directly type
  mussrv-commands to start/pause/resume/quit playing.  This facility
  is completely unsupported for now.



LXMUSSERV-0.9 RELEASE NOTES - Rafael Reilova (rreilova@ececs.uc.edu)
			      Feb. 27, 1999.

Well linux doom is out, it awesome and fast!  But I was dissapointed
when there was no music.  So I downloaded the orginal source code from
sunsite, and armed with several documents (see references at end)
hacked at it for a while.  Lxmusserv is the result.

I also found out that the original author (due to lack of
documentation at the time, I assume) had made several mistakes in the
handling of fm-patches and the MUS file format.  I believe these are
now 100% fixed.  FM-synth sound has been greatly enhanced.

Changes/Features:
(very numerous, "use the source, Luke", for the details, this is just
what comes to mind)

- Implemented the fake-4OP FM instruments. These are two voices that
correspond to one instrument.  This is disabled by default on non-OPL3 
cards (Adlib?) since they have too few voices, but there is no real
H/W requirement.  If you're adventurous feel free to override.

- Major documentation effort and removal of "magic" numbers.  The code 
is now (IMHO) tracktable.

- Support of all documented events in the MUS-file.  This includes all 
the midi-controllers (sustain, reverb, modulation, expression, chorus, 
etc) and more.

- Added an intelligent heuristic for FM-voice allocation/deallocation
that should really minimize the amount of poping and cliking sounds.
Additionally, we never drop new notes even if all voices are in-use.

- Since the OSS drivers are pretty stable at this time, I removed all
the driver version specific workarounds.

- Changed the interface with the doom process to meet Lxdoom
expectations.  I.e. we now read stdin as our message pipe instead of
using IPC.

- Converted all code that dealt with the wad file directly, to deal
with Lxdoom stdin-piped data.


TODO/Wishlist:

- write a man page documenting the command-line options
- Support GUS card.
- Verify changes don't break on FreeBSD

- Make the musserver more arch-independed.  Currently all data
  structures assume ix86 architecture.  If someone ports it
  to Alpha or some other big-endian let me know.  Patches welcome.

- Here's the biggie...  Support piping MIDI data to timidity or some
  other MIDI-to-wave program for those people without native
  MIDI-support but two DSP DAC-outs (All the new ESS and SB-128
  cards).  Most of the MUS-to-MIDI is there already, the
  synchronization with a third program is what looks hard.


References/Credits:

[1] Original source Musserver 1.0  (Aug 23, 1995)
    Michael Heasley
    mheasley@hmc.edu

[2] AWE32 patches:  DOOM Musserver AWE32 patch (1997)
    Takashi Iwai  <iwai@dragon.mm.t.u-tokyo.ac.jp>
    Available at sunsite.

[3] MUS File Format (mus_form.doc) ver.1.31
    Vladimir Arnost, QA-Software
    Updated: March 9, 1996

[4] "The Unofficial Doom Specs", Matt Fell (1994)

[5] "Hacker's Guide to Voxware 2.4", Hannu Savolainen, 1994.

[6] "OSS Programmer's Guide", 4Front Technologies,
    http://www.opensound.com/pguide/mid.html

[7] "AWEDRV PROGRAMMING NOTES" ver.1.07,
    Takashi Iwai ( iwai@dragon.mm.t.u-tokyo.ac.jp) 
    http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awedrv-prog.html 

[8] "GENMIDI.OP2 FILE FORMAT" (genmidi.doc) by unknown author.