File: TODO

package info (click to toggle)
esound 0.2.35-2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 2,828 kB
  • ctags: 808
  • sloc: ansic: 10,220; sh: 8,620; makefile: 237; csh: 86
file content (76 lines) | stat: -rw-r--r-- 2,713 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
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?