# About TSE3 version numbers

The TSE3 library version number describes the release you are using. It is split into three components, `a.b.c`. For each minor release that is API compatible with the previous release, the `c` value increases. For any modification to a public API that may require clients to modify their code the `b` value is incremented. The `a` value is currently always zero.

# TSE3 version history

This is the TSE3 library version:

This file lists the major changes between releases of TSE3. There is another much more detailed (perhaps too detailed) history file which is found in the TSE3 source package (in the file `doc/History`).

### version 0.2.7 (2003-03-07)

- tse3play doesn't need to open MIDI devices to just convert files
- New MIDI recording example code
- gcc 3.2 compatibility

### version 0.2.6 (2002-10-30)

- tse3play picks the playback port much more cleverly
- Doxygen documentation supported
- Bugfixes for tse3play

### version 0.2.5 (2002-08-22)

- Compiles under gcc 3.2

### version 0.2.4 (2002-07-28)

- API extensions
- Author contact details update

### version 0.2.2 (2002-05-11)

- Essential build fixes
- Other minor bugfixes

### version 0.2.1 (2002-05-08)

- Alsa 0.9 fixes
- Builds under latest auto-tools
- More documentation for command classes

### Version 0.2.0 (2002-04-29)

- Major enhancement: A new MidiScheduler framework that is more extensible, robust, and easier to use. The public API is mostly unchanged, but implementation is far easier.
- New "magic" port/channel numbers for "all ports" "no port" etc.
- Improved (and fixed) MidiEcho.
- More command classes and utilities.
- Panic objects now have a port value.

### version 0.1.3 (2002-03-28)

- alsa 0.9.x support
- build support for more linux distributions
- win32 platform support.
- error exceptions api extended.
- more example code.

### Version 0.1.2 (2001-11-28)

- MidiEvent bug fixing
- Improved instrument file support
- More example code and documentation
- Imporved MidiFileExport API
- Introduction of XML file writing
  (This is a prerelease, the files cannot be read yet)

### Version 0.1.1 (2001-07-24)

- Builds cleanly under gcc 3.0

### Version 0.1.0 (2001-07-10)

- Officially moved to beta status
- More complete instrument file support
- Various bug fixes

### Version 0.0.25 (2001-05-16)

- Added `ArtsMidiScheduler`
- Alsa code compiles cleanly on a lot more platforms.
- tse3play can now play legacy TSE2 files

### Version 0.0.24 (2001-03-30)

- Sysex handling has been implemented fully.
- `Panic` class now does GM/GS/XG MIDI resets.
- Bugfixes.

### Version 0.0.23 (2001-03-23)

- Alsa code greatly improved, with workarounds for Alsa 0.5.x bugs.
- Tidy up of the OSS interface code.
- `Track`s now have a `DisplayParams` object.
- Playback bug fixes.
- Nicer set of `PresetColours`.
- `FileRecogniser` handles error conditions better.
- Forwarding events for `Track`, `Part` and `Phrase` subcomponent events.
- Improved `StreamMidiScheduler`.

### Version 0.0.22 (2001-02-22)

- First fully operational `AlsaMidiScheduler`.
- Slight rearchitecture of `Phrase` management - `PhraseEdit` now creates you a `Phrase` directly into a `PhraseLis`t. This will prevent a common cause of user errors - creating `Phrases` but not putting them in the `PhraseLis`t. This leads to an unfortunate API change, but it's worthwhile. `Part`s will no longer accept `Phrase`s that aren't parented.
- `Listener` classes can now safely call `Notifier::attach` and `Notifier::detach` in event handlers.
- Added `PhraseEdit::timeShift()` and used this in the `Record` object.
- `PhraseEdit::tidy` fixing - last event recorded is no longer truncated.
- Bug fixes.
- More API documentation.

### Version 0.0.21 (2001-02-16)

- First ALSA support.
- All listener interfaces in separate headers in "listen" directory.
- Documentation gets built and installed with the library now.
- TSE3MDL file format modification.
- MIDI file export bug fixed.

### Version 0.0.20 (2001-01-24)

- New `TrackSelection` class, an analog of the `PartSelection`. These two can work together to ensure there is only ever one object selected.
- `PhraseEdit` vastly improved for use with GUI `Phrase` editors. Can now manage the selection of events much more intelligently and maintains a 'modified' status flag.
- All separate tse3 libraries have been rolled together into one `libtse3` library for ease of use.
- Added buffer flushing to the `CommandHistory`.
- Extended `Record` class that is safer when multiple instances exist.
- `PartDisplay` fix for case of empty `Part`.

### Version 0.0.19 (2001-01-16)

- More information saved in choices files
- Transport class method `playable()` added
- Documentation building fixed

### Version 0.0.18 (2001-01-09)

- More Command classes
- Greatly improved documentation
- Destination and Instrument system used by Application support (can be saved in configuration files)
- General bugfixes

### Version 0.0.17 (2000-11-21)

This is a minor release which includes a missing file, Progress.h.

### Version 0.0.16 (2000-11-20)

This sees a lot of work involving application support. Many issues have been addressed following application development from TSE3 users.

- TSE3 now reports the progress of slow operations so an application can display a progress dialogue.
- DisplayParams now has a range of PresetColours (for things such as intro/verse/bridge etc).
- Improved Destination class, manages Instrument definitons
- Improved MidiScheduler interface
- Util::Modified utility.

### Version 0.0.14 (2000-10-17)

This is a small delta release that removes some Alsa stuff since at the moment it is not fully operational. There have also been some documentation improvements.

### Version 0.0.13 (2000-10-16)

- Added multiple-thread support to TSE3 (see tse3/Mutex.h)
- Beginnings of support for the ALSA library
- New UnixMidiSchedulerFactory that chooses either OSS or ALSA depending on build flags and the system state
- Greatly improved build configurations (select OSS, Alsa, Mutex)
- Application class now how has a Destination object
- More Command classes
- Better docs
- Bug fixes (copying Parts broken)

### Version 0.0.12 (2000-09-25)

- A much improved Notifier class. TSE3 callbacks now have different methods for different events, with arbitrary numbers of parameters. This is a great improvement.
- Work-arounds for gcc bugs which caused errors for some people compiling 0.0.11.
- `OSSMidiScheduler` can now have multiple paths specified for patches directories, separated by colons. This allows TSE3 to support Red Hat and SuSE installations straight out of the box.
- Improved documentation.

### Version 0.0.11 (2000-09-12)

- New `CommandGroup` command class that can logically group a number of commands for a single undo/redo operation.
- New `Phrase_Merge` utility,
- Improved file organisation and naming.
- The removal of the `RepeatTrack` for a simpler to use left/rightrepeat marker system.
- The `Song` implementation of the solo track more robust.
- Removal of all the iterator classes from public API.

### Version 0.0.9 (2000-08-29)

The 0.0.9 brings better structured API documentation; as well as the comprehensive reference, you can now browse one section per namespace. Also minor improvements to the implementation.

### Version 0.0.8 (2000-08-16)

The 0.0.8 release sees a tidy up of some of the API. This means that some TSE3 bits have been renamed, and some files moved. In addition there are some new namespaces, and others have been renamed. In the run up to a stable 1.0 release these issues have been addressed. (The changes should not affect any current users since they are in some of the more advanced parts of the library.)

In addition there is more application support and command class implementation.

### Version 0.0.6 (2000-07-18)

- More reliable OSS driver
- Enhanced application support facilities
- Standardised internationalisable error handling
- New Part insert actions
- Improved documentation
- Plus other API enhancements

### Version 0.0.5 (2000-06-20)

- Rew/ff whilst resting.
- Better event timing.
- More application support.

### Version 0.0.1 to Version 0.0.4

See the verbose `doc/History` file, entries 2000-05-14 to 2000-06-98. These versions comprise very much the infancy of the version 3 TSE library.