blob: 9a6ec1b4dab49db833218c8a577fea62682605cb (
plain)
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
|
The way I would have made things if I had the time to do it
Rickard Lind <rpl@dd.chalmers.se>, 2000-12-30
-------------------------------------------------------------------------------
Step 1:
D rename "src/sound/midi.c" in freesci to "oldmidi.c" and still use it
D move my "midi*" and "midiout*" to "src/sound"
D change all "glib.h" to the real thing
Step 2:
D implement all note-playing, volume changing, reverb etc in "midi_mt32.*"
use disassembled sierra SCI1.1 driver as the main source of inspiration
D change "soundserver_null.c" to use the new device driver for MT-32
* use "~/.freesci/config" to set ALSA/OSS and other options
Step 3:
* Implement a GM translation driver "midi_gm.*" using a parsed textfile
for instrument mapping
* Improve instrument mappings using new features such as keyshift,
volume adjust and velocity remap
Step 4:
* Reimplement a SCI0 soundserver using the new sound sub sytem
*�PCM support (samples) with ALSA and possibly DirectX
* MPU-401 UART midiout driver for DOS/Windows
Step 5:
* SCI01, SCI1, SCI32 soundserver
* Adlib support "midi_opl2.*", "oplout_alsaraw.*", "oplout_pcmemu.*"
* PCM support Sound Blaster DOS
Step 6:
* Make it possible to play samples and use opl2 emulation (found in MAME
I think) at the same time through the same sound device
Step 7:
* All those other little nifty things...
-------------------------------------------------------------------------------
My idea concerning naming of the files:
src/sound/midi.* wrapper for MIDI device drivers
src/sound/midiout.* wrapper for different methods to output
MIDI data
src/sound/pcm.* wrapper for PCM device drivers
src/sound/pcmout.* wrapper for different methods to output
PCM data
src/sound/midi_mt32.* Roland MT-32 device driver
src/sound/midi_opl2.* Adlib/OPL2 device driver
src/sound/midiout_alsaraw.* rawmidi output using alsalib
src/sound/midiout_unixraw.* rawmidi output using unix filesystem
src/sound/oplout_alsaraw.* opl output using alsa
-------------------------------------------------------------------------------
Use Linux and ALSA 0.5.x (or later) and Roland MT-32 while developing.
Don't implement supremely stupid abstract frameworks without consulting
experienced people on the mailinglist first. There are infinite ways to
implement the sound subsystem the VERY VERY WRONG way. Don't make
everything too much of a hack either.
Use the files is in "lists/" when doing text output for debugging purposes.
Good luck!
|