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
|
Planned for 0.2.9:
==================
* some data is required for each protocol handler or Bad Things Happen.
In the immortal words of John Parker, "So what, big deal."
* factor out monitor_write internals, and recorder_write, and filter_write
into a write_player, and conditionally swap data on those writes.
* function pointers in mix.c for mix_in (add) and translate (copy):
mix_funcs[MAX] = { mix_to_format, mix_from_format, clip_format, ... };
set function when creating player. update if a filter is added or removed
* volume control (setting of left/right volume) on samples and streams
modify clients volume or mute so that client can kill it.. etc..
so in effect an audio manager could be written
play_sample_pan( int sample_id, int left_volume, int right_volume );
* get rid of hard coded 44100's in esdlib.c
* make all protocols return an int indicating success/failure at a minimum
NOTE: this will break protocol!
* change audio device with esdctl??? on the fly???
* esd_rename_stream( int stream_id, char *name ); ???
* reorganize source files into esdlib, esd, utils subdirectories. ???
* support 8 bit u-law format output data ???
Planned for later:
==================
make the reading/mixing
process a separate thread from the client protocol parsing thread.
command line parameter for the server's fragment value
kill_sample( int sample_id );
One other nice feature of the BeOS streaming model is that you can
choose where your application should be positioned in the stream
(beginning | end | don't care). Could be done with some extra
parameters to esd_play_stream()..? add a queue of requests to the
sample clients, and watch for kills?
mmap the data into the sound card? -- Linux only
[raster!raster@trode.redhat.com] actuyally dump like 1k or whatever -
tell soundcard to start at the first 1kb - while readihg this (the
soundcard) write the 2nd kb - then the 3rd etc... just have to keep in
step with the card and a little ahead of it... but only just enough to
minimize lag.
it's also rather fiddly wiht cpu usage spikes..
play sample, loop sample, end sample:
int play_tri_sample( start, loop, end ) {
play(start); loop(loop); return end;
}
later:
int finish_tri_sample( end ) { play(end); return ?;}
allow a "volume envelope"
sample to be paired witht the sample optionally - perhaps at a lower
sampling rate and maybe 8 or 4 bits.. this sould in addition to "set lr
volume for smapl/stream now" functions... :)
so that would be something like (format determined by sample uploaded):
modulate_sample( int play_sample, int modulation_sample );
allow server to run mono.
pitch adjust on samples?
playback samples at different rates?
|