-------------------------------------------------------------
 incomplete list of changes, explained as cryptic as possible
--------------------------------------------------------------
1.0.0: March 29, 2001
        * merged the notename spin button from the unreleased 1.1
        devel branch.

0.7.38: March 15, 2001
        * src/dataparser.py: included files won't pollute the including
        files name space.

        * we use FDL for the online documentation.

        * moved the extra copyright info out of COPYING, the GPL itself
        is copyrighted, and shouldn't be changed. 
        
        * converted documentation to texinfo. Now we can make a nice
        printed manual (even if we don't have content to that yet).
        Also, it is possible to use lilypond and lilypond-book to
        write longer texts about music theory with inline images
        both for html and dvi output. Small fixes here and there in the
        documentation.

        * src/identifyscale.py: small bugfix to gui, only visible after
        upgrading to gtk+ 2.2.9
        
        * the LessonFileManager will sort the file listing and add white
        space so the page listing all lesson files can be word wrapped.

	* some work on the progression-* lesson files. Added id-by-name
        content type to Giovannis lesson files.

0.7.37: March 10, 2001
        * src/dataparser.py: fix to make include(filename) work with python2.
        Compile re.compile operator_re only once

        * mpd/parser.py(Lexer): compile the re's only once. (6% speedup to
        parse_to_score_object)

        * fixed bad URLs in INSTALL and welcome.html

        * ran python with -tt options and fixed some inconsistent use
        of tabs and spaces

        * soundcard/midifilesynth.py: an os.wait(pid) call fixed the problem
        with processed not being killed properly.

0.7.36: March 8, 2001
        * Oliver Vollmer: updated german translations.

        * debian/rules: don't include INSTALL in /usr/share/doc/solfege

        * debian/copyright: fixed url of homepage.
        
        * soundcard/midifilesynth.py(play_track): Mats Bengtsson noticed
        that Solfege will fork a new process each time it run the external
        midiplayer program, and will eventually eat up too much resources.
        This because I don't have a clue about threading, multiple
        processes and fork/kill/execl. The kill call didn't kill it properly.

        So we are back to using os.system for now. The function using fork
        and execlp is still in midifilesynth.py if someone want to fix it.

        * friendlier error messages if the sound card is not setup
        or if the device is busy and used by another app.

        * converted README to texinfo, small adjustment of what goes into
        INSTALL and README

        * Corrected the key binding listing in the doco for chord exercise.

        * Some new lesson files for the chord exercise from Giovanni
        Chierico: altered-1 altered-2 diatonic-1 diatonic-2
        
0.7.35: March 5, 2001
        * minor documentation updates, change (C) 2000 to
        (C) 2000-2001 in online-docs/C/definitions.m4
        
        * src/identifyscale.py, src/harmonicintervall.py,
        src/melodicintervall.py, src/idbyname.py:
        added necessary flashbar.clear() call.

        * debian/rules: hack to build m68k binaries without
        oss sound. Ok, lets see if we can get this into the
        testing distribution now.
        
0.7.34: March 4, 2001
        * Rewrote the FlashBar to use HarmonicProgressionLabel
        so it can display string like I-VI(6)-V-I

        * configure.in: make --with-gnome do the right thing.

        * removed the "Use antialised canvas when possible" because
        (if I remember correctly) it was necessary for some of the
        instruments because I forgot to make pologons anticlockwise.
        Let me know if there still are problems with the canvas.

        * src/gu.py(FlashBar): added push, pop and clear method.

        * This release will delete your preferences stored in 
        ~/.gnome/solfege0.7
        
        * Some lessonfile i18n bugfixes.

        * LessonManager will no longer choke because of tmp files
        created by vim.

        * melodic-intervall: use utils.int_to_intervall name to get
        the feedback in the flashbar correct when we don't use the
        buttons interface (Wasn't this fixed months ago???) + fixed
        another bug ocouring when the user clicked on a tone to answer
        an intervall bigger than a decim.

        * src/utils.py(int_to_intervallname): don't give direction for
        unison intervall.

        * added 'Give up' button to harmonic-intervall, melodic-intervall,
        identify-scale, idbyname

        * added copyright notice to some files that was missing it.

        * renamed the constants used for q_status

        * forgot to add autorepeat_if_wrong to ConfigWindow.on_apply.

        * typo in online-docs/C/bug-reporting.html.m4

0.7.33: February 28, 2001
        * The program will delete identify-scale statistics created
        with any older release, because one key in the db was changed
        a few releases ago.

        * Preferences window: added global option; the program can
        be configured to repeat the last question if you answer wrong.
        This is used in harmonic-intervall, melodic-intervall,
        identify-scale, idbyname, compare-intervalls

        * BeamEngraver.engrave: 1/16, 1/32 and 1/64-notes should
        work now. (There are probably some special exceptions I have not
        covered yet.)

        * added -w, --warranty
        
        * added -h to be short for --help.

        * --version will also display copyright information.        
        
        * made default program startup more quiet. Added
        --verbose-sound-init command line option.

        * 2000 -> 2000-2001 (c) search and replace

0.7.32: Feb 25, 2001 "My fingers are soon falling of..."
        * Solfege now works with Python 2.0. But according to FSF,
        you cannot import GPL'ed C extensions in Python 2.0 because
        of GPL is incompatible with the licencse Python 2.0 is
        distributed under. So to be safe, if you want to use python
        2.0, you should configure with --disable-oss and use an
        external midiplayer such as playmidi, drvmidi or timidity.
        Let's hope Python 2.1 be released with a GPL compatible license.

        * utils.py(parse_url): fixed regular expression to make it
        work with python 2.0

        * mpd/parser.py: updated some .append calls to make them work
        with python 2.0

        * src/statistics.py(het_hash_of_lessonfile): call expanduser

        * src/startup.py: don't show splash window or initialise
        sound if we use --help, --gtk-help, -v, --version command
        line options.

        * configure.in: a little cleanup. Check for pygtk and
        pygnome without acutally running a python program that
        imports them, because this is nicer to autobuilders that
        build the program without and X display available

        * rhythm.py: use SHADOW_IN for the frame where we enter
        rhythm elements.

        * better sectioning in the menu used to select midi instrument.

        * lesson-files: completed the songs in the file 'barnesanger'

        * online-docs/C/lessonfiles.html.m4: added a paragraph about
        tripple quotes in lesson files.
        
0.7.31: Feb 23, 2001
        * id-tone exercise will not run the on_start_exercise if we
        are running without gnome, since the whole exercise is unusable.

        * melodic-intervall, sing-intervall: The program will no
        longer tell you to configure the exercise better if you select
        a to small range of tones to create the question from, but
        will silently adjust the range. Thanks to Giovanni for
        reporting this.

        * added popup window while waiting for the app to start.
        Use --no-splash if you don't want to see it.

        * fixed the --sound-using-drvmidi and --sound-using-timidity
        command line options. Updated the man page.

        * bf: makefile changes in last release broke the html->text
        conversion of GPL.html.

0.7.30: Feb 21, 2001
        * we use singintervall24.xpm as icon for Debian and GNOME
        menus. I'm sure some user with more graphical talent than I
        can come up with something better.
 
        * src/mainwin.py: fixed Docviewer.source

        * src/dataparser.py: the parser will report correct
        filename and linenumber if there are errors in files
        that are included with include(filename)
        
        * default.config: make id-tone exercise simpler by default.

        * twelvetone: add .clear() to the constructor, so we
        see an empty line at startup.

        * exernal midi player: make timidity less verbose

        * small adjustments to the statistics viewer.

        * small tweaking to the startup scripts for windows and
        unix. i18n should work even for windows now...

        * only compress the installed man page when we build debian
        package

        * src/inputwidgets.py: workaround for weird floating point
        error when LC_ALL is set. This will not be necessary after
        changing to gnome-python-1.4

        * Internationalization fixes. I had done very little testing
        lately, and it has been broken when using the tarball (and maybe
        .rpm), the debian package worked fine.
        
        * Simplified the makefiles a little. The configure script
        only need to create the toplevel Makefile and Makefile.inc,
        not all the makefiles in the subdirs.

        New dist target. Each subdir has to set the  dist_files
        variable to include all files that has to be included.

0.7.29: February 12, 2001
        * dropped the app bar. Added feedback in a statusbar
        in the middle of the practise_area. Some other small gui
        adjustments.

        * simplified src/cfg.py a little.

        * on_end_practise will be called when you change the input
        widget in melodic and harmonic intervall exercise.
        
        * small documentation updates.

        * 5 new lessonfiles for the sing-chord exercise.

        * souncard/track.py: added separate play_track function
        that don't use fork() to be used on win32.

        * solfege.gtkrc: a little cleanup, now even the small numbers
        for HarmonicProgressionLabel is visible.

        * A few changes to make the windows port work. Per-user-
        config file will be $HOME/solfegerc0.7, not $HOME/.solfegerc0.7
        because windows95 seems to like the first name better. I also
        updated the makefile for win32.

        * Rewrote lessonfile.py and added dataparser.py. The file format
        is backward compatible. New is the include(lessonfile) command.
        See lesson-files/singchord-all
        
        The new lessonfile code is easier to read and maintain and it
        is faster. Comparing the old and new code on python 1.5.2 show
        15% faster parsing. Doing the same with python 2.0 and 2.1a1
        show 45% speedup. 
          
        And btw, the python 2.x interpreters are more than twice as
        fast as python 1.5.2 for this type of code.

        The new parser will also give a little better error messages,
        and tell you the linenumber that has an error (but line numbers
        will be wrong if you use the include command)

        The parsing of lessonfiles at startup are 5 times faster with
        the new lessonfile code.

0.7.28: January 21, 2001
        * configure.in: bugfix to --sysconfdir combined with missing
        gnome-config script + fix some without-gnome mess

	* soundcard/: oss_common.py, oss_sequencer.py, oss_sequencer2.py:
	After some changes, it seems that both /dev/sequencer and
	/dev/sequencer2 works fine for all exercises. But if you don't have
	an AWE32 card, you might get piano sound instead of percussion on
	the rhythm exercise.

	* src/lessonfile.py: SingChordLessonfile are now a little smarter
	when doing random transpose, you wont get key signatures with more
	than 5 accidentals.  Earlier you could get 8 or more. This also
        adds the "key" variable to the lessonfile. See
        online-docs/C/sing-chord-help.html.m4

        * mpd/engravers.py: a little more space after key signatures.
        
        * src/singchord.py: use global preferences to get preferred
        instrument and velocity
        
        * mpd/musicdisplayer.py: fix for clicking on xshifted notes

        * solfege will now kill the external midiplayer if you
        try to play a new sound before the other is finished. This
        give people using playmidi or timidity a much better feel.

        * use AWE_SET_CHANNEL_MODE and AWE_DRUM_CHANNELS to get
        percussion to work. I'm not sure how the macros work, so
        someone could explain this to me.

        Added checkbutton on configwindow to use this macros if
        you have a Sound Blaster AWE card.

        * configure.in: configure will fail with an explanation if
        m4 is not installed. If you don't want to install m4, use one
        of the precompiled binaries as sourceforge or www.debian.org

        * configure.in: added --enable|disable-oss-sound, so it can
        be built on systems without OSS sound

        * configure.in: added check for python bindings for gtk
        and gnome.

        * fix: the guitar widget was unusable for a few releases since
        some cleanup to mpd.MusicalPitch.

        * fix: the callback from SelectLessonfileWidget got called
        twice.

        * the keyboard shortcuts won't mess with the config page
        of exercises any more.

        * added the file solfege.desktop to be used with GNOME

0.7.27: Desember 9, 2000
        * small bugfixes to the Makefile.in uninstall target.

        * mpd/mainwin.py: fixed bug with clicking links and updating
        the status line.

        * mpd/engravers.py(KeySignatureEngraver.engrave):
        fixed type in notename: his -> bis

        * all exercises should use the velocity 64 by default.

        * online-docs/C/GPL.html: now in html format instead of
        plain ascii inside <pre></pre>

        * online-docs/ : small changes to the Makefile.in's to use
        /data-targets.make

        Added copyright notice to the online documentation.
        
        * mpd/parser.py(Voice.add_notehead): Discard beam request on
        1/4-notes and longer durations.

        * src/identifyscale.py: changed how the displayed scale is written.
        Now we use a key signature.

        * mpd/parser.py(Staff.accbarline): fixed a bug with accidentals
        and key signatures.

        * mpd/parser.py: bf: the \key command should know about \transpose

        * some small bugfixes to harmonic-intervall, melodic-intervall,
        sing-intervall, id-by-name

        * updated the exercises on the development menu so they
        work with the latest changes to mpd and soundcard.

        * documentation:
          * identify-bpm.html.m4: two lines telling this exercise is shit.
          * id-by-name.html.m4: just a little explanation.
          * twelve-tone-help.html.m4

        * mpd/parser.py, engravers.py: improved ties. They are still
        not very good with xshifted noteheads, so thats on my TODO list.

        * reread lots of old code, removed some old crap.

        * src/statistics.py: statistics are stored in
        ~/.solfegeMAJOR_VERSION.MINOR_VERSION. So later the
        stable 1.0.x release can coexist with unstable 1.1.x

        * ConfigWindow: use a combo box to select devicefile.

        * soundcard/solfege_c_midi.c(get_synth_name): no more
        memory leak (I hope).

        * soundcard/ : we now support both /dev/sequencer and /dev/music
        Since there are some issuse with /dev/music I still don't
        understand, and it seems that this make most people happy; the
        default is now to use /dev/sequencer (updated default.config)
        
	* use the configure script to create src/configureoutput.py

        * no stem on whole note!

0.7.26.1:
        * only import gtkhtml if the user really want it.


0.7.26:
        * removed some crap that was floating around:
           soundcard/devmusicsynth.py: Synth.Xplay_track
           mpd.__init__.py: tr(notename, i)

        * src/inputwidgets.py: we need to import cfg !!

        * src/dictation.py(Gui.__init__): g_part_box is now packed
        without being expanded.

        * src/compareintervalls.py: Use only one musicdisplayer
        since it now supports changing clef. Show the music when
        the user guesses correct.

        * mpd/parser.py: better handling of shifted noteheads.
        (Let's hope) no more collisions between noteheads and
        accidentals.

0.7.25: November 8, 2000
	* PianoOctaveWithAccelName: use a fontsize available in
	Xfree 4.0.1
	
        * src/rhythm.py: bug fix when changing the number of beats in the
        question and pressing give up.

        * completed some half-finished changes to gu.nSpinButton, removed
        the temporary class newnSpinButton

        * rc files are named /etc/solfege0.7 and ~/.gnome/solfege0.7
        or ~/.solfegerc0.7 (the last for non-GNOME version)

        * gnomeconfigutils.py -> cfg.py

        * removed some crap from src/pyscript.py
        
        * Pressing F1 several times will not display the 'missing helpfile'
        page. Also fixed duplicate history entries (src/history.py)

        * added support for the new GtkHTML widget. The default is still
        to use the XmHTML-widget since thats what most people have
        installed. To try out with GtkHTML, edit ~/.gnome/Solfege,
        and change the "htmlwidget=xmhtml" to "htmlwidget=gtkhtml"
        (I have included a patch to apply to gtkhtmlmodule.c, to make
        gtkhtml 0.6.1 and gnome-python 1.0.53 cooperate. The file is
        included as pygnome-patch.diff)

        renamed src/solfegexmhtml.py -> src/htmlwidget.py
        
        * in the id-by-name exercise, the buttons with question names
        will be ordered the same way as in the lessonfile.

        * mpd/musicdisplayer.py and mpd/parser.py: Now the music displayer
        can display the music from the start until timepos Rat(x, y)

        * online-docs/C/lessonfiles.html.m4: documented clue_end and
        clue_music.

        * src/dictation.py: added clue_end and clue_music variables
        to dicataion lessonfiles. They can be used if displaying the
        first column is not good enough hint on what tones the music
        starts with. Fixed some ugly code.

        * src/lessonfile.py: removed some left-over code from the
        last changes.

        * default.config: added some values for identify-scale.

        * The program will popup a message that you have to configure
        sound from the preferences window if it fails to setup sound.

        * online-docs/C/music-format.html.m4: updated after the
        work on the mpd module.

        * app.py(SolfegeApp.handle_href), configwindow.py:  
        mailto:name@dot.com links in the documentation now work.

        * mpd: \stemup, \stemdown and \stemboth are renamed to
        \stemUp, \stemDown and \stemBoth to use the same names as
        Lilypond.
        
        * mpd: removed some spagetticode, wrote some new.
        Rewrote the Score._generate_engravers function and the engravers.
        
        The module now support beams for quaver notes (1/8) and
        semiquaver notes (1/16). 1/32 and 1/64 notes will be added later,
        I have to think a little to get the algorithm correct.
        
        Now you can change clef in the middle of the staff, and lots of
        new clefs are supported.
        
        The \key command has changed to the same syntax as GNU Lilypond:
        \key g \major;  or \key es \minor;

        mpd/utils.py: some functions not fitting elsewhere in mpd/ will
        be put here.

        * gnomeemu/xmhtml.py: user GtkText.insert_defaults instead of
        insert_text

0.7.24: October 14, 2000
        * src/selectlessonfilewidget.py: now the widget is watching
        the config variables 'lessonfile' and 'lessoncollection'. So
        links to exercises for lessonfile based exercises should work now.

        * mpd/engravers.py(StemEngraver): improved the code thatselects
        stem direction.

        * the program adds --disable-sound to the command line before
        loading the gnome libs.
        
0.7.23: September 28, 2000
        * src/mainwin.py(MusicViewerWindow): connected the 'destroy'
        event to m_app.close_musicviewer to fix problem when closing the
        window using the windowmanager instead of the close button.
        
        * chords: sort the buttons for inversion and toptone.

        * melodic-intervall: fixed problem when changing input widget
        and the question is out of range for that widget. Also use
        config/default_instrument when playing sounds.

        * fixed bass widgets to sound one octave lower

        * changed lessonstatistics compare the hashvalue of the
        content of the files when deciding if the lessonfile have
        changed and statistics has to be deleted. This way you can
        keep your statistics when upgrading if the lessonfile is the
        same and the file format for the saved data has not changed.
        
        * bugfix: nothing happened when pressing 'new question' after
        changing lessonfile.

0.7.22: September 13, 2000
        * src/musicdisplayer.py: bug fix to make it work with
        gtk-themes. Thanks to Gerard Milmeist for reporting this.

        * src/configwindow.py: bug fix to instrument selection.

        * src/lessonfile.py: removed some obsolete code

0.7.21: September 10, 2000
	* topdocs/INSTALL.texi: fixed some bogus messages

        * mpd/parser.py: handle ties between three and more notes:  c~ c~ c

        * src/dictation.py: breakpoints in music. The program can play
        smaller parts of the music.
        
        * changed mpd.play_music to take 'start' and 'end' argument
        to play only parts of the music, for example from bar 2 to 4.
        Small changes to mpd.parser to make this work.
        
        * soundcard/: Track.set_bpm accept a third argument 'notelen'
        that defaults to 4. 

        * moved the files in exercises/ to src/ to make the new global
        vars in gnomeconfigutils work as expected.

        * src/gnomeconfigutils.py: added notify feature. Used this
        in nSpinButton and nNotenameRange. Using the notify feature, changed
        the config page for all exercises to watch the config data, and then
        moved the .configure_exercise methods to the teacher classes.

        * more german translations, thanks Oliver.

        * french translations by Jean Orloff

        * italian translations by Mauro Colorio.

        * Some work on lesson files and statistics. Running Solfege
        with different locale settings should work as expected for
        lesson file exercises. Please test with different locale
        settings and report how it works.

0.7.20: August 25, 2000
        * reoved 'never twice' check button from all exercises.
        This is things the user should not have to worry about.

        * melodic-intervall: only Wrong/Correct feedback.

        * updated german translations, fixed translation of scale
        names in scale statistics. Thanks Oliver Vollmer

        * some minor changes to lessonfile format: identifier names
        can contain a '-'. More work in online-docs/C/lessonfiles.html.m4

        * devmusicsynth.py: handle also 255 < bpm < 511

        * LessonFileManger: fixed brokens links when generating
        the page with "All installed lessonfiles"

        * abstract.LessonbasedGui.configure_exercise: fixed a
        variable I forgot to rename.
        
        * SolfegeApp.quit_program: the program will exit nicely
        even when you did the *stupid* thing of trying to run
        two instances of Solfege at the same time.

        * exercises/abstract.py (_add_auto_new_question_gui):
        added a .show()

        * The music displayer will draw into a pixmap, and only
        recreate the pixmap when the music change. Less flickering
        and faster redraws!
        
0.7.19: August 21, 2000
        * the music displayer is now a ScrolledWindow. Still too
        much flickering, and not possible to scroll automatically
        in sync with the music played.
        
        * some work on dictation exercise.

        * src/statistics.py(AbstractStatistics.get_keys): fixed a
        typo that caused some problems with invalid statistics. But
        there are still issues. I think the problem occour when we
        some other error that cause statistics to be added for the
        'None' key.

        * Small adjustments to the gui

        * exercises/compareintervalls.py: fix problem with harmonic
        intervall, where there could be create intervall <f fis> that
        the displayer cannot display properly.

        * mpd/intervall|musicalpitch.py: buxfig to intervall arithmetics.
        This makes sing-intervall work correctly.

        * window heading will show what exercise and lesson file you
        are using.

        * bugfix: show/hide toolbars
        
        * Misc cleanup, removing unnecessary code.
        
        * gnomeemu/gnome/xmhtml.py: we use our own html-to-text
        convertor, no need for lynx

        * src/instrumentselector.py: changed the look of the widgets.
        Updated the config window because of this.

        * A window showing the traceback will popup on exceptions.

        * Mainwindow resize policy is configurable from the preferences
        window.
        
        * a few lines of documentation was written.

        * added 4, 5 and 6 string bass input for intervall exercises
        and did some cleanup on src/inputwidgets.py

        * fixing typo in intervall exercises, thanks Harald Terkelsen.

0.7.18: August 5, 2000
        * the statistics viewer is only updated when the user
        actually want to see it. This because the new viewer is
        slower to update than the old one.

        * updated german translations, thanks Vollmer

        * exercises/harmonicintervall.py: An option on the config
        page to get a new question automatically after x seconds,
        if you answer correct.

	* mpd/parser.py: simple hack to avoid colliding accidentals.
	The parser still need to be fixed before 1.0

	* topdocs/AUTHORS.texi it used to create AUTHORS and
	online-docs/C/AUTHORS.html

0.7.17 August 4, 2000
        * src/statistics*.py: New viewer that don't use XmHTML.
        Now even statistics can be used if you don't have GNOME.

        * exercises/rhythm.py: set tempo on config page. This 
        exercise will not use config/default_bpm. Minor documentation
        update.

        * exercises/chord.py: gui improve/fix

        * gnomeemu: GnomePropertyBox: it works :-) Now you can use
        File|Preferences even when you are running without gnome.

        XmHTML-"emulator" will strip away html code, and only one
        right click is enough to follow links

        * configwindow.py: fixed the way InstrumentSelector was
        contructed

        * Some additions to the documentation, fixing errors about
        key bindings.

        * abstract.Gui.__init__ take optional argument no_notebook=1.
        This is used in twelve-tone exercise.

        * src/selectlessonfilewidget.py: clear title label when
        you select user collection and there are no files in it.

        * minor syntax change for links to exercises. See
        online-docs/C/helpfile-format.html. Updated the rest of
        the program.

        * added a "Velocity:" label to instrumentselector.py
        (InstrumentSelector). Some of those classes really need better
        names.

        * GnomeCanvas is antialiased by default

        * removed all code about popuping exercises
        
0.7.16: July 25, 2000
        * new option to configure: --without-gnome
        This let you run  Solfege on a system with only gtk and python
        bindings for gtk installed. Since I am not a autoconf guru yet,
        you have to use this options if you are running without gnome.
        (At the moment, Solfege without gnome is still a stip down version
        of Solfege.
        
        * harmonic and melodic intervall will ignore intervalls greater
        than decim.

        * gnome-emu/xmhtml.py: move the cursor to the text where there
        is a link in the html document, and right click to follow the
        link.

        * Rewrote much of the makefiles, reduced the amount of chaos
        in the world.

        * miscutils.py -> util.py

        * Rewrote some of the gui code used to select lesson file,
         see src/selectlessonfilewidget.py. You can now include a
         longer text in the lessonfile that can include links to
         configure the exercise or links to other exercises and
         documentation

        * Some changes to lesson file format to support i18n of files
        distributed independently of Solfege. Translations are kept in
        the actual lesson file instead of using the same catalog as
        Solfege.

        Header block:
        'description' is renamed to 'title', and should be a short
        online description of the file

        'description' is now used for a longer text describing
        the file. It can contain html tags.

        Translations  can be entered like this:
          title = "Major, minor, dim and aug in root position"
          title(no) = "Dur, moll, forminsket og forstrret i grunnstilling"
          title(de) = "Dur, Moll, verm. und berm. in Grundstellung"
        if the file is distributed outside of Solfege or if the author want
        to be independent of the solege gettext catalog.

        * Added build-depend: libgnome-dev because I use gnome-config

        * The online documentation is preprocessed by m4

        * Some internal reorganisation, more has to be done.
        src/main.py is gone, new files are src/app.py and
        src/mainwin.py, src/configstuff.py -> src/configwindow.py

        History in src/history.py
        
        * the program will use /etc/gnome/config/Solfege some defaults.
        These were earlier scattered all over the code. Made necessary
        changes to the makefiles

        * some work on gnome-emu

        * src/statisticsviewer.py: Marked some more strings for translation.

        * src/pyscript.py, src/solfegexmhtml.py: Added some experimental
        scripting to the online documentation. At the moment it can
        get strings out of the config database.

        * Added key bindings from all exercises. It is now (almost)
        possible to practise without using the mouse.
        
        * exercises/singintervall.py(new_question): bugfix to make
        more than one intervall work.

        * mpd/musicalpitch.py: MusicalPitch.__add__ can take
        Intervall instance as second argument.

        Musicalpitch.str() renamed to notename(). Updated the rest
        of the program.
        
        * mpd/intervall.py: New Intervall class

        * solfege.1: mentioned where statistics is saved

        * harmonic and melodic intervall will give an error dialog
        if the exercise is wrongly configured

        * exercises/rhythm.py: polishing the ui.

        * solfege.gtkrc: removed some trash, changed the font
        selection string to fix Vollmers problems.

        * Track(start_note, stop_note): added int(pitch) to fix
        problem with compare-intervall when using an external midi
        player.

        * Misc cleanup to statistics.py and statisticsviewer.py.
        Necessary changes to the exercises since some classes changed
        name and *Statistics.add_wrong require one more argument

0.7.15: 1 July 2000
        * exercises/abstract.py(IntervallGui.use_inputwidget): show
        what is the tonika when changing inputwidget

        * po/de.po: Added some translations I forgot for 0.7.14

        * configure.in, Makefile.in: The configure script will check
        for lynx, so building will not fail if it it not installed.

        * exercises/chord.py: Fixed bug with transposition of chords.

        * exercises/harmincintervall.py: Right click on button
        will play what intervall.

        * src/configwindow.py: 'config/picky_on_new_question'
        Added support for this in all exercises.

        * exercises/rhythm.py: Better feedback on what's 
        right and wrong.

        * exercises/singintervall.py: will only show one
        'new intervall'-button for the first question.

        * src/main.py(Mainwin.show_box): will call 
        exercise.on_start_practise and exercise.on_end_practise

0.7.14: 26 June 2000
        * debian/control: added Build-Depends: python-dev, debhelper
        * debian/control: removed Depends: debconf

        * src/abstract(MelodicIntervallTeacher.new_question): small fixes

        * src/miscfunctions.py(random_tonika_and_intervall): bugfix

        * completed mpd.select_clef

        * Some work on the online documentation.
        
        * online-docs/C/credits.html: added that gettext.py 
        was written by James Henstridge.

        * multiline hrefs will not make them mainwindow resize.

        * Solfege is now an official part of the GNU project. The
        program will still be hosted at solfege.sourceforge.net
        
        * Updated the manpage to be correct about config files, added
        --no-sound option and did some small adjustments.

        * Make it configurable from File/Preferences what program to
        run for URLs to external webpages.

        * No more use of ~/.solfegerc. Make it simple and let
        everything go into ~/.gnome/Solfege

        * Added souncard/fakesynth.py, it contains a Synth class
        that only print the notes the program want to play. This
        can be useful for debugging and porting. Use command line
        argument --no-sound to use this.

        * Makefiles: some changes to make things simpler, and to
        make sure swig generated files *never* is included in the
        debian package. Another try to fix the makefile mess. I
        usually break stuff doing this, so please report any problems.
        Made sure tarballs always unpack to a directory named
        solfege-x.y.z

        * exercises/rhythm.py: let the user select what instrument
        to use for playing the rhythm. Count-in.
        
        * src/gu.py: added nCombo and PercussionNameCombo.
        
        * src/gnomeconfigutils.py: added default value to get_int.
        Completed some work I started and forgott about some releases
        ago.

        * src/instrumentselector.py(InstrumentSelector): use popup
        menu instead of menubar.

        * soundcard/track.py: replaced __add__ with merge_with

0.7.13: June 4 2000
        * exercises/compareintervalls.py(new_question): fixed bug caused
        by changes to MusicalPitch

        * soundcard/midifilesynth.py(play_track): added default 60 bpm

        * exercises/abstract.py(IntervallTeacher.new_question): simplified
        some intervall arithmetics.  

        * exercises/rhythm.py: New rhythm exercise. Useable, but
        not finished yet.

        * Makefile.in: make clean should also delete compiled files
        in gnome-emu, and png/.xvpics

        * execises/identifyscale.py: Simplified code using the latest changes
        to gu.py

        * src/gu.py(Button): Just noticed you can send data with events.

        * mpd/__init__.py(transpose_notename): take integer value to tell
        how much to transpose

        * mpd/musicalpitch.py(MusicalPitch.transpose): renamed to
        transpose_by_musicalpitch, just to give it a cryptical name so
        that nobody but mpd/parser.py tries to use it.

        * mpd/musicalpitch.py: Moved code related to parser.py and
        relative mode to parser.py. Cleanup on __sub__.
        
0.7.12: May 29 2000
        * Sorry, 0.7.11 broken.

0.7.11: May 29 2000
        * mpd/musicalpitch.py: Cleanup. Really needed :-)
        * added some random_* functions to src/miscutils.py. These functions
        are used by abstract.IntervallTeacher and
        harmonicintervall.Teacher.new_question. The intervallexercises now
        to a better job making the question within a given range of tones.
        
        * Makefile.in: removed some silly working directory renaming

        * MultipleIntervallConfigWidget: small bugfix

        * exercises/singintervall.py: use mpd.select_clef

        * tools/changelog2html.py: new script to convert the changelog to
        html to be viewed from inside Solfege.

        * src/inputwidgets.py, src/configwindow.py: added support for
        antialiased canvas for guitar and accordion widget. Since antialiased
        canvas still seems to be a little buggy, this is turned off by default.
        Turn on from File/Preferences/Misc

        * small tweaks to many files.
        
        * mpd/parser.py(Track.generate_track_for_voice): Bug fix, dotted notes
        are now played correctly.

        * mpd/__init__.py: added music_to_tracklist function, that is the
        same as the old (wrong named) music_to_track, and changed
        music_to_track to only return one track, merging tracks if necessary.

        * exercises/singchord.py: make use of 'preferred_instrument' and 
        'preferred_instrument_velodicy'

        * mpd/__init__.py(compare_notenames): changed to return value
        greater than 0 if first argument is largest, return less than 0 if
        second argument is largest. Previously it returned -1, 0, or 1.

        * src/notenamespinbutton.py: cleanup, PgUp, PgDown change one
        octave, left mouse button change to the max/minimum allowed value,
        middle mouse button change one octave.  Added nNotenameRange class.

        * Added guitar and accordion input for harmonic and melodic
        intervall, and did some cleanup.

        * InstrumentSelector.play_selected_instrument: bugfix

        * Solfege officially require python 1.5.2 (it has actually done
        it for a while)

        * changelog and TODO is available from online-docs. 

        * ConfigWindow can now change the synth used for playing sound.
        Also, the first time you run Solfege, it will popup the config window
        and ask you to select how to play sounds if it is not able to use
        /dev/music

        * soundcard: tmp file creation for FileSynth is now handled in
        FileSynth.__init__, not soundcard.__init__

        * gnome-emu/: when renamed to gnome, this module will *try* to 
        emulate some of the functions from gnome. It is used to run Solfege
        on win32, but it can also be used on linux.

0.7.10: May 4, 2000
 * new Rat class. Simpler, make mpd.parser 6% faster, GPL'ed
 * small improvements to src/main.py
 * use gnome.config.[get|set]_bool for booleans
 * started working with idtone to make it useable
 * more work in ConfigWindow
0.7.9: April 29, 2000
 * cleanup of program startup, location of files needed at runtime,
   stopped the abuse of __main__.
 * gu.py: RadioButton connect to callback using 'toggled' signal
 * do not create /etc/solfege when installing debian package. Use
   default value sequencer-device=/dev/music, and have user to change
   this with /etc/solfege or $HOME/.solfegerc manually
 * mpd.parser.Score.get_midi_events() will return a list of lists of
   Tracks. This way we get one track for each voice, and can have
   different instrument on different voices in polyphonic music.
 * soundcard/mfutils.py: cleanup
 * rename solfegerc -> solfege.gtkrc
 * no link in /usr/bin/solfege->../share/solfege/solfege.py
 * More consistent use of gnome.config and VariableStorage
 * small fixes to manpage
 * Reorganised soundcard/, MidiEventStream is split to Track, Synth,
   MidifileSynth. Tracks can be added. Moved mpd/rat.py to 
   soundcard/rat.py
 * link to exercise:/xxx will show exercise page, never config page
 * various cleanups after ->/dev/music change
 * IMPORTANT: from this release you should use /dev/music instead of
   /dev/sequencer. The change is because I have read my first OSS doco,
   and learned how much nicer /dev/music is
 * added: --sequencer-device=/dev/devicname
 * MidiEventStream: api change start_note and stop_note does not
   have notelen as first argument. Instead we use notelen_time(notelen)
   to get delta time. Updated necessary exercises.
 * adjusted toolbar pixmaps, all are 24x24. Noteheads are 6x4
 * configure_exercise for most exercises
 * first port to windows using win32 port of gtk+ and pygtk. Some ugly
   hacks to make it work without gnome libs. The windows port will save
   the music to play to a midi file and use an external program to play
   it until I find out how to use midiOutOpen and friends, and how to
   create python C extentions for win32. All exercises except id-tone
   works fine. If you want to test win32 port you should get the win32
   snapshot on ftp://solfege.sourceforge.net/pub/solfege, don't try to
   use this tarball directly.
 * ask_for_intervall_nn is zero index based
 * change to format of links to exercises:
    exercise:harmonic-intervall?lowest_instrument:1, highest_instrument:2
   is now entered as
    exercise:harmonic-intervall?lowest_instrument=1; highest_instrument=2
   misc cleanup to code related to this.
 * help browser can be in its own window (i think this was added in 0.7.7)
0.7.8
 * make sure Solfege/lesson_collections/solfege always point do the
   correct place
 * fixed problems with --sound-using-xxx and --external-midiplayer
   command line options
0.7.7
 * bf: translated messages even when not running from sourcedir
 * Added error handling when errors in lesson files.
 * made it possible to specify several directories to place lesson files
   into.
 * all lessonfile classes go into file 'lessonfile'. Improvements to
   avoid heavy use of __main__
 * mpd: added limited support for ties, see music-format.html for info.
 * mpd.parser: adjust_noteheads renamed do_xshift_noteheads, and
   avoiding a call to vector.sort()
 * src/inputwidgets.py: some work, putting common code in abstract
   baseclass. Not good code, but better than before.
 * more """no "from gtk import *" no more""" that I missed last time
 * mpd.musicdisplayer: MusicDisplay.display take a music string as
   argument, not a vector of engravers. This to hide some action needed
   to avoid memory leak.
 * memory leak fixes. After upgrading to python-gnome 1.0.52 and
   doing some careful "del someobject", redisplaying some music
   does not eat any more memory. With 0.7.6, each time parsing and
   displaying some music, solfege would eat 4k-8k of memory.
 * wrote some documentation
 * updated some helpfile links: "exercise://exercise-name" ->
   "exercise:exercise-name"
 * mpd: adjust to avoid crashing noteheads in chords like <c e f g>
   Need more work, the function is parser.Score.adjust_noteheads
0.7.6-2
 * debian/rules: removed dh_suidregister
 * don't distribute debian/tmp/
0.7.6 March 26 2000
 * ended my little tab for indent adventure
 * no "from gtk import *" no more
 * making some buttons insensitive until they are usable, like repeat
   buttons before new_question has been pressed.
 * .deb: Section: sound, not main/sound
 * .deb: Depend, not Pre-Depend on debconf
 * cleanup on help file links, solfege will chdir to where the help
   files are stored before loading files. This make links to images:
   "../png/image.png" and to a specific language as "../nn/file.html"
 * lessonfilemanager work
 * online-docs/C/lessonfiles.html: updated after lesson file parser
   was rewritten.
 * rewrote lesson file parser. Trying to define a more clear grammar.
   changes to lesson file format: 
      use = chord, id-by-name
    has to be written:
      use = chord, id_by_name
   '-' is not allowed in identifiers
 * bf: should distribute swig generated files
 * first step in cleaning up lessonfile parsing and use, some
   changes to the interface exercises use to access the data in
   lesson files.
 * added i18n to lesson files, keep translated messages inside
   _("..") like normal python code
0.7.5
 * /etc/solfege to set how to play midi sound.
 * Debian package use debconf to create /etc/solfege on install.
 * Vollmer: po/po.de and german translation of spec file.
 * set correct user and group for files in redhat package
 * used ./fix_feta.py to make the background of feta pixmap white.
 * started documenting the format for mpd.Parser
 * Makefile: simplified dist target, do maintainer-clean,
   ./configure and tar everything thats left.
 * soundcard: api changes to be closer to linux kernel names:
   MidiEventStream: note_on -> start_note, note_off -> stop_note
   program_change -> set_patch
 * macro_to_function.c|i : added seq_bender to lowlevel_c_midi and
   .bender to MidiEventStream
 * get correct number of ledger lines
 * updated after api changes in MidiEventStream
 * more makefile cleanup
 * Change python script start from:
        #!/usr/bin/python
   to:
        #!/usr/bin/env python
 * first release after solfege is splitted into three separate
   packages
0.7.4: March 6 2000, 6975 lines of .py
 * makefile changes
 * renamed NEWS to changelog
 * set window title to show what exercise we are practising.
 * musicdisplayer/parser: major rewrite. 
   * support for time signature. It can display it, but the parser is
     completely stupid and will allow time signatures like 7/7, 9/3
   * Added barlines and accidentals, now do the right thing if there 
     is for example several cis in a row. 
   * Accidentals also understand bar lines.
   * use the xpms directly from Lilypond, don't manually convert to
     python code.
   Rests are still invisible after the rewrite. The code 
   still need heavy cleanup, or even better, a complete rewrite (by 
   someone else than me)
 * automatically generated rpm spec file, need more testing. To build
   rpm, to ./configure; make rpm, just remember you need write access to
   /usr/src/redhat
 * --sound-using-timidity will send output to /dev/null
0.7.3: Feb 22 2000, 6914 lines of .py
 * misc small bugfixes and improvements
 * adding _(...) to more strings to be translated
 * some documentation of lesson file format and about translating
   Solfege.
 * translated html files can now be placed in lessonfiles/nn/ where
   nn is the code for the language you use, no=norwegian, se=swedish.
 * added browser-like history and back/forward button
 * sing-intervall can use random_keyword=1 in lesson file
 * added mudela.select_clef, use it in chord, compare-intervall
 * some work on compare-intervalls
 * Vollmer: more icons
 * work on toolbar, configurable to use text/icons/both, 
   some pixmaps renamed, Vollmer, please notice this when making new
   icons.
 * typo in man page
0.7.2: 6801 lines of .py
 * new exercise: compare-intervall
 * minor gui adjustments
 * misc fixes to exercises that are not configured correctly
 * intervall exercises has checkbutton to not ask same question
   twice in a row.
 * More work on help system, and href's to exercises
 * Finished SingChord, need more lesson files
 * Fixed some problems with statistics. You should remove 
    ~/.solfege/harmonic-intervall*, probably the whole ~/.solfege
 * Added random_transpose variable to lesson files. It is used by chord
   lesson to decide if it can transpose the music. And also id-by-name.
 * melodicintervall and singintervall will use 
      'Solfege/config/preferred_instrument*'
0.7.1: 6290 lines of .py
 * Vollmer: small changes to pixmaps
 * --debug-sound option
 * cleaned up the help system (but not help file contents...)
 * Statistics. Stored in ~/.solfege/exercisename/ If you get segfaults 
   or solfege freeze, please delete the statistics files for the exercise 
   you have problem with (or at least the 2-3 newest files).
 * Add to sys.path if installing to /usr/local
 * main.py: create exercises as they are needed, not all at startup. Now, if one
   exercise is completely broken, Solfege will still work.
 * Add /usr/local/lib/python1.5/site-packages to search path if installing
   there. Not all distros is like debian...
 * some cleanup to popup code. More has to be done.
0.7.0  6030 lines
 * MusicDisplayer will resize to fit any number of staffs (i hope...)
 * Small changes here and there to gui
 * Redused memory leaks, I don't think mudela.parser is leaking any longer, but
   there is problems with musicdisplayer. (Not investigated very much...)
 * Added documentation on notebook page, enabling links to other exercises.
 * Removed the possibility to not use a notebook in the main window
 * TwelveTone exercise
 * SingChord exercise
 * MusicDisplayer: click on note will play it.
0.6.0
 * mudela.parser: dont use channel 9 when generating midi events because
   it is for perkussion
 * Fixed broken link creating in debian/rules
 * soundcard.midieventstream.py: __interpret_notelen should always
   return an int
 * Made sure solfegerc is parsed when not running from sourcedir
 * removed some old code that hasn't and will never be used
 * Toolbar use pixmaps from Oliver Vollmer, toolbar can be turned in 
   Preferences (without restarting Solfege...:-)
0.5.7: not released 5406
 * Misc code-cleanup and minor fixes preparing for 0.6
 * debian: created symlink /usr/share/doc/solfege/manual.html -> 
   ../../gnome/help/solfege/C/manual.html
 * bf: symbolic link /usr/bin/solfege in debian package
 * mudela.parser.Parser: made it possible to generate midi events for only
   the last notes.
 * Making parser smarter and MusicDisplayer dumber.
0.5.6: 5349 .py lines (not counting the long feta??.py files)
 * Added tempo keyword to lesson files. tempo keyword can be set globally
   for the whole file, and/or local to each question.
 * New startup procedure, create symbolic link in bin dir. Files in
   /src are now installed in share/solfege/src, not share/solfege/
 * Made it possible to play or display only the first note (or first 
   notes in polyphonic music). This makes the dictation exercise 
   useable!
 * Added callback function param to InstrumentSelector so we can call
   GnomePropertyBox.set_modified(TRUE) in ConfigWindow
 * Some changes to keywords used in lesson files. New changes should
   be backward compatible.
 * small adjustments of box layout in practiseboxes.py
 * the last (almost a promise) non backward compatible change to the
   syntax for the music parser before 1.0: added \staff and \addvoice
   keywords, removed the old usage of \staff and \voice
 * music displayer/parser: added rests
 * layout of stems and noteheads
 * ledger lines
 * Makefile.in: make clean should remove run-solfege
0.5.5: 5079 .py lines (not counting the long feta??.py files)
 * Simplifying the music parser and the syntax it read. Don't try to
   be Lilypond.
 * MusicDisplayer to replace ScoreDisplayer, new class that use feta
   font from GNU Lilypond and GtkDrawingArea instead of GnomeCanvas.
   MusicDisplayer is a big improvement compared to ScoreDisplayer. It
   will be possible to let different exercises use different font
   size. The plan is to let it connect it to MidiEventStream and
   scroll the music as it is played if the window is to small.
 * moved src/const.py: instrument_sections and instrument_names to
   soundcard/__init__
 * parser.py: Parser.generate_midi_events: fixed problem calling
   note_off with wrong channel
 * teachers.py: Chord: new_question: random transpose of chord
 * practiseboxes.py: ChordBox: choose clef when displaying
 * updated man page
0.5.4: (17 Jan 2000) 5428 .py lines
 * moved setting of default values for configurable stuff form
   solfege.py to configstuff.py
 * solfege.py: removed Solfege/config/program_version stuff
 * updated InstrumentSelector after the changes to sound playing
   modules. Small cosmetic changes to the code. InstrumentSelector
   will set default values.
 * made src/const.py: instrument_names a touple of strings
 * removed the obsolete remove_* functions from mudela.__init__.py

0.5.3: (17. Jan 2000)
 * Rewrote sound playing modules. Made a cleaner interface to the soundcard.
   Better support for people using --sound-using-timidity
 * oops, 0.5.2 was missing some files, configure.in had to be edited to build.
0.5.2: (16 Jan 2000) 5482 lines
 * lesson-files/Makefile.in: fixed install target
 * fixed make diff, see INSTALL file
 * bf: HarmonicIntervall: play_melodic fixed
 * Instrument change is written to midifile.
 * New command line parameters
     --sound-using-timidity
     --sound-using-drvmidi
 * Obsolete command line parameter:
     -external-sound
 * misc Makefile bugfixes: uninstall of man1/solfege.1, installation of 
   lesson files, distribution also include debian/
 * distributes html version of the users manual. Don't need debiandoc-sgml
   unless you change manual.sgml
 * dataparser.py -> lessonfileparser.py
 * removed BeginnersChordsBox and IdentifySingleChordBox and created a
   lesson based ChordBox. The gui is not finished yet, and you cannot
   customise the midi sound, but it is usable.  Necesarry changes to
   teachers.py
 * removed "This is Solfege..." startup message
 * update gnome.app_id on startup, now solfege --version looks nice
0.5.1: (14. jan 2000)
 * testrelease of the possibiliy to make it possible to play the music
   using and external program.  Right now the command line parameter
   --external-sound use drvmidi to play  the created midi files.
 * Visual changes to MultipleIntervallConfigInterface 
 * PianoWidget bugfix: correct number of arguments to callback
 * freshed up HarmonicIntervallBox.config_box
 * Rewrote InstrumentSelector
 * Global preferred midi instrument overridden for each exercise. (well only harmonic intervall for now)
0.5: (12. jan 2000)
 * silly manpage to please lintian
 * removed the pyconfigure.py.in mess, added src/version.py
 * renamed classes in practiseboxes.py:
               PractiseBaseBox -> AbstractBox
               IdIntervallBaseBox -> AbstractIntervallBox
 * renamed classes in teachers.py:
        AbstractTeacher -> Abstract
	AbstractChordTeacher -> AbstractChord
	AbstractLessonbasedTeacher -> AbstractLessonbased
	AbstractIntervallTeacher -> AbstractIntervall
 * Module guiutils -> gu
 * Removed m_pretty_name member of AbstractTeacher
 * Exercises to do dictation, exercises stored in lesson files.
 * created class LessonFileManager that know what exercises can
   be used on what gui 
 * small fixes because of syntax change:
   \clef "violin"; --> \clef violin;
0.4.2: (2. jan 2000)
 * Mudela.engravers.StemEngraver.do_stuff: make stem go in correct
   direction, respect \stemup and \stemdown
 * music parser syntax change: \clef "violin"; --> \clef violin;
 * bf: mudela.parser.Parser: chords in relative mode
 * bf: <c e g><c e g> bug in mudela.parser.Parser.collaple_chords
 * midi/ cleanup, some C code rewritten in python.
 * Started working on harmonic progressions
 * source file names to lower case, moved .py files from ./ to ./src
0.4.1
0.4 (11. november 1999) 

	Lots of changes, some visible, some internal. Run the program
	to see yourself. Don't let the even version number make you
	believe this is a stable release, I don't make stable releases.
	Its just a marketing trick. Next version might be called
	Solfege 2000.


(The changes before 0.4 was lost. Don't know when, don't know where...)
