The add_to_library_path() function has now support for paths prefixed
[ahxm.git] / TODO
blobba44a19d647290c5b0dbb38de03a94729c9eefb1
1 Ann Hell Ex Machina TODO / Bug List
2 ===================================
4 Release Critical Bugs
5 ---------------------
7  * 1022: Add file name to compiler errors.
8  * 1052: Add quantizations.
9  * 1060: Add ss_tempo_from_wave to language.
10  * 1067: Fill the extended commands document.
11  * 1071: Add the posibility to start a song from a given measure or time.
12  * 1074: Add configuration file support.
13  * 1079: Add midiin.c functionality to main.c.
15 Open Bugs
16 ---------
18  * 1034: tempo_from_wave() will never work; when the wave is loaded, it's
19    too late for the tempo to be set, as the ss_song stream has no tempo
20    information. The only solution is to just print the optimal tempo, for
21    the ahxm programmer to change it manually.
22  * 1045: Line numbers in compiler errors are incorrectly reported when
23    inserting a block at the end of the line; when the block is inserted,
24    the linefeed has already been read and yyline incremented. This probably
25    occurs also with other directives.
26  * 1046: When a compilation error occurs inside a named block, the reported
27    line number is the one where the insertion occurs, not the one where the
28    block is defined.
29  * 1055: Add signal control to cleanly close the devices.
30  * 1056: Note printing in midiin.c should also print chords.
31  * 1070: Portamento support is still uncertain.
33 Pending Enhancements
34 --------------------
36  * 1002: Build an audio filtering tool to test effects.
37  * 1003: There should exist 'some kind' of effect for note volumes
38    to add a random variation, to add 'humanity'. This cannot
39    be a standard digital effect as it should be different
40    for each note.
41  * 1005: Vibrato should be variable (from 'no-vibrato' to 'some-vibrato'
42    in the same note).
43  * 1006: A 'choose' option, to take randomly one block or another
44    (blocks seem appropriate, but further study is necessary). A random
45    seed script command is also necessary.
46  * 1007: Support for 'tonalities'; fixed transpositions for each note of
47    the octave so that, for example, a 'f' is always a 'f#'.
48  * 1010: Loop stretching ('stretch wave without pitch change to last
49    exactly N time units').
50  * 1020: When a source file includes multiple songs, there should exist a
51    way to mark song / track changes. This should be used to include text
52    messages as ID3 tags or even to generate .cue / .toc files.
53  * 1042: Add multiple MIDI devices; a configuration file will match device
54    numbers to real addresses in /dev. Then each track in the song file could
55    have a command to set which MIDI device will the events be sent to.
56  * 1043: The same as the multiple MIDI devices, there should exist multiple
57    dsp devices. This way, a unique computer with more than one sound card
58    can output multichannel songs at a time.
60 Closed
61 ------
63  * 1000: Convert current event queue to two event queues. The first
64    stage queue should store notes and the second note on / note off
65    events (Tue, 17 Aug 2004 12:00:00 +0200).
66  * 1004: Vibrato for generators (Fri, 13 Aug 2004 11:05:00 +0200).
67  * 1009: Set tempo from a sample loop ('set tempo so that this wave
68    will match exactly one/N measures') (Fri, 16 Aug 2004 18:08:00 +0200).
69  * 1013: Volume should be a command ('v', for example) and not be
70    inherited from previous notes. There should also be settable as
71    relative inc/decrements (as octaves) (Mon, 30 Aug 2004 14:37:59 +0200).
72  * 1014: doc/language.txt is severely outdated
73    (Mon, 30 Aug 2004 15:13:00 +0200)
74  * 1015: Upgrade build system (new config.sh, makefile.in, etc.).
75    (Thu, 09 Sep 2004 18:56:29 +0200).
76  * 1016: Integrate the new compiler (Sun, 12 Sep 2004 16:13:11 +0200).
77  * 1001: Generator should use queues of active / free generators.
78    (Sun, 17 Oct 2004 12:50:10 +0200).
79  * 1012: Portamento should not have a 'time', only a frequency
80    inc/decrement per time unit (Sun, 17 Oct 2004 13:18:04 +0200).
81  * 1018: The 'default' driver should not be bound to the first usable
82    one, but be a sequential try of all available drivers
83    (Thu, 11 Nov 2004 12:18:12 +0100).
84  * 1019: Add libartsc support (Thu, 11 Nov 2004 12:30:02 +0100).
85  * 1023: The SS_FRAMES lex/yacc token should be SS_MSECS, that is,
86    the compiler should not use frames but milliseconds
87    (Tue, 19 Apr 2005 20:05:46 +0200).
88  * 1024: The 'event1' and 'event2' stuff is ugly. It should be called,
89    respectively, 'note stream' (as it's, more or less, device independent)
90    and 'ss stream', which depends of softsynth, frames and such. In the
91    future, there could exist a 'midi stream' if MIDI output is supported
92    (Closed by #1025; Wed, 20 Apr 2005 17:30:31 +0200).
93  * 1033: SONG_EV_SS_NOTE won't work, because freq can't be calculated
94    on compilation time; instead, it should be a generic message
95    (Sat, 23 Apr 2005 10:52:35 +0200).
96  * 1026: Get rid of event.c and event.h (Sat, 23 Apr 2005 12:28:47 +0200).
97  * 1027: Get rid of effect.c and effect.h (Sat, 23 Apr 2005 12:28:51 +0200).
98  * 1031: Add lex/yacc code for processing absolute notes (A1, C#4, F&3)
99    (Sat, 23 Apr 2005 16:14:21 +0200).
100  * 1036: Unify song event types; ss_song should use the same event types
101    (Sun, 24 Apr 2005 10:29:22 +0200).
102  * 1035: The number of compiled tracks should be available somewhere
103    (Sun, 24 Apr 2005 10:35:19 +0200).
104  * 1037: ss_ins_frame() is flawed; as it directly mixes into frame[],
105    each intrument's ss effects affect the previous ones
106    (Mon, 25 Apr 2005 16:42:28 +0200).
107  * 1025: 'event1' has been moved to song.c (generic song event stream)
108    and 'event2' has been moved to ss_song.c (softsynth song event stream),
109    but due to almost all of ss_song.c being private, there is no way to
110    order the instruments and the effects to do anything until a way of
111    storing them is decided. So, project state is really critical now as
112    nothing works (last working version was 'cvs update -D 20050419').
113    (Mon, 25 Apr 2005 18:16:48 +0200).
114  * 1039: Volumes can't be set as integer numbers (0 and 1 should be valid)
115    (Mon, 25 Apr 2005 18:26:06 +0200).
116  * 1038: Comments can't be written inside extended commands
117    (Mon, 25 Apr 2005 18:31:55 +0200).
118  * 1021: Add line number to compiler errors (Mon, 25 Apr 2005 19:11:01 +0200).
119  * 1028: input.c should be ss_input.c (Wed, 27 Apr 2005 08:08:49 +0200).
120  * 1029: output.c should be ss_output.c (Wed, 27 Apr 2005 16:59:34 +0200).
121  * 1044: Line numbers in compiler errors don't work if the error is inside
122    a block or after inserting one
123    (Closed by #1045; Sun, 08 May 2005 10:22:43 +0200).
124  * 1047: Change generators to use just one volume and not a channel map
125    (Mon, 09 May 2005 16:24:13 +0200).
126  * 1049: Since the closing of #1047, the channel map in ss_ins is
127    completely broken (Tue, 10 May 2005 18:27:28 +0200).
128  * 1050: New ss_ins is flawed; volumes are never used
129    (Tue, 10 May 2005 18:41:30 +0200).
130  * 1041: Get rid of CHANNELS and always use dynamic structures or buffers
131    (Tue, 10 May 2005 19:40:52 +0200).
132  * 1048: ss_wave must be dynamic (Thu, 12 May 2005 19:23:13 +0200).
133  * 1032: Refactorize input, ss_gen and ss_ins to always use pointers to
134    struct ss_wave instead of copies of them (Thu, 12 May 2005 19:31:44 +0200).
135  * 1053: Create a tool that will read from a MIDI keyboard and print
136    the played keys on stdout (Closed by #1054;
137    Mon, 23 May 2005 17:04:54 +0200).
138  * 1054: Modify midiin.c to print currently played notes to stdout
139    (Mon, 23 May 2005 19:10:45 +0200).
140  * 1057: The Arts driver hangs forever (Sat, 28 May 2005 13:42:36 +0200).
141  * 1058: The new ss_outdev model seem to have problems with pipe buffer
142    sizes, at least with the OSS driver. Regardless of the number of bytes,
143    data is only read in 256 byte chunks (Sun, 29 May 2005 10:35:27 +0200).
144  * 1030: Refactorize the output system to always use a forked process
145    (Closed by #1062; Sun, 29 May 2005 10:44:39 +0200).
146  * 1061: Process the SONG_EV_SS_NOTE_ON_BY_TIME message, probably by
147    unifying it with the SONG_EV_NOTE_ON (Mon, 30 May 2005 17:22:21 +0200).
148  * 1011: Loop matching ('change wave pitch to last exactly N time units')
149    (Renamed as 'pitch_stretch'; Mon, 30 May 2005 17:23:17 +0200).
150  * 1062: The forked process for sound writing works, but it has proven
151    worse in slow systems. A redesign must be done to also allow direct
152    writing to ports (Closed by #1063; Mon, 30 May 2005 18:14:44 +0200).
153  * 1059: Add channel maps to language (Mon, 30 May 2005 18:50:38 +0200).
154  * 1040: Get rid of all _ prefixed symbols (Mon, 30 May 2005 19:12:19 +0200).
155  * 1064: Document or fix the 'feature' of pitch_stretch that, if the chosen
156    wave can't handle the final frequency (due to min/max boundaries), it can
157    end up not sounding at all (Tue, 31 May 2005 07:41:50 +0200).
158  * 1063: Now that I've tested it with good hardware, the new ss_outdev
159    driver is useless as is due to horrible latency. So, it must be rewritten
160    to do direct writing to devices (Wed, 01 Jun 2005 16:20:01 +0200).
161  * 1051: Unify all header files into annhell.h
162    (Thu, 02 Jun 2005 08:32:31 +0200).
163  * 1065: Create a document about the extended commands
164    (Closed by #1067; Thu, 02 Jun 2005 08:34:28 +0200).
165  * 1008: Support for 'keyboard splits': ranges of notes that a track will
166    ignore. This should allow to have multiple tracks playing the same
167    notes but with different channel maps and, for example, having a
168    guitar glissando pan from left to right
169    (No longer needed, a pan glissando can be done by using plain channel
170    volumes, as they are now immediately applied;
171    Thu, 02 Jun 2005 08:44:45 +0200).
172  * 1068: Add vibrato to ss instruments (Thu, 02 Jun 2005 13:28:39 +0200).
173  * 1069: Add vibrato to language (Thu, 02 Jun 2005 17:28:41 +0200).
174  * 1072: The instrument in midiin should also be an AHXM script
175    (Fri, 03 Jun 2005 19:08:15 +0200).
176  * 1073: The measure boundary checks should include line numbers
177    (Mon, 06 Jun 2005 16:29:28 +0200).
178  * 1066: All code that open files should use a special version of fopen()
179    that searches in a path of directories (Mon, 06 Jun 2005 17:52:44 +0200).
180  * 1017: mp_doccer documentation is severely outdated
181    (Tue, 07 Jun 2005 13:46:36 +0200).
182  * 1077: Delete all stdout crap (Sat, 11 Jun 2005 20:27:43 +0200).
183  * 1078: After a measure change, all measure bar checks break
184    (Sat, 11 Jun 2005 21:03:24 +0200).
185  * 1075: Unify everything inside the same executable (closed by #1079;
186    Sun, 12 Jun 2005 18:34:35 +0200).
187  * 1076: Make the unified executable to accept all options as command
188    line arguments (Sun, 12 Jun 2005 18:34:40 +0200).
190 Email bugs to angel@triptico.com