Start of random block support: blocks are no longer stored as is, but
[ahxm.git] / TODO
blob452e7ba9639026b3cb9adaf8b1827500e4bf88c8
1 Ann Hell Ex Machina TODO / Bug List
2 ===================================
4 Release Critical Bugs
5 ---------------------
7 None!
9 Open Bugs
10 ---------
12  * 1045: Line numbers in compiler errors are incorrectly reported when
13    inserting a block at the end of the line; when the block is inserted,
14    the linefeed has already been read and yyline incremented. This probably
15    occurs also with other directives.
16  * 1046: When a compilation error occurs inside a named block, the reported
17    line number is the one where the insertion occurs, not the one where the
18    block is defined.
19  * 1070: Portamento support is still uncertain.
20  * 1022: Add file name to compiler errors.
21  * 1087: When skipping time, MIDI should still write program changes
22    (and probably other messages) to the output device; that is, only
23    notes and time sleeping should be skipped.
24  * 1079: Move midiin.c functionality to main.c.
25  * 1093: External wave file filters (mpg321, flac, etc.) should be
26    configurable via the configuration file (needs #1074 closed).
27  * 1098: Immediate volumes are not implemented.
28  * 1097: Dotted notes are broken when more than one is used.
29  * 1108: Sometimes wave paging hangs. It seems to be related to generators
30    simultaneously using offsets far from each other, so the loaded page
31    keeps bouncing. Setting the page size to a big number (like the actual
32    default, 441000) seems to avoid it, as huge files are not usually used
33    more than once. If you are bit by this bug, set the page size to -1 with
34    the -b command line option.
36 Pending Enhancements
37 --------------------
39  * 1003: There should exist 'some kind' of effect for note volumes
40    to add a random variation, to add 'humanity'. This cannot
41    be a standard digital effect as it should be different
42    for each note.
43  * 1005: Vibrato should be variable (from 'no-vibrato' to 'some-vibrato'
44    in the same note).
45  * 1006: A 'choose' option, to take randomly one block or another
46    (blocks seem appropriate, but further study is necessary). A random
47    seed script command is also necessary.
48  * 1007: Support for 'tonalities'; fixed transpositions for each note of
49    the octave so that, for example, a 'f' is always a 'f#'.
50  * 1010: Loop stretching ('stretch wave without pitch change to last
51    exactly N time units').
52  * 1042: Add multiple MIDI devices; a configuration file will match device
53    numbers to real addresses in /dev. Then each track in the song file could
54    have a command to set which MIDI device will the events be sent to.
55  * 1043: The same as the multiple MIDI devices, there should exist multiple
56    dsp devices. This way, a unique computer with more than one sound card
57    can output multichannel songs at a time.
58  * 1074: Add configuration file support.
59  * 1056: Note printing in midiin.c should also print chords.
60  * 1052: Add quantizations.
61  * 1084: Add a 'copy' directive that uses ss_ins_copy_layers() to copy
62    the loaded instruments from one track into another.
63  * 1096: ss_outdev.c should be its own project to be used from other
64    ones as QDGDF.
65  * 1094: Add code to specify note lengths in minutes and seconds.
66  * 1100: Add command-line options to mute a track.
68 Closed
69 ------
71  * 1000: Convert current event queue to two event queues. The first
72    stage queue should store notes and the second note on / note off
73    events (Tue, 17 Aug 2004 12:00:00 +0200).
74  * 1004: Vibrato for generators (Fri, 13 Aug 2004 11:05:00 +0200).
75  * 1009: Set tempo from a sample loop ('set tempo so that this wave
76    will match exactly one/N measures') (Fri, 16 Aug 2004 18:08:00 +0200).
77  * 1013: Volume should be a command ('v', for example) and not be
78    inherited from previous notes. There should also be settable as
79    relative inc/decrements (as octaves) (Mon, 30 Aug 2004 14:37:59 +0200).
80  * 1014: doc/language.txt is severely outdated
81    (Mon, 30 Aug 2004 15:13:00 +0200)
82  * 1015: Upgrade build system (new config.sh, makefile.in, etc.).
83    (Thu, 09 Sep 2004 18:56:29 +0200).
84  * 1016: Integrate the new compiler (Sun, 12 Sep 2004 16:13:11 +0200).
85  * 1001: Generator should use queues of active / free generators.
86    (Sun, 17 Oct 2004 12:50:10 +0200).
87  * 1012: Portamento should not have a 'time', only a frequency
88    inc/decrement per time unit (Sun, 17 Oct 2004 13:18:04 +0200).
89  * 1018: The 'default' driver should not be bound to the first usable
90    one, but be a sequential try of all available drivers
91    (Thu, 11 Nov 2004 12:18:12 +0100).
92  * 1019: Add libartsc support (Thu, 11 Nov 2004 12:30:02 +0100).
93  * 1023: The SS_FRAMES lex/yacc token should be SS_MSECS, that is,
94    the compiler should not use frames but milliseconds
95    (Tue, 19 Apr 2005 20:05:46 +0200).
96  * 1024: The 'event1' and 'event2' stuff is ugly. It should be called,
97    respectively, 'note stream' (as it's, more or less, device independent)
98    and 'ss stream', which depends of softsynth, frames and such. In the
99    future, there could exist a 'midi stream' if MIDI output is supported
100    (Closed by #1025; Wed, 20 Apr 2005 17:30:31 +0200).
101  * 1033: SONG_EV_SS_NOTE won't work, because freq can't be calculated
102    on compilation time; instead, it should be a generic message
103    (Sat, 23 Apr 2005 10:52:35 +0200).
104  * 1026: Get rid of event.c and event.h (Sat, 23 Apr 2005 12:28:47 +0200).
105  * 1027: Get rid of effect.c and effect.h (Sat, 23 Apr 2005 12:28:51 +0200).
106  * 1031: Add lex/yacc code for processing absolute notes (A1, C#4, F&3)
107    (Sat, 23 Apr 2005 16:14:21 +0200).
108  * 1036: Unify song event types; ss_song should use the same event types
109    (Sun, 24 Apr 2005 10:29:22 +0200).
110  * 1035: The number of compiled tracks should be available somewhere
111    (Sun, 24 Apr 2005 10:35:19 +0200).
112  * 1037: ss_ins_frame() is flawed; as it directly mixes into frame[],
113    each intrument's ss effects affect the previous ones
114    (Mon, 25 Apr 2005 16:42:28 +0200).
115  * 1025: 'event1' has been moved to song.c (generic song event stream)
116    and 'event2' has been moved to ss_song.c (softsynth song event stream),
117    but due to almost all of ss_song.c being private, there is no way to
118    order the instruments and the effects to do anything until a way of
119    storing them is decided. So, project state is really critical now as
120    nothing works (last working version was 'cvs update -D 20050419').
121    (Mon, 25 Apr 2005 18:16:48 +0200).
122  * 1039: Volumes can't be set as integer numbers (0 and 1 should be valid)
123    (Mon, 25 Apr 2005 18:26:06 +0200).
124  * 1038: Comments can't be written inside extended commands
125    (Mon, 25 Apr 2005 18:31:55 +0200).
126  * 1021: Add line number to compiler errors (Mon, 25 Apr 2005 19:11:01 +0200).
127  * 1028: input.c should be ss_input.c (Wed, 27 Apr 2005 08:08:49 +0200).
128  * 1029: output.c should be ss_output.c (Wed, 27 Apr 2005 16:59:34 +0200).
129  * 1044: Line numbers in compiler errors don't work if the error is inside
130    a block or after inserting one
131    (Closed by #1045; Sun, 08 May 2005 10:22:43 +0200).
132  * 1047: Change generators to use just one volume and not a channel map
133    (Mon, 09 May 2005 16:24:13 +0200).
134  * 1049: Since the closing of #1047, the channel map in ss_ins is
135    completely broken (Tue, 10 May 2005 18:27:28 +0200).
136  * 1050: New ss_ins is flawed; volumes are never used
137    (Tue, 10 May 2005 18:41:30 +0200).
138  * 1041: Get rid of CHANNELS and always use dynamic structures or buffers
139    (Tue, 10 May 2005 19:40:52 +0200).
140  * 1048: ss_wave must be dynamic (Thu, 12 May 2005 19:23:13 +0200).
141  * 1032: Refactorize input, ss_gen and ss_ins to always use pointers to
142    struct ss_wave instead of copies of them (Thu, 12 May 2005 19:31:44 +0200).
143  * 1053: Create a tool that will read from a MIDI keyboard and print
144    the played keys on stdout (Closed by #1054;
145    Mon, 23 May 2005 17:04:54 +0200).
146  * 1054: Modify midiin.c to print currently played notes to stdout
147    (Mon, 23 May 2005 19:10:45 +0200).
148  * 1057: The Arts driver hangs forever (Sat, 28 May 2005 13:42:36 +0200).
149  * 1058: The new ss_outdev model seem to have problems with pipe buffer
150    sizes, at least with the OSS driver. Regardless of the number of bytes,
151    data is only read in 256 byte chunks (Sun, 29 May 2005 10:35:27 +0200).
152  * 1030: Refactorize the output system to always use a forked process
153    (Closed by #1062; Sun, 29 May 2005 10:44:39 +0200).
154  * 1061: Process the SONG_EV_SS_NOTE_ON_BY_TIME message, probably by
155    unifying it with the SONG_EV_NOTE_ON (Mon, 30 May 2005 17:22:21 +0200).
156  * 1011: Loop matching ('change wave pitch to last exactly N time units')
157    (Renamed as 'pitch_stretch'; Mon, 30 May 2005 17:23:17 +0200).
158  * 1062: The forked process for sound writing works, but it has proven
159    worse in slow systems. A redesign must be done to also allow direct
160    writing to ports (Closed by #1063; Mon, 30 May 2005 18:14:44 +0200).
161  * 1059: Add channel maps to language (Mon, 30 May 2005 18:50:38 +0200).
162  * 1040: Get rid of all _ prefixed symbols (Mon, 30 May 2005 19:12:19 +0200).
163  * 1064: Document or fix the 'feature' of pitch_stretch that, if the chosen
164    wave can't handle the final frequency (due to min/max boundaries), it can
165    end up not sounding at all (Tue, 31 May 2005 07:41:50 +0200).
166  * 1063: Now that I've tested it with good hardware, the new ss_outdev
167    driver is useless as is due to horrible latency. So, it must be rewritten
168    to do direct writing to devices (Wed, 01 Jun 2005 16:20:01 +0200).
169  * 1051: Unify all header files into annhell.h
170    (Thu, 02 Jun 2005 08:32:31 +0200).
171  * 1065: Create a document about the extended commands
172    (Closed by #1067; Thu, 02 Jun 2005 08:34:28 +0200).
173  * 1008: Support for 'keyboard splits': ranges of notes that a track will
174    ignore. This should allow to have multiple tracks playing the same
175    notes but with different channel maps and, for example, having a
176    guitar glissando pan from left to right
177    (No longer needed, a pan glissando can be done by using plain channel
178    volumes, as they are now immediately applied;
179    Thu, 02 Jun 2005 08:44:45 +0200).
180  * 1068: Add vibrato to ss instruments (Thu, 02 Jun 2005 13:28:39 +0200).
181  * 1069: Add vibrato to language (Thu, 02 Jun 2005 17:28:41 +0200).
182  * 1072: The instrument in midiin should also be an AHXM script
183    (Fri, 03 Jun 2005 19:08:15 +0200).
184  * 1073: The measure boundary checks should include line numbers
185    (Mon, 06 Jun 2005 16:29:28 +0200).
186  * 1066: All code that open files should use a special version of fopen()
187    that searches in a path of directories (Mon, 06 Jun 2005 17:52:44 +0200).
188  * 1017: mp_doccer documentation is severely outdated
189    (Tue, 07 Jun 2005 13:46:36 +0200).
190  * 1077: Delete all stdout crap (Sat, 11 Jun 2005 20:27:43 +0200).
191  * 1078: After a measure change, all measure bar checks break
192    (Sat, 11 Jun 2005 21:03:24 +0200).
193  * 1075: Unify everything inside the same executable (closed by #1079;
194    Sun, 12 Jun 2005 18:34:35 +0200).
195  * 1076: Make the unified executable to accept all options as command
196    line arguments (Sun, 12 Jun 2005 18:34:40 +0200).
197  * 1080: Take last group part into account when calculating its length
198    (Wed, 15 Jun 2005 16:31:30 +0200).
199  * 1081: The end of song is incorrectly detected. It can be reproduced by
200    having a very long note that ends longer after the last inserted event
201    (Thu, 16 Jun 2005 13:42:10 +0200).
202  * 1082: Wave loading should be cached, to optimize the loading of the
203    same sound from different tracks (Closed by #1084;
204    Thu, 16 Jun 2005 14:04:06 +0200).
205  * 1083: When a named block is referenced at the end of a line inside
206    another block, a syntax error is generated (Thu, 16 Jun 2005 18:32:54 +0200).
207  * 1071: Add the posibility to start a song from a given measure or time
208    (Sun, 19 Jun 2005 10:56:11 +0200).
209  * 1085: Add skip_secs capability to MIDI output
210    (Sun, 19 Jun 2005 12:48:51 +0200).
211  * 1002: Build an audio filtering tool to test effects
212    (Discarded; Tue, 21 Jun 2005 16:12:42 +0200).
213  * 1034: tempo_from_wave() will never work; when the wave is loaded, it's
214    too late for the tempo to be set, as the ss_song stream has no tempo
215    information. The only solution is to just print the optimal tempo, for
216    the ahxm programmer to change it manually (Closed by 1060;
217    Tue, 21 Jun 2005 16:13:09 +0200).
218  * 1067: Fill the extended commands document (Tue, 21 Jun 2005 17:19:28 +0200).
219  * 1060: Add print_wave_tempo to language (Thu, 23 Jun 2005 08:22:06 +0200).
220  * 1055: Add signal control to cleanly close the devices
221    (Thu, 23 Jun 2005 13:33:31 +0200).
222  * 1088: The 'wav' command doesn't bang when a sound can't be loaded
223    (Thu, 23 Jun 2005 17:32:49 +0200).
224  * 1090: Add a new sound generator, called 'stream' or something like that,
225    to simply stream a wave file into the current process, meant to avoid
226    loading very large files into memory and to help in using Ann Hell Ex Machina
227    as a remixing tool. These files will probably be limited to using the same
228    sampling rate as ahxm to avoid expensive conversions (Closed by #1091;
229    Mon, 12 Sep 2005 06:26:02 +0200).
230  * 1089: Add support for loading .mp3 files by using a cache (probably
231    in ~/.annhellcache) and external tools as mpg321
232    (Tue, 13 Sep 2005 19:45:29 +0200).
233  * 1086: MIDI output is still done to stdout (file descriptor 2)
234    (Wed, 14 Sep 2005 08:22:07 +0200).
235  * 1095: Clearly document the still unsupported things (for example,
236    double dots in lengths, immediate volumes) (Closed by #1097,
237    #1098; Thu, 13 Oct 2005 17:36:56 +0200).
238  * 1099: Add command-line options to mute and/or solo tracks
239    (closed by #1100 and #1101; Wed, 23 Nov 2005 13:27:15 +0100).
240  * 1101: Add command-line options to 'solo' a track
241    (Wed, 23 Nov 2005 15:54:28 +0100).
242  * 1102: Add a new command to move the current note cursor backwards
243    using note length notation (Tue, 06 Dec 2005 09:15:38 +0100).
244  * 1092: Release 1.0.0 right now and make it a stable CVS branch
245    (Mon, 19 Dec 2005 17:33:58 +0100).
246  * 1104: Tempo changes are very broken (try examples/tempo_change.ahs)
247    (Sat, 07 Jan 2006 17:11:04 +0100).
248  * 1106: Implement func_fader() by using the cursor instead of the
249    size, and deactivating itself by setting e->func to NULL
250    (Closed by #1107; Tue, 17 Jan 2006 08:55:37 +0100).
251  * 1107: Implement func_fader() by not changing the size
252    (Tue, 17 Jan 2006 09:08:39 +0100).
253  * 1105: Modify effects to use struct ss_wave instead of a plain wave
254    (Tue, 17 Jan 2006 15:47:27 +0100).
255  * 1020: When a source file includes multiple songs, there should exist a
256    way to mark song / track changes. This should be used to include text
257    messages as ID3 tags or even to generate .cue / .toc files
258    (Tue, 31 Jan 2006 17:28:33 +0100).
259  * 1109: Wave page loading crashes when trying to load a non-cached wave
260    file (Wed, 01 Feb 2006 15:55:58 +0100).
261  * 1103: Add a command line switch to skip music in the 'hard' way,
262    that is, just skipping the events (Thu, 02 Feb 2006 07:50:29 +0100).
263  * 1091: All 'plain' wave files (i.e., all except .pat files) should be
264    paged instead of read directly in memory (Thu, 02 Feb 2006 07:50:29 +0100).
265  * 1110: Add some way to map mono wave files to certain channels. It can be
266    done by adding two new variables to struct ss_wave: a 'first channel', to
267    hold the first channel that will contain the generated samples (default 0,
268    start from the first channel) and 'skip channels', the number of channels
269    to jump over (default 0, don't skip any sample)
270    (Sat, 04 Feb 2006 08:37:01 +0100).
272 Email bugs to angel@triptico.com