1 Ann Hell Ex Machina TODO / Bug List
2 ===================================
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
19 * 1022: Add file name to compiler errors.
20 * 1087: When skipping time, MIDI should still write program changes
21 (and probably other messages) to the output device; that is, only
22 notes and time sleeping should be skipped.
23 * 1079: Move midiin.c functionality to main.c.
24 * 1098: Immediate volumes are not implemented.
25 * 1097: Dotted notes are broken when more than one is used.
26 * 1108: Sometimes wave paging hangs. It seems to be related to generators
27 simultaneously using offsets far from each other, so the loaded page
28 keeps bouncing. Setting the page size to a big number (like the actual
29 default, 441000) seems to avoid it, as huge files are not usually used
30 more than once. If you are bit by this bug, set the page size to -1 with
31 the -b command line option.
32 * 1128: The output driver should change the global variable ss_frequency
33 if the underlying hardware doesn't support it. This can't be fixed just
34 by changing it there, because ss_song_convert_events() already used the
35 incorrect ss_frequency to calculate timings. Also, driver initialization
36 can't be moved to run before ss_song_convert_events() because it needs
37 ss_nchannels to be filled with a song-dependent default there.
42 * 1005: Vibrato should be variable (from 'no-vibrato' to 'some-vibrato'
44 * 1010: Loop stretching ('stretch wave without pitch change to last
45 exactly N time units').
46 * 1042: Add multiple MIDI devices; a configuration file will match device
47 numbers to real addresses in /dev. Then each track in the song file could
48 have a command to set which MIDI device will the events be sent to.
49 * 1043: The same as the multiple MIDI devices, there should exist multiple
50 dsp devices. This way, a unique computer with more than one sound card
51 can output multichannel songs at a time.
52 * 1074: Add configuration file support.
53 * 1056: Note printing in midiin.c should also print chords.
54 * 1052: Add quantizations.
55 * 1093: External wave file filters (mpg321, flac, etc.) should be
56 configurable via the configuration file (needs #1074 closed).
57 * 1094: Add code to specify note lengths in minutes and seconds.
58 * 1096: ss_outdev.c should be its own project to be used from other
60 * 1100: Add command-line options to mute a track.
61 * 1111: Add some directive to set the block random seed.
62 * 1112: Add some command line argument to set the block random seed.
63 * 1116: Add a command line option to start playing on a given mark.
64 * 1117: The output driver initialization should return the number of
65 channels currently usable. This way, the output engine can remap all
66 channels to the existing ones.
67 * 1125: Now that notes can be altered, there must be a way to temporarily
68 set a note to 'natural' (becuadro).
69 * 1127: Rethink most of the softsynth engine to use pthreads. Each thread
70 could manage one channel, or each one a track.
71 * 1139: Add a lilypond converter.
76 * 1000: Convert current event queue to two event queues. The first
77 stage queue should store notes and the second note on / note off
78 events (Tue, 17 Aug 2004 12:00:00 +0200).
79 * 1004: Vibrato for generators (Fri, 13 Aug 2004 11:05:00 +0200).
80 * 1009: Set tempo from a sample loop ('set tempo so that this wave
81 will match exactly one/N measures') (Fri, 16 Aug 2004 18:08:00 +0200).
82 * 1013: Volume should be a command ('v', for example) and not be
83 inherited from previous notes. There should also be settable as
84 relative inc/decrements (as octaves) (Mon, 30 Aug 2004 14:37:59 +0200).
85 * 1014: doc/language.txt is severely outdated
86 (Mon, 30 Aug 2004 15:13:00 +0200)
87 * 1015: Upgrade build system (new config.sh, makefile.in, etc.).
88 (Thu, 09 Sep 2004 18:56:29 +0200).
89 * 1016: Integrate the new compiler (Sun, 12 Sep 2004 16:13:11 +0200).
90 * 1001: Generator should use queues of active / free generators.
91 (Sun, 17 Oct 2004 12:50:10 +0200).
92 * 1012: Portamento should not have a 'time', only a frequency
93 inc/decrement per time unit (Sun, 17 Oct 2004 13:18:04 +0200).
94 * 1018: The 'default' driver should not be bound to the first usable
95 one, but be a sequential try of all available drivers
96 (Thu, 11 Nov 2004 12:18:12 +0100).
97 * 1019: Add libartsc support (Thu, 11 Nov 2004 12:30:02 +0100).
98 * 1023: The SS_FRAMES lex/yacc token should be SS_MSECS, that is,
99 the compiler should not use frames but milliseconds
100 (Tue, 19 Apr 2005 20:05:46 +0200).
101 * 1024: The 'event1' and 'event2' stuff is ugly. It should be called,
102 respectively, 'note stream' (as it's, more or less, device independent)
103 and 'ss stream', which depends of softsynth, frames and such. In the
104 future, there could exist a 'midi stream' if MIDI output is supported
105 (Closed by #1025; Wed, 20 Apr 2005 17:30:31 +0200).
106 * 1033: SONG_EV_SS_NOTE won't work, because freq can't be calculated
107 on compilation time; instead, it should be a generic message
108 (Sat, 23 Apr 2005 10:52:35 +0200).
109 * 1026: Get rid of event.c and event.h (Sat, 23 Apr 2005 12:28:47 +0200).
110 * 1027: Get rid of effect.c and effect.h (Sat, 23 Apr 2005 12:28:51 +0200).
111 * 1031: Add lex/yacc code for processing absolute notes (A1, C#4, F&3)
112 (Sat, 23 Apr 2005 16:14:21 +0200).
113 * 1036: Unify song event types; ss_song should use the same event types
114 (Sun, 24 Apr 2005 10:29:22 +0200).
115 * 1035: The number of compiled tracks should be available somewhere
116 (Sun, 24 Apr 2005 10:35:19 +0200).
117 * 1037: ss_ins_frame() is flawed; as it directly mixes into frame[],
118 each intrument's ss effects affect the previous ones
119 (Mon, 25 Apr 2005 16:42:28 +0200).
120 * 1025: 'event1' has been moved to song.c (generic song event stream)
121 and 'event2' has been moved to ss_song.c (softsynth song event stream),
122 but due to almost all of ss_song.c being private, there is no way to
123 order the instruments and the effects to do anything until a way of
124 storing them is decided. So, project state is really critical now as
125 nothing works (last working version was 'cvs update -D 20050419').
126 (Mon, 25 Apr 2005 18:16:48 +0200).
127 * 1039: Volumes can't be set as integer numbers (0 and 1 should be valid)
128 (Mon, 25 Apr 2005 18:26:06 +0200).
129 * 1038: Comments can't be written inside extended commands
130 (Mon, 25 Apr 2005 18:31:55 +0200).
131 * 1021: Add line number to compiler errors (Mon, 25 Apr 2005 19:11:01 +0200).
132 * 1028: input.c should be ss_input.c (Wed, 27 Apr 2005 08:08:49 +0200).
133 * 1029: output.c should be ss_output.c (Wed, 27 Apr 2005 16:59:34 +0200).
134 * 1044: Line numbers in compiler errors don't work if the error is inside
135 a block or after inserting one
136 (Closed by #1045; Sun, 08 May 2005 10:22:43 +0200).
137 * 1047: Change generators to use just one volume and not a channel map
138 (Mon, 09 May 2005 16:24:13 +0200).
139 * 1049: Since the closing of #1047, the channel map in ss_ins is
140 completely broken (Tue, 10 May 2005 18:27:28 +0200).
141 * 1050: New ss_ins is flawed; volumes are never used
142 (Tue, 10 May 2005 18:41:30 +0200).
143 * 1041: Get rid of CHANNELS and always use dynamic structures or buffers
144 (Tue, 10 May 2005 19:40:52 +0200).
145 * 1048: ss_wave must be dynamic (Thu, 12 May 2005 19:23:13 +0200).
146 * 1032: Refactorize input, ss_gen and ss_ins to always use pointers to
147 struct ss_wave instead of copies of them (Thu, 12 May 2005 19:31:44 +0200).
148 * 1053: Create a tool that will read from a MIDI keyboard and print
149 the played keys on stdout (Closed by #1054;
150 Mon, 23 May 2005 17:04:54 +0200).
151 * 1054: Modify midiin.c to print currently played notes to stdout
152 (Mon, 23 May 2005 19:10:45 +0200).
153 * 1057: The Arts driver hangs forever (Sat, 28 May 2005 13:42:36 +0200).
154 * 1058: The new ss_outdev model seem to have problems with pipe buffer
155 sizes, at least with the OSS driver. Regardless of the number of bytes,
156 data is only read in 256 byte chunks (Sun, 29 May 2005 10:35:27 +0200).
157 * 1030: Refactorize the output system to always use a forked process
158 (Closed by #1062; Sun, 29 May 2005 10:44:39 +0200).
159 * 1061: Process the SONG_EV_SS_NOTE_ON_BY_TIME message, probably by
160 unifying it with the SONG_EV_NOTE_ON (Mon, 30 May 2005 17:22:21 +0200).
161 * 1011: Loop matching ('change wave pitch to last exactly N time units')
162 (Renamed as 'pitch_stretch'; Mon, 30 May 2005 17:23:17 +0200).
163 * 1062: The forked process for sound writing works, but it has proven
164 worse in slow systems. A redesign must be done to also allow direct
165 writing to ports (Closed by #1063; Mon, 30 May 2005 18:14:44 +0200).
166 * 1059: Add channel maps to language (Mon, 30 May 2005 18:50:38 +0200).
167 * 1040: Get rid of all _ prefixed symbols (Mon, 30 May 2005 19:12:19 +0200).
168 * 1064: Document or fix the 'feature' of pitch_stretch that, if the chosen
169 wave can't handle the final frequency (due to min/max boundaries), it can
170 end up not sounding at all (Tue, 31 May 2005 07:41:50 +0200).
171 * 1063: Now that I've tested it with good hardware, the new ss_outdev
172 driver is useless as is due to horrible latency. So, it must be rewritten
173 to do direct writing to devices (Wed, 01 Jun 2005 16:20:01 +0200).
174 * 1051: Unify all header files into annhell.h
175 (Thu, 02 Jun 2005 08:32:31 +0200).
176 * 1065: Create a document about the extended commands
177 (Closed by #1067; Thu, 02 Jun 2005 08:34:28 +0200).
178 * 1008: Support for 'keyboard splits': ranges of notes that a track will
179 ignore. This should allow to have multiple tracks playing the same
180 notes but with different channel maps and, for example, having a
181 guitar glissando pan from left to right
182 (No longer needed, a pan glissando can be done by using plain channel
183 volumes, as they are now immediately applied;
184 Thu, 02 Jun 2005 08:44:45 +0200).
185 * 1068: Add vibrato to ss instruments (Thu, 02 Jun 2005 13:28:39 +0200).
186 * 1069: Add vibrato to language (Thu, 02 Jun 2005 17:28:41 +0200).
187 * 1072: The instrument in midiin should also be an AHXM script
188 (Fri, 03 Jun 2005 19:08:15 +0200).
189 * 1073: The measure boundary checks should include line numbers
190 (Mon, 06 Jun 2005 16:29:28 +0200).
191 * 1066: All code that open files should use a special version of fopen()
192 that searches in a path of directories (Mon, 06 Jun 2005 17:52:44 +0200).
193 * 1017: mp_doccer documentation is severely outdated
194 (Tue, 07 Jun 2005 13:46:36 +0200).
195 * 1077: Delete all stdout crap (Sat, 11 Jun 2005 20:27:43 +0200).
196 * 1078: After a measure change, all measure bar checks break
197 (Sat, 11 Jun 2005 21:03:24 +0200).
198 * 1075: Unify everything inside the same executable (closed by #1079;
199 Sun, 12 Jun 2005 18:34:35 +0200).
200 * 1076: Make the unified executable to accept all options as command
201 line arguments (Sun, 12 Jun 2005 18:34:40 +0200).
202 * 1080: Take last group part into account when calculating its length
203 (Wed, 15 Jun 2005 16:31:30 +0200).
204 * 1081: The end of song is incorrectly detected. It can be reproduced by
205 having a very long note that ends longer after the last inserted event
206 (Thu, 16 Jun 2005 13:42:10 +0200).
207 * 1082: Wave loading should be cached, to optimize the loading of the
208 same sound from different tracks (Closed by #1084;
209 Thu, 16 Jun 2005 14:04:06 +0200).
210 * 1083: When a named block is referenced at the end of a line inside
211 another block, a syntax error is generated (Thu, 16 Jun 2005 18:32:54 +0200).
212 * 1071: Add the posibility to start a song from a given measure or time
213 (Sun, 19 Jun 2005 10:56:11 +0200).
214 * 1085: Add skip_secs capability to MIDI output
215 (Sun, 19 Jun 2005 12:48:51 +0200).
216 * 1002: Build an audio filtering tool to test effects
217 (Discarded; Tue, 21 Jun 2005 16:12:42 +0200).
218 * 1034: tempo_from_wave() will never work; when the wave is loaded, it's
219 too late for the tempo to be set, as the ss_song stream has no tempo
220 information. The only solution is to just print the optimal tempo, for
221 the ahxm programmer to change it manually (Closed by 1060;
222 Tue, 21 Jun 2005 16:13:09 +0200).
223 * 1067: Fill the extended commands document (Tue, 21 Jun 2005 17:19:28 +0200).
224 * 1060: Add print_wave_tempo to language (Thu, 23 Jun 2005 08:22:06 +0200).
225 * 1055: Add signal control to cleanly close the devices
226 (Thu, 23 Jun 2005 13:33:31 +0200).
227 * 1088: The 'wav' command doesn't bang when a sound can't be loaded
228 (Thu, 23 Jun 2005 17:32:49 +0200).
229 * 1090: Add a new sound generator, called 'stream' or something like that,
230 to simply stream a wave file into the current process, meant to avoid
231 loading very large files into memory and to help in using Ann Hell Ex Machina
232 as a remixing tool. These files will probably be limited to using the same
233 sampling rate as ahxm to avoid expensive conversions (Closed by #1091;
234 Mon, 12 Sep 2005 06:26:02 +0200).
235 * 1089: Add support for loading .mp3 files by using a cache (probably
236 in ~/.annhellcache) and external tools as mpg321
237 (Tue, 13 Sep 2005 19:45:29 +0200).
238 * 1086: MIDI output is still done to stdout (file descriptor 2)
239 (Wed, 14 Sep 2005 08:22:07 +0200).
240 * 1095: Clearly document the still unsupported things (for example,
241 double dots in lengths, immediate volumes) (Closed by #1097,
242 #1098; Thu, 13 Oct 2005 17:36:56 +0200).
243 * 1099: Add command-line options to mute and/or solo tracks
244 (closed by #1100 and #1101; Wed, 23 Nov 2005 13:27:15 +0100).
245 * 1101: Add command-line options to 'solo' a track
246 (Wed, 23 Nov 2005 15:54:28 +0100).
247 * 1102: Add a new command to move the current note cursor backwards
248 using note length notation (Tue, 06 Dec 2005 09:15:38 +0100).
249 * 1092: Release 1.0.0 right now and make it a stable CVS branch
250 (Mon, 19 Dec 2005 17:33:58 +0100).
251 * 1104: Tempo changes are very broken (try examples/tempo_change.ahs)
252 (Sat, 07 Jan 2006 17:11:04 +0100).
253 * 1106: Implement func_fader() by using the cursor instead of the
254 size, and deactivating itself by setting e->func to NULL
255 (Closed by #1107; Tue, 17 Jan 2006 08:55:37 +0100).
256 * 1107: Implement func_fader() by not changing the size
257 (Tue, 17 Jan 2006 09:08:39 +0100).
258 * 1105: Modify effects to use struct ss_wave instead of a plain wave
259 (Tue, 17 Jan 2006 15:47:27 +0100).
260 * 1020: When a source file includes multiple songs, there should exist a
261 way to mark song / track changes. This should be used to include text
262 messages as ID3 tags or even to generate .cue / .toc files
263 (Tue, 31 Jan 2006 17:28:33 +0100).
264 * 1109: Wave page loading crashes when trying to load a non-cached wave
265 file (Wed, 01 Feb 2006 15:55:58 +0100).
266 * 1103: Add a command line switch to skip music in the 'hard' way,
267 that is, just skipping the events (Thu, 02 Feb 2006 07:50:29 +0100).
268 * 1091: All 'plain' wave files (i.e., all except .pat files) should be
269 paged instead of read directly in memory (Thu, 02 Feb 2006 07:50:29 +0100).
270 * 1110: Add some way to map mono wave files to certain channels. It can be
271 done by adding two new variables to struct ss_wave: a 'first channel', to
272 hold the first channel that will contain the generated samples (default 0,
273 start from the first channel) and 'skip channels', the number of channels
274 to jump over (default 0, don't skip any sample)
275 (Sat, 04 Feb 2006 08:37:01 +0100).
276 * 1006: A 'choose' option, to take randomly one block or another
277 (blocks seem appropriate, but further study is necessary). A random
278 seed script command is also necessary (Tue, 07 Feb 2006 08:41:35 +0100).
279 * 1084: Add a 'copy' directive that uses ss_ins_copy_layers() to copy
280 the loaded instruments from one track into another
281 (Layer copying no longer supported since using paged waves;
282 Tue, 07 Feb 2006 08:43:59 +0100).
283 * 1114: Add a way to specify, or calculate automatically, the number of
284 channels a softsynth song uses. As of now, the default 2 channel output
285 makes necessary to change it from the command line (as the current
286 behaviour is to simply drop channels bigger than n_channels). Another
287 solution should be to add a directive to 'remap' out-of-bound channels
288 to existing ones (Sat, 19 Aug 2006 19:49:39 +0200).
289 * 1118: If no volume is set in a song, no channel is generated
290 (Sun, 20 Aug 2006 14:30:32 +0200).
291 * 1119: Change the track subcommand in the arpeggiator to be a track
292 offset instead of being an absolute one (Mon, 28 Aug 2006 15:14:03 +0200).
293 * 1070: Portamento support is still uncertain
294 (Sat, 09 Sep 2006 18:29:55 +0200).
295 * 1120: Change the portamento command to be specified in some unit not
296 depending on current sampling rate (Tue, 19 Sep 2006 06:45:06 +0200).
297 * 1007: Support for 'tonalities'; fixed transpositions for each note of
298 the octave so that, for example, a 'f' is always a 'f#' (Closed
299 by #1122; Tue, 19 Sep 2006 06:48:34 +0200).
300 * 1122: Add tonalities as a string of 12 note alterations. Proper
301 tonalities will be predefined as named blocks (like, say, $C_MAJOR)
302 (Closed by #1122; Tue, 19 Sep 2006 14:21:18 +0200).
303 * 1123: Add alterations as a string of 7 note alterations
304 (Tue, 19 Sep 2006 14:21:39 +0200).
305 * 1124: Document alterations (Wed, 20 Sep 2006 06:16:17 +0200).
306 * 1126: Create, as named blocks, presets for standard tonalities
307 (Sun, 24 Sep 2006 11:44:51 +0200).
308 * 1129: Wobble effects should have a 'gain' parameter to set the rate of
309 affected / original signal (with a default to 1, all affected /
310 no original) (Sun, 15 Oct 2006 21:00:57 +0200).
311 * 1131: Alterations seem to fail when a note has , or ' on it
312 (Wed, 01 Nov 2006 21:31:51 +0100).
313 * 1133: Change the EOT event to not being inserted in the compilation
314 stage, but when converting to softsynth events; this way tracks with
315 events that are only generated by the arpeggiator would not be silent
316 (as in the "Waiting for Tomorrow" song panned basses)
317 (EOTs are inserted in song_sort(); Thu, 23 Nov 2006 19:05:36 +0100).
318 * 1132: Now that ss_ins_frame() returns 0 if the instrument is disabled
319 and no longer sounding and instruments are disabled on track end, it
320 can be possible to end the song only when no more sound is generated
321 (Thu, 18 Jan 2007 18:22:49 +0100).
322 * 1113: Add a special, non-automatic mark (named START or so) to be set
323 to the time offset where new tracks will start. This way, a song can be
324 made to start at a given offset, easing the creation of 'compilation' or
325 'full album' files. Of course, this mark should be redefinible
326 (Fri, 02 Feb 2007 11:53:58 +0100).
327 * 1115: Add a special, automatic mark (named END or so) that will be
328 set on each track end if it's longer than the previous ones
329 (Mon, 05 Feb 2007 13:42:13 +0100).
330 * 1130: Add an end-of-track event, where effects can be reset (to stop
331 consuming CPU) and instruments released (to free memory)
332 (Closed by #1135; Tue, 13 Feb 2007 11:13:04 +0100).
333 * 1136: Document START and END marks (Wed, 14 Feb 2007 09:00:47 +0100).
334 * 1135: Clear all effects on EOT (Wed, 14 Feb 2007 09:04:32 +0100).
335 * 1137: Add a test for the 'attack' command (Wed, 14 Feb 2007 13:18:57 +0100).
336 * 1134: Add a new softsynth directive, 'attack', same as 'sustain' but for
337 the start of a generator (Thu, 01 Mar 2007 13:32:57 +0100).
338 * 1121: Add all distortion waveshapers as commented in 'foldback'
339 (Wed, 07 Mar 2007 13:34:55 +0100).
340 * 1003: There should exist 'some kind' of effect for note volumes
341 to add a random variation, to add 'humanity'. This cannot
342 be a standard digital effect as it should be different
343 for each note (Mon, 19 Mar 2007 08:32:02 +0100).
344 * 1140: Document the pipe in wav commands
345 (Fri, 17 Aug 2007 14:24:35 +0200).
346 * 1141: Change transconv() to look to the system() call return code and
347 keep trying until a successful command is executed
348 (Fri, 24 Aug 2007 10:14:10 +0200).
349 * 1138: Use ffmpeg as a fallback for audio file conversions (needs #1141
350 closed) (Fri, 24 Aug 2007 10:32:39 +0200).
351 * 1144: Fix number of track counts (Tue, 11 Dec 2007 10:18:26 +0100).
352 * 1143: Fix solo tracks (Tue, 11 Dec 2007 10:37:30 +0100).
353 * 1146: Randomness in volume should not be architecture-dependent
354 (Thu, 13 Dec 2007 14:05:50 +0100).
355 * 1145: Fix breakage added in 036159407ddbff1017c513d9ce8c4fc0b7aab8f7
356 (Fri, 14 Dec 2007 13:23:55 +0100).
357 * 1142: Add a PulseAudio driver (Mon, 21 Jan 2008 14:12:59 +0100).
358 * 1148: Add some directive to add to the library path
359 (Tue, 29 Apr 2008 13:45:51 +0200).
360 * 1147: Add some directive to set ss' main volume
361 (Mon, 12 May 2008 13:38:39 +0200).
363 Email bugs to angel@triptico.com