New in 0.9.4: Incompatibilities: - new file version (3.0) because of new stuff. Bug fixing: - doc_delete_chord didn't check NOTES_CHORD before looking at u.chord.maxsize. It didn't crash for surely wrong reasons... - To conform with GNU's policies (to be hosted at savannah) some files have been slightly modified (adding 'public domain' notice, changing 'linux' by 'GNU/Linux'). - The base frequency in gen_freq.c has been set to 880Hz instead of 440Hz. It should be correct now (well...) Major improvements: - Clefs (G, F, C, G 8va, G 8bv) Miscellanous: - Changing URL from http://sed.free.fr/gcomposer to http://www.nongnu.org/gcomposer - And changing back again! New in 0.9.3: Incompatibilities: - new file version (2.0) to store positions of notes' heads, positions of accidentals of notes, positions of dots of notes, stem up/down of notes, so previous versions of gcomposer cannot read these files (well, if you don't use the new feature, you just can edit your file and replace the version from 2.0 to 1.0 and it will get loaded). Bug fixing: - Deleted text lines were not correctly handled to redraw the document, leading to weird drawing ('r' could be used to set everything correctly but hey). I use a gtk+ 2.2.1 to code and it is far from optimized so this bug did not occur because everything was invalidated anyway after a change in the document. - the cursor was not forced visible when inserting a music line (or also a text line) after a text line. - the tempo was not displayed in the GUI when doing a load or a new. - after deleting a text line the display was incorrect with recent gtk (I develop with gtk 2.2.1 which is a bit old). The deleted text line didn't disappear and the following lines were at their old position. This was a serious bug. The user had to press 'r' to refresh the display. - bug in actions/insert_chord.l. The chord was not forgotten in the history data when doing a "redo" so if later on the user does a "new" or "open" we call "free" twice on a given pointer. You know what happens then... (core dump for those who don't). This kind of bugs is very tricky to get, so I "capture" malloc, realloc and free and do a mini backtrace of calls to see what code calls these functions. I also print the pointer. Then I manually check the trace and see if there is no double-free. There was one... You know you have a malloc/free problem when the program crashes in weird places. Here, it was when calling "fopen" somewhere, which should not crash. (You also have to know that "fopen" indeed calls "malloc".) See "main.c" for how to "capture" malloc and free and how to print the stack of callers (for IA32 architectures, unfortunately this is very platform- specific). Hell, this actions stuff is pretty new to me (sure it's no excuse, but hey), let me check if the other actions have this problem or not. (OK, after reading all actions I claim that normally everything is clean.) (Shame on me for this one by the way; a core dump, BEURK!) - when using t or T to set the duration of a note, if the duration is not changed (ie. when it is a semibreve or a quasihemidemisemiquaver) the undo/redo was used (ie. doing undo would have done nothing because well, nothing had changed, old value = new value). Now if values are equal no undo/redo is stored. Major improvements: - setting octave with keys 0..9 from an idea of David Baron - adding toggle buttons and menu to select the default duration of inserted notes and rests (idea of David Baron again) - horizontal positionning of note heads, accidentals and dots - stem up/down for notes. The playback engine has changed (we have some kind of voicing mechanism with two voices). Minor improvements: - adding a visual indication in the status bar to show which note of a chord you currently edit. - midi volume's settings in options as requested by David Baron New in 0.9.2: Bug fixing: - changing signal handling in parachute. On some hosts, SIGWINCH was sent at startup and so the program left without even showing the main window. Thanks to Bob van der Poel for reporting this bad behavior. - changing MIDI error message for ALSA. Before the message reported the device of "Force MIDI device" if there was a problem with ALSA MIDI which leads to confusion. - fixing a bug in the options' window. OSS output was never selected when clicking OK due to bad ordering in a ?: operator (shame on me). Major improvements: - greying out GUI elements that don't respond to user's actions. Hopefully all is coherent. If you see something wrong, contact the authors. Minor improvements: - adding some verbosity in parachute (especially when the document has not to be saved, there is no message at all, it's not user-friendly). CTRL+Z was also caught and is no more (users may want to stop gcomposer, who are we to decide it's an error, huh?) - fixing vocabulary/grammar in some places (thanks to Chris Beagles for some musical vocabulary) - fixing virtual keyboard (T and U removed since we have shift) - changing mouse's usage. You have to release the mouse button for the cursor to go at the mouse's position. And the mouse has not to move for it to work. I think it's better than before especially for high zoom levels. Before we moved the cursor after the click. At high zoom levels it may move the view which is annoying if one wants to scroll the view. So now you click and release quickly and the cursor goes there. Otherwise you simply start a 'move view' command which will be smooth. - changing some labels in the options' window. David Baron reported some oddities due (I think) to bad words leading to a wrong understanding of the program's logic. Hopefully things are clearer now. New in 0.9.1: Bug fixing: - fixing a serious bug in 'l' which let the undo/redo mechanism crash very beautifully (bug found thanks to the windoz compiling, shame...) (the bug was that 'l' parses the file 'actions.list' to get the already known actions and then parses all the actions/*.l files; after that it generates history_enum.h where is the 'history_type' enum. It also generates actions.c where is the array 'histories'. The problem was that to generate the enum I used the order from 'actions.list' and for the array the one from parsing actions/*.l which may differ! It didn't on my host because 'actions.list' was generated by first parsing actions/*.l so the match was in a way 'accidental'; but on windoz, the order in actions.list and the one from the parsing of actions/*.l was different) - fixing a less serious bug in the tutorial (if you run the tutorial and directly click on the 'text' stuff, there was a missing note) Major improvements: - ALSA MIDI, you can disable the compiling of it in the Makefile.common (for those like me who don't have ALSA) Minor improvements: - changing the way the scrollbars are updated (speeds up things a little on some systems) - changing size of fonts of various gui elements - MS Windows version (no win95, maybe no win98 either, problems with gtk) (why the fuck did I do that?)