* Changes in version 0.9.11 *

AAC files now show their correct length in the playlist.

Fixed: recording in stream capture mode would result in a crash if the record-pause button was pressed.

Fixed traceback that was triggered by seek previous on the topmost track of a playlist.

In players: new "seek previous" control behaviour. Seek to start and seek previous only if currently at the start.

Cue sheets now show file type as WAVE for all non mp3 file formats.

In recorder added fine grained control of cue sheets and file tags.

Stream format selection spin buttons now show units in their heading frame when in selection mode.

Added more sample rates for he-aac both versions.

Added support for aac's main, ltp, and he-aac(mono) profiles.

Added scan at start-up for aac profiles.

New aac encoder that does not use libavformat.

Fixed id3 tag syncsafe integer bug that was preventing recorded mp3 files from being added to the player.

Fixed use after free bug in mp2 encoder.

Fix for crash when streaming with encoder format set to highest quality resampling.

Speed pitch controls now use a higher quality resampling mode.

Submodule format.py is now streamspec.py to avoid clash with python function of the same name.

Bug: output monitor ports not working running under Pipewire was fixed by refactoring?!

Added Pipewire patch code to IDJC homepage.

Fixed bootstrap for dash compatibility and for compatibility with older imagemagick.

Added back-end generated environment variables for application name hinting.

Prevention of unnecessary buffer_size_callback related buffer size reallocation.

idjc now appears as such in utilities like top and killall provided the setproctitle module is installed.

idjcmon.py is now in its own file as python code and gets converted to syntax highlighted html and shown in an iframe.

* Changes in version 0.9.10 *

Changed FF_PROFILE references to equivalent AV_PROFILE ones in AAC encoder while retaining backward compatibility.

Theme light/dark detection modified.

When a player is stopped the music_filename parameter is now expired.

Playlist controls now appear the same height in all playlist modes.

Added new Secrets page to documentation.

The crossfader pass duration is now vastly more accurate.

Changed obsolete amixer reference to refer to pactl instead.

Changing the Tracks Played size setting now ensures the Tracks Played panel is opened.

Profile icon hidden when using Wayland.

Removed reference to the obsolete XChat application.

Changed some default text to American English and provided British English translations.

Fix for hang at exit when song title database was used.

Fixed deprecation warnings under FFMpeg 7 regarding AAC and WEBM encoding.

Fix for song title database for when Ampache 7+ is in use.

Build system changes to accommodate imagemagick's deprecation of the convert
command.

Makefile.am altered to suppress warning message during ./bootstrap.

Removed the obsolete appdata.xml.

Added metainfo.xml for package maintainers.

Copyright year bump to 2025.

* Changes in version 0.9.9 *

Changed the tooltip wording of the Peak and LU meters.

Using GHashTable for mixer action function lookup.

Added GHashTable for kvp_parse functionality instead of repeated strcmp calls.

Code hardening in aac encoder.

Suppression of deprecation warnings related to jack session.

Fix for build warnings related to ffmpeg const qualifiers on avio callback routines.

Fix for WebM Vorbis bad extradata bug.

Cleanup in avcodecdecode.[ch]. Libswresample is required for wma/aac decoding.

Fixed double sample rate conversion bug for decoded audio in avcodecdecode.c.

FFMpeg 4 is no longer supported.

To support FFMpeg 7.0 changes made to live_webm_encoder, live_aac_encoder, avcodecdecode.

Update of the build instructions.

Re-addition of support for the vanilla libshout library. AAC and MP2 streaming require libshout-idjc be used instead.

Fix for possiblity to lose the miniplayer user interface when spawning separate miniplayers window when in basic streamer mode.

Fix for hiding miniplayers in basic streamer mode.

Fix regression preventing the selection of Basic Streamer mode.

Fix for mini player highlight bug when miniplayer stopped due to page change. Previously an effect could remain highlighted when stopped.

Copyright year bump to 2024.

IRC message entry popup menu regression fixed. Was not showing options to enter metadata placeholders.

* Changes in version 0.9.8 *

Fix for mini players glitch where the end of track condition could trigger prematurely.

Added seek facility to mini players. Click the progress bar while playing to seek.

Added additional player banks which also have renameable labels.

Added Mini Player playlist control. To use simply CTRL+drag Mini Player config to main player.

Hopefully added support for Pipewire ports having utf-8 characters.

Mini Player config dragged with CTRL key pressed to an empty slot will copy rather than swap.

Renamed Effects Players to Mini Players. They are not effects after all.

New sequence feature: effects buttons can be configured to chain effects.

Playlist block size calculation takes into account fade mode and fade playlist controls.

Playlist redraws when the playlist mode changes. This ensures playlist controls display correctly for the given mode.

Fix for ducking when the limiter is set to anything significantly lower than 0dB.

Limiter can now be set as low as -20dB.

* Changes in version 0.9.7 *

Added a third effects bank which gives a grand total of 36 effects.

When Effects have no user supplied label the label will be computed from metadata/filename.

Empty effect slots can no longer be dragged.

On newly created profiles, effects slots no longer display tape icons.

Fix for profile manager that could have odd button state if no profile is highlighted.

Fixed bug where upon restart the specified loudness in LUFS could be applied to the loudness meter when -9 LU or -18 LU are selected.

Freewheel mode cancellation now takes into account the playback speedup factor.

Revamped the drag and drop code.

Speed/pitch control now has more precise adjustablity aroung the 100% mark.

Fixed bug where playlist time summary would not update correctly.

IRC: tweaks to appearance when uninstalled and console IRC unavailable message.

Added python version guard for when idjc is run.

Added python version enforcement back into configure.ac.

Fix for regression in webm streaming failing to start.

Fix for widget layout in Tagger for wma and m4a files.

Removed python-is-python3 from dependencies one-liner.

Bootstrap updated to handle missing program 'which'.

Fixed bug where floating point values were provided when Gtk.Align was required.

New prune feature in playlist menu for removing inaccessible playlist entries.

Missing playlist files now result in a warning message tooltip.

Added pathname exists check to Tagger.

Player menu Item->Meta Tag now insensitive for orphaned playlist entries.

Fix for regression where bindings would fail on focussed player if it happened to be the background player.

Opener button status indicators can now have fixed width up to 30 pixels or be set to expand.

Added dismissal of announcements by triple pressing ESC key.

Fix for announcements not responding to the enter key.

Added new annotations feature for playlist entries.

Loudness scale and dead air threshold can now be set in preferences.

REPLAYGAIN_REFERENCE_LOUDNESS tags may now have the unit LUFS (case insensitive).

Upper case ID3v2 TXXX:REPLAYGAIN_TRACK_GAIN tags now work.

TXXX:REPLAYGAIN_REFERENCE_LOUDNESS now sort of works.

Added monitor ports for the output_in ports.

Added stream silence monitoring to idjcmonitor.

LU meter label indicates "silence" by turning red.

* Changes in version 0.9.6 *

Optimisation to port disconnection during JACK Ports->Reset.

Added more jack related error code checking to the back end.

Added a start-up check for jack port connection failure.

Fix for buffer artifacts when leaving Basic Streamer mode.

Midi connections now save/restore.

Peak meter label now goes red when the hard limiter engages.

Replaced VU meter with loudness meter.

Added dependency libebur128 for loudness metering.

Fixed deprecation warnings in streamer.c.

Libshout 2.4.6 or later is now required.

Changed default ogg metadata option to 'Suppressed'.

Removed user selection of stream metadata encoding type.

Removed import of getargspec that results in an import error in Python3.11.

Fixed raising of a non existent exception during init failure.

Copyright year bump.

Fix for build warnings in avcodecdecode.c and oggdec.c.

Added notification for widgets that would affect hotkey availability to idjcmonitor.

Added main and effects window focus notification to idjcmonitor.

Set a tooltips width limit of 80 characters.

Reduced rate of playlist block size updates when adding files.

Added caching for playlist block size.

Added playlist shuffle feature.

Playlist summary finish time includes the number of days when not zero.

Added timeout for playlist summary. 5ms per playlist of which there are three.

Fix for long delay when clearing a large playlist.

* Changes in version 0.9.5 *

Build system fix to get around git-log objecting to running as root -- drops to user.

Much needed update for the First Run page in the html docs. Smaller changes elsewhere.

Fix for basic streamer mode.

Added desktop file for running in pipewire mode that calls pw-jack.

Database pane now has a minimum size.

Removed freewheel button LED and wheel unicode character and added an SVG image of a cog.

DSP button now hidden and inactive whenever there are no connections to the DSP port.

Added VoIP application port capture button.

Player summary popup appears in the correct position in Ubuntu

Removed default capture_2 and playback_ >= 3 connections. The latter could
result in stream audio mixing down into stereo headphones thus breaking
the DJ Audio level setting and drowning out the DJ Alarm.

Lazily handle deprecated jack_session_reply and jack_session_event_free.

Minor build instructions update for a new Ubuntu dependency.

Hardware JACK ports save as system:capture/playback even if named otherwise
by the current JACK implementation with the aim that users can switch between
Pipewire's JACK and JACK 1 / 2 seamlessly.

Added explicit call to buffer_size_callback for Pipewire compatibility.

Added framework for isolated back-end testing.

* Changes in verion 0.9.4 *

Initial levels for DJ audio and DJ alarm reduced.

repostatus script now displays an error message if git is not installed.

Fixed GIT_VERSION_CONTROL conditional not being set when git is not installed.

Fixed regression in playlist information popup.

Added support for ffmpeg 5.0

Updated encoders to clear deprecation warnings regarding ffmpeg 4.4.1.

Worked around build time warnings related to "potential" buffer overflows.

* Changes in version 0.9.3 *

Replaced icon with an svg version.

Updated documentation mainly with new screenshots in a dark theme.

Audio input channels widget in Feature set coerced to even integer value.

Icon light/dark theme determined by window background colour.

Freewheel mode cancels when a player needs to change track.

Freewheel mode fixed when using player speed/pitch controls.

Fixed writing of non zero offset for first item in cue sheet.

Fixed missing of DJ alarm and freewheel cancelling when in freewheel mode.

Fixed insertion of blank metadata parameters in cue sheets when no metadata is available.

Fixed pulling of silence from working players while in freewheel mode.

Fixed hang bug if in freewheel mode and user stops the recorder.

Added feature for BMillham for evaluation.

Block size and Finish time updated when player is stopped in the Cue Up and Manual playlist modes.

Fix for drag and drop directory into playlist.

Cue sheet track counter now reset when recording stops.

Selecting basic streamer mode now stops all effects and background player.

Music database pane has a large handle.

Removed broken external playlist mode.

Copyright year bump.

Removed ability to hide the background tracks.

Removed ability to have a reduced number of effects.

Background Tracks now in its own tab.

Fixed misencoding of dynamic metadata to bytes(utf-8) rather than leaving as str.

Music playback speed control center widget updated.

Music database search now has a random button.

Updated stream auto(dis)connect widgets.

Monitor Mix buttons now render as toggle buttons.

Active playlist announcement dialog box now has icons on action area buttons.

New crossfader pass button icon.

Fixed rendering of playlist control text.

Fixed playlist announcements.

Added character encoding with encoding fault tolerance to irc.

Fixed poorly rendered voip private volume control icon.

Music database fix for WHERE lookups.

Fixed hang bug in profile manager if user tries to rename a profile with an empty profile name field.

Removed stock id's. Replaced with gicons and plain text.

Effect text can now highlight properly when containing pango markup characters.

Fixed effects drag and drop.

Appearance improvements for Effects.

Fix for Ampache song title database ambiguous SQL queries.

Multiple fixes for GTK deprecation warnings.

Fix for deprectated import of collections.MutableSet in midicontrols.py.

Fix for DSP button text visibility when using a dark theme.

Fix for loading of m3u(8) playlists: uses non strict mode.

Fix for loading of m3u playlists: decodes as iso-8859-15.

Fix for dynamic mp3 with old libmpg123 to allow use of enum API.

* Changes in version 0.9.2 *

Updated idjcmon.py.

Removed (far too strict) restrictions on version of python.

Repaired the ability to install idjcmonitor locally.

Added to spew: idjc and python version info.

Dynamic access of libmpg123 no longer uses the enum API.

Updated internal copies of the mpg123 header file(s).

Fix handling for python argument parser upstream fix.

Fixed regression in import of cue sheets.

Fixed regression in import/export of xspf and m3u playlists.

Fixed regression in import of pls playlists.

* Changes in version 0.9.1 *

Reverted libshout dependency check to allow use of libshout-idjc version 2.4.3.

History window size can now be adjusted in preferences.

Fixed Effects tab display.

Converted f-strings to str.format() in order to fix multiple i18n issues.

Fixed syntax error in sourceclientgui.py line 1451 found by f2format.

Fixed unwanted 'not valid' playlist entries.

Fixed addition of wma files.

Code cleanup of __future__ imports.

* Changes in version 0.9.0 *

Added support for Python3 provided by B.Millham.

Updated libshout requirement for libshout-idjc 2.4.5

Added check for shout_set_content_format in libshout-idjc.

* Changes in version 0.8.18 (not released) *

Removed obsolete PyGTK build time check.

Upgraded user interface to GTK 3.

Fixed issue where F2 triggers the menu rather than an effect.

Copyright year bump to 2020.

Fixed an instance of libswresample configuration being incomplete causing playback of some m4a files to fail.

Added more pre-gain levels for stream broadcast format setting.

Fixed a bug causing repeat metadata to appear in the track history and irc announcements whenever a playlist control is encountered.

Handling of deprecated ffmpeg registration funtion calls.

Fix for python-irc obsolete server.execute_delayed call in irc.py

Code hardening and deref warning fix in oggdec.c.

Forced checking for Python 2.7 version.

Copyright year bump to 2019.

Added core dependency libogg in configure.ac

Added 'announcement' signal to IDJCMonitor.

Removed dual mixing of auxiliary audio to the DJ mix when monitoring a VOIP call in red phone mode.

Made the audio channels' 'In the DJ Mix' option work when assigned to auxiliary (i.e. non microphone) channel mode.

Added 'player-started' and 'player-stopped' signals to IDJCMonitor.

Effects pane can now be detached to its own window.

Enabled key bindings when an announcement dialog is active.

Metadata control string can now be changed using DBus.

Copyright year bump to 2018.

* Changes in version 0.8.17 *

Code cleanup.

Added extra mutex protection to libavcodec decoder.

AAC encoder updated to use the new FFMpeg AAC codec.

Added optional lighter icons for darker user interface themes.

WebM encoder updated to use Libavcodec new API send_frame / receive_packet (old API still supported).

Libavcodec deprecation warning fix: decoder now uses send_packet / receive_frame functions (old API still supported).

Removed use of deprecated codec parameter in libavformat's AVStream structure.

Copyright year bump.

Repository cleanliness status now correctly reported.

Removed deprecated av_free_packet calls.

Python3 friendly syntax changes to fix install time byte compilation errors.

Fix for regression in session support causing problems at save time.

* Changes in version 0.8.16 *

VoIP documentation update for Skype IDJC integration.

Copyright year bump.

Clicking play while playing results in the playlist window scrolling to show the current track.

Changed AAC+ support to use libfdk via ffmpeg rather than libaacplus (upstream support is scheduled for removal)

Added a button to permit the user to suspend the adding of tracks. It appears 4 seconds into the process.

Enabled drag and drop for multiple folders of audio.

Fixed Random Hop traceback triggered by an empty opposite playlist.

Added Spanish translation with credit to: Blank Frank <frank@rhizomatica.org>

Fixed translation regression in Playlist Mode.

Added WebM streaming and recording.

Fix for listener stats.

Added TLS server login support.

Libshout fork (libshout-idjc) upgraded to upstream version 2.4.1

Fixed LAME tag ReplayGain metadata collection for newer versions of Mutagen.

Updated avcodec encoder and decoder to silence deprecation warnings.

Fixed the return value check of call to av_samples_alloc.

Playlist block size and finish time now also appears when using the cue up and manual playlist modes.

Fix for playlist modes 'Fade Over' and 'Random Hop' so that they work with fade settings other than 'None'

* Changes in version 0.8.15 *

Documentation update for VoIP.

Support for more signals by the IDJCMonitor class.

Support for latest version of python-irc.

Added full support for ITU-R BS.1770 / EBU R128 tags.

Fixed saving of announcement text in .xspf playlists.

The announcement text now appears in the playlist allowing the DJ to pre-read the announcements.

Updated copyright year to 2015

Internationalisation mostly of format.py which was missing from POTFILES.

Git commit hash and build date appears in the 'About' page.

Improved song database connectivity. Fixes and enhancements to last DJ played. Patch: B Millham.

Added wrappers to all glib timeout_add, idle_add, and source_remove calls.

Documentation update.

French language translation update.

Song title database credentials now exportable with DBus.

'Last Played' column added to song title database viewer. This includes a scalable cooldown bar.

Fix for IRC metadata so that Stream Info metadata updates are tied to stream connection, not song title changes.

IDJC now reports server connect/disconnect to IRC in a formalised manner and in messages %U can be used for the source URI.

Added an AppData file.

Added support for generating m3u8 playlist files and added support for file URI's in m3u files.

Fixed metadata to icecast servers now sent with latin1 encoding when streaming mpeg formats.

User can now select latin1 encoding for fixed metadata to shoutcast servers.

Fix for stream metadata character encoding: applied to extant metadata also.

Can now read ReplayGain info from ID3 TXXX tags. Has priority over RVAD/RVA2 tags.

Build system now handles problem with a too old libogg breaking Opus support.

Can now obtain listener stats from Shoutcast 2 servers.

Applied patches for libav 9 and 10 build and build warnings, courtesy: Sebastian Ramacher <sramacher@debian.org>

Build fix for older ffmpeg dependency.

* Changes in version 0.8.14 *

Fix for playlist controls having an overly dark background.

Improved reliability for 'Fade Over' playlist mode and 'Crossfade' playlist control when using the silence killer.

Song title database browse mode setting is now saved/restored.

Added Ampache music catalogs support.

Fine tuned the suppression of key bindings when using the database "Search" tab.

Fixed regression of save/restore database column widths.

Enabled drag and drop to effects from music database and file managers.

Added an optional fade feature for timer disconnected streams.

Fixed a bug where stream timer could trigger a disconnection and disconnection dialog when not connected.

The timed server connection Begin/End time format is now hh:mm[:ss].

Fix for Prokyon 3 database access.

Song title database browse window now populates much more quickly.

Song title database browse window has new alphabetic top level e.g. all artists beginning with S under S. (patch: bmillham)

* Changes in version 0.8.13 *

IRC support now comes from python-irc.

Improved metadata expiry. Metadata is expired on mid cross on both players when metadata source = crossfader.

Fixed regression in stream auto reconnection dialog.

Fix for PyGTK SpinButton value not being set or displayed.

IRC using manual server connect mode no longer periodically disconnects from the IRC server.

Fix for a bug that affected the use of password protected IRC channels.

Added a binding for the playlist advance button.

Code cleanup. Removed possibly problematic gtk main_iteration() calls.

Added support for SSL-hobbled python-irclib.

Added individual track album name support for cue sheets with REM ALBUM tag.

Fixed regression in supported media formats. Was showing libav only formats when built with --disable-libav.

Fixed build with ./configure --disable-libav.

In cue sheet mode chapter metadata is now ignored.

* Changes in version 0.8.12 *

Fix for plural forms in translation files.

* Changes in version 0.8.11 *

Example code idjcmon.py from the docs now uses the idjcmonitor module.

IDJC monitoring class originally from docs is now importable as idjcmonitor.

Python package installs to ${pkglibdir}/site-packages.

Added detection of dynamic lib file extension by host.

Backend installs to ${pkglibdir}

DSP button now hidden in 'Basic Streamer' mode.

Added new 'flush' player mode to ensure every last bit of audio data from a track plays.

Re-added libav compatibility for 1 or 2 channel audio only.

Improved memory leak situation of avcodecdecode.c.

* Changes in version 0.8.10 *

Fix for dynamic metadata bug in the background tracks player.

Added french translation and man page.

Added D-Bus binding for setting metadata.

Added documentation of JACK ports.

Fix for effects filechooser location box text.

Increased player buffer run-out warning to 0.3 seconds. Fixes gapless playback.

Microphones in DJ audio are now panned.

Added VoIP panning facility.

Added pan presets for quick pan setting changes. Includes key/midi/dbus bindings.

Updated to fix audio decoding with ffmpeg version 1.2 libav... libraries. New dependency libswresample from ffmpeg.

* Changes in version 0.8.9 *

Fixes for deprecation warnings in build system.

Fixed potentially corrupt loader shebang bug at the expense of versioning hardness.

Added extra dbus functions to replace old idjcctrl functionality.

Player speed pitch controls now display their speed value.

The button bar and background player can now be hidden.

Added new volume control for the VoIP level.

Added ability to change the recorder filename.

Added patch for playing effects to be listed on the effects tab when effects tab is not the one active.

Jingles tab renamed to effects tab.

Fixed binding for channel pan and added binding for channel level.

Added speed/pitch controls to the background tracks player.

Added binding to the VoIP mixback level.

Added VoIP level control with binding.

Added a command line server kick option and improved automatic connection.

Effects players now have a progress meter. (patch: bmillham)

Reduced border sizes in the main application window.

Fixes for directory choosers in the stream recorders and the "external playlist" playlist mode.

Each effects bank now has its own dedicated JACK output port.

Copying profiles now copies the port connections.

Playlist mode list in background tracks no longer shows unusable modes. This saves screen space.

Player mixer frame removed to save screen space.

Players now have renameable labels.

Fix for background tracks finish time not updating when not playing.

The player bindings now work for the background tracks volume control.

Added level controls for each bank of 12 effect buttons. Key bindings updated.

The DJ audio level control is now at the top of the Prefs->General page.

The DJ alarm now has a dedicated JACK port and level control.

Added support for R128_TRACK_GAIN tags.

Added Ogg/Opus streaming and recording support.

Added Ogg/Opus playback support.

Fixed mp3 seek accuracy bug.

Added cuesheet (.cue .txt) playback support. Multi-file cuesheets are treated as regular playlists.

Fix to pause feature when decoding audio using libavcodec.

IRC now supports manual connection starting as an option for when connecting at startup is undesirable.

Added optional song database tree heirarchy album - [disk number] - track.

Improved metadata cancellation for stopped players.

Fixed bug where repeated playing of the same song would only register in the Tracks Played as a single play.

Fixed bug where live metadata would not include the album metadata resulting in double counting of tracks in the tracks played window from standard unchained ogg files.

Rewrote p3db.py as songdb.py to fix a problem with connection timeouts and UI freeze during large database fetch operations.

Fixed bug where keyboard bindings would trigger when typing in the database filter boxes.

Merged in patch from Brian Millham adding Ampache music database support. Credit given.

Fixed bug triggered by playing ogg or mp3 files with chapter info with the effects player.

Mic preferences settings are restored to the back-end when the back-end is restored.

Pthreads now sleep when unused.

Fixed regression on recorder pause button.

Effects now have a repeat button.

Multiple effects can now play at once.

Background Tracks player can now be used as a main player for those that prefer to stay in the Jingles tab.

* Changes in version 0.8.8 *

Added a python module for monitoring IDJC (metadata and streams) to the HTML documentation.

The bootstrapping script env-up renamed to bootstrap.

New JACK freewheel mode front panel trigger button and matching preferences option to show this.

Recorder now compatible with JACK freewheel mode.

Fix to mp3 encoder which was dereferencing recently freed memory.

New jingles player. Renamed as Effects.

Player level smoothing and muting code moved from mixer.c into xlplayer.c.

Intra player mixing code moved into xlplayer.c.

Added a new interlude player which is nearly the equal of the main players. Renamed as Background Tracks.

Removed the 'Fastest' player resample option from the preferences due to its inferiority. The remaining items renamed in accordance with the stream encoder names for the same modes.

Fix to unhandled exceptions and bad behaviour in IRC code relating to the adding or removal of IRC servers during streaming.

Replaced libmad mp3 decoder with mpg123.

Added AAC and AAC Plus V2 streaming and recording support.

Run-time linking to libmad removed. This is a forced dependency now.

New dependency twolame adds official mp2 support for streaming, recording, playback, tagging.

Added a brand new encoder format selection user interface which eliminates the possiblity of the user to select bad encoder setting combinations. It also looks much better.

Decoder module avcodecdecode.c now requests audio in float format from libavcodec with theoretically better audio quality.

Fixed deprecation warnings from avcodecdecode.c.

Fix to vu_update in python/maingui.py to allow received values to contain = characters.

Added the ability to remove the main players' visibility. Useful for when using external players.

Added JACK audio routing for all players. This means that individual player audio effects or external players can be used.

Fixed a crash bug that would happen if a playlist control was dragged to the opposite playlist.

Merged the sourceclient and mixer modules.

Updated man pages.

Improved lockup handling code.

Lots of global variables in mixer declared static.

Recorders restart when sourceclient module goes down.

Improved restart for streams when sourceclient module goes down.

The 'Green Phone' VoIP mode now respects the 'In DJ's Mix' setting.

BSB compat fix. The runtime dynamic linking functions are in the C standard library in BSD.

Added ladish [L0] and [L1] support.

The main menu is the new method for connecting JACK ports and it can also be used to check the various connections.

The session is saved every minute. Users no longer need to close and restart to lock in settings in case IDJC freezes.

Added a main menu bar and removed obsolete menus.

* Changes in version 0.8.7 *

Added italian translation.

User interface tweaks for consistency including the greater use of GTK stock labels.

* Changes in version 0.8.6 *

Jingles player revamped.

Player headroom now also features in 'Green Phone' VoIP mode.

Resampling now defaults to 'Fast' mode. Fastest should never be used for sound quality reasons which made it a stupid default.

Added 'Random Hop' playlist mode.

Improvements to the end of track silence trimmer.

Merged the mic and aux audio features into the new concept of channel.

Bindings upper target limit values revised.

Window opener buttons replaced by a menu to save space.

Fixed double free and memory leak in audio_feed.c.

Album metadata is now logged in tracks played and history.log.

Added new Troubleshooting tab in server configuration. This includes the new ability to set the user agent string.

Added GNU gettext i18n.

Code refactored in c/audiofeed.c. No longer assumes both jack client IDs to be of the same length.

Changes made to the build system so that it now passes the "make distcheck" test.

Mouseover popup of the main media players now indicates the album if that metadata is available.

GUI remembers previous window maximized state as well as the unmaximised size.

Replaced XChat plugin with python-irclib based integrated IRC.

New profile manager.

Program launcher is now written in Python, replacing Bash.

Removed deprecated 'Application' category from the desktop file.

Fixed libavcodecdecode.c to work with libavcodec 0.7 (Obsolete macro updated) Patch: Jonathan Nieder <jrnieder@gmail.com>

Fixed a bashism in configure.ac which would prevent building with dash as the shell. Patch: Jonathan Nieder <jrnieder@gmail.com>

Visible state for per-server metadata.

* Changes in version 0.8.5 *

GUI for metadata in the Output window updated. Now has history on the custom metadata. The fallback tag text can be set.

Deleted cue sheets no longer hang around in the playlist - not that there is any proper support for these....

Changed the XChat message context menu to imitate that of the current XChat.

Fixed a metadata bug that would occur when the playing track was retagged using the integrated tagger.

Fixed a bug that was preventing key bindings from functioning properly upon keyboard focus loss. This was affecting the track metadata tagger.

Fixed a bug that was causing incorrect text on the server connection button.

Streams and recordings now support album metadata. New custom metadata formatting tags exist to support this change.

A new crossfader profile has been added which closely matches the inter track fade.

In playlist modes that don't suppport playlist controls a null control is rendered in the playlist instead of a blank space as was done previously.

Auto crossfade now takes into account the fade speed for timing.

New playlist mode 'Fade Over' does the same thing as the crossfade playlist control but for every track.

Sanitised the text inputs of the server dialog. Cleans off :// protocol prefixes and extra / characters on mount points.

The return of the main panel recording indicator(s) - missing since version 0.7.

Copyright year updated to 2011.

Fix to XChat plugin installer. Polished XChat file locking code.

Prokyon3 database settings recovered when saved in active mode. Hostname now saved as well.

Regression fix for player levels when a jingle is playing.

Mic icon flashes after a certain amount of time when a player is on.

Mic indicates on status by the addition of a halo around the microphone icon in the opener button.

Encoder ringbuffer size increased to accommodate really large JACK frame sizes.

Mic player headroom can be set far higher.

Glib added to dependencies. Handles hash table duties in agc code. Hash tables and other GLib features may be used internally to a greater degree as code gets rewritten.

Improvements to the front panel mic open button text. Alt text overrides the mic number, stereo mics are indicated.

Microphones can be made subordinates of a stereo pair. Mic 1 can be paired with 2, 2 with 1, 3 with 4. This achieves two things: 1. stereo mics can be configured with one set of settings; 2. the side-chains merge to facilitate a stable stereo image.

The number of available microphones, streamers, and recorders can be adjusted in Prefs->Feature set.

Prefs window can be expanded in size.

* Changes in version 0.8.4 *

Can now open multiple idjc instances on the same jack sound server using the
-e command line switch.

New server configuration dialog and notebook widget to replace the previous large scrolling window.

Added an empty uninstall target to libshout/Makefile.am to fix 'make uninstall' breakage.

New project website. See docsrc directory in Git source tree. Has a hand crafted Makefile not under GNU autotools control.

Added facility for entering a Shoutcast admin password for the master server.

Saved playlist in xspf format now saves playlist controls.

New playlist control for restarting the playlist from the top.

New env-up script to generate the up the ./configure file and html documentation. Both not to be found in the raw git source tree.

Merged in new midi and assignable keyboard shortcuts interface.

Cue sheets can now be added to the main player playlists. TODO: cuesheet playback.

Cue sheets now indicate type WAVE when making a cue sheet for a flac file and cue sheets now store sub-second time offset information.

The active record and stream tabs are now remembered across application restarts.

A new individual controls expander added to reduce clutter in the output window.

Reversed the hints on the Jingles player volume controls to match the main player volume control.

* Changes in version 0.8.3 *

Fixed a bug where the mp3 header was not captured resulting in corrupt vbr tags in recordings.

Fixed a frame length bug in mp3 vbr tagger in recorder. Would cause mpeg 2, mpeg 2.5 frames to overrun with their padding. This bug also appeared in the mp3tagread module and was fixed.

New feature to record FLAC files and metadata in an accompanying cue file. This does not use one of the server encoders.

New group controls feature in the output window allows operations on all server tabs simultaneously.

The listen URL now appears on the connect button.

Static metadata text now shows with the correct character encoding when streaming mp3 files.

Playlist and hostname/mountpoint info now shows with ellipses (...) when appropriate.

The metadata widget is now in each tab so that metadata formatting information can persist beyond application close.

Added an expander for server connection details which also resizes the window.

Added new kick feature widgets and rearranged the server connection buttons to be at the top of each stream tab.

Fixed a bug where the player freezes at the end of certain tracks when the player is started with the seek bar all the way to the right.

The 'Random' playlist mode now observes a pattern to eliminate repeat performance of tracks while still allowing a large element of randomness.

Track filenames are now stored when streaming or recording for use with Random playlist mode.

Renamed variable shutdown in the mixer to avoid a reported namespace collision.

* Changes in version 0.8.2 *

Fixed an out of bounds memory access in mixer.c.

Added an install button for the XChat plugin.

The stream peak meter has its audio source filtered of brief transients.

The 'Jack Ports' tab is renamed 'JACK ports' reflecting its acronym status. The aux ports are now grouped beneath the mic ports since they are both inputs, leaving output ports similarly grouped.

The advance button toggles microphones that are configured to automatically open.

The 'Player Stop' playlist control opens microphones that are configured to automatically open.

The JACK audio ports have been renamed and are listed as their true names in the Jack Ports tab in the preferences. VOIP users will need to update their .asoundrc file (the docs contain the new configuration).

Licensed as GPL2 again.

The two main window button frames at the bottom have been merged so the new mic button arrangement can scale nicely.

New mic open buttons in the main window. Only buttons for microphones currently set active are shown and the buttons indicate which microphone(s) they control. Freeform text can also be applied to the buttons.

The profile name now appears in the preferences, output, and jingles window titles (except when using the default profile where it is left blank). This reduces the ambiguity that arises when two instances of IDJC run in the same screen.

The server window is now called the output window because the user may just want to record without sending station output through a server.

The mic high pass filter now has a control to set the number of active stages.

Changes to the meters preferences. Now organised into two columns that can be switched in or out on a column by column basis. Option to hide all inactive mic meters.

The player volume control now has an inverted (for GTK) ascending level hint for GTK themes that show this.

Stream VU now appears in the stream indicators column. The mic VU meter is no more.

New microphone meters. A peak meter paired with a colour coded attenuation indicator to give a hint at the state of the mic signal processing.

Increased the number of handled microphones to four.

The microphone detail controls now have a greater degree of control and default to 0 for a flat frequency response.

The build system now recognizes python 2.6 as the minimum version.

./configure checks for the legacy location for libavcodec header files.

Automatic crossfader pass maximum time raised to 20 seconds.

Fixed an infinite loop bug in the Random playlist mode. Would occur when there was only one item in the playlist.

* Changes in version 0.8.1 *

Added the ability to drag and drop tracks from a directory's subdirectory. Two levels deep.

Added support for wma tagging and playlist metadata.

Improved transitioning of old playlist data from the 0.7 series.

Allows addition of mp3 files to the playlist when using old versions of mutagen.

* Changes in version 0.8.0 *

Altered some variable names in configure.in to produce better error messages.

Removed a namespace collision in embedded libshout.

Documentation updated.

MP3 playback can now be dithered. Option in the preferences. Default = on.

Added Replay Gain functionality.

Untagged tracks are now typically shown with the track number cleaned off (requires track number be on the left).

Untagged tracks are now shown with black text and a No Tag message alongside in dark red.

Code to restart the idjcsourceclient module when it crashes has been fixed.

IDJC now runs in the default MALLOC_CHECK_ mode.

Fixed a bug where idjcctrl could start an encoder with bad parameters and cause memory to be freed twice.

Fixed a race condition during encoder shutdown.

Fixed a file filter preselection bug in the 'Add music' file chooser dialog.

Added a precautionary recursion limit to oggscan_eos.

Fixed an Ogg parsing problem where failure to find a valid ogg page in the right hand side caused premature termination of the search.

Fixed a problem seeking files that are in their last ten seconds of playback. Broken since 0.7.17.

Fixed the metadata timing for mp3 recordings. A metadata segment of less than ten seconds could be skipped if it was at the end of a file. Broken since 0.7.17.

Fixed the metadata timing for Ogg recordings. Broken since 0.7.17.

Tracks with quiet endings are not ended early when a server disconnect is imminent or the playlist has nearly run its course. This is to assist server handovers.

A cue file is saved for each mp3 recording. Amarok can make use of these.

./configure stops if the mutagen dependency is not fulfilled.

Recording of mp3 is now possible when the server list is empty.

Players are restarted when the current song playing gets retagged (IDJC tagger only). This is to prevent playback failure.

Dependency list updated.

Added support for multiple metadata tags.

Added APEv2 tagging capability. Includes support for monkeys audio and musepack formats.

* Changes in version 0.7.19 *

Version bump because the Sourceforge file release system is being a pain.

* Changes in version 0.7.18a *

Workaround for a regression in mutagen-1.17. The mutagen.easyid3 module can't be pulled in without first pulling in mutagen.id3 or mutagen.mp3.

* Changes in version 0.7.18 *

Added support for m4b and m4p file extensions. Synonymous with mp4.

New media metadata tagger added, based on mutagen.

Dependency removed: libmp4v2

Dependency removed: eyeD3

Dependency added: mutagen. This covers the functionality of the removed dependencies.

ID3 chapter tags lacking null terminators on the TIT2 frame are handled properly.

Added some Mac portability fixes.

The advance button now works in accordance with the fade setting.

The partially working fade in simple mixer mode is now disabled. This is reflected in the fade selector which greys out.

* Changes in version 0.7.17 *

Fixed minor layout bug in the connection box.

Removed the forced inclusion of mp4.h in mp4tag.c.

MP4 tags API updated in mp4tag.c to prevent deprecation warnings.

The DJ alarm now triggers off a deeper inspection of playlist controls. This permits correct operation of the alarm when fading to an announcement.

The DJ alarm now sounds prior to announcements.

Added playlist controls for fading between tracks. These override the fade speed of the player and can be used to fade announcements.

Added a new fading-between-tracks in-the-same-playlist feature.

Fixed a bug where the player could freeze at the end of a track after a progress bar seek that left the bar at the far right hand size.

Jingles keyboard shortcuts now work when the announcement dialog is active. The shortcut to cancel the dialog (not in editing mode) is BACKSPACE since ESC is used to stop jingles.

Added record_start and record_stop commands to idcjctrl.

Prokyon 3 database parse optimisations. Approx 15% speedup.

Conditional inclusion of jack_set_info_function function call.

Fixes to catch exceptions when there are problems connecting to a song title database.

* Changes in version 0.7.16 *

The application icon and menu entry are now installed according to the ${prefix} value, so it is possible to install to ${HOME}/.local without being root.

When the prokyon 3 database is being indexed (for the tree view) a progress bar is shown. Also the GUI is not frozen during this time as was the case previously.

The password for the prokyon 3 database is now non visible.

When using the prokyon 3 database upon loading IDJC the correct database is now used rather than the default values.

Added Fkeys control of the jingles player. Escape key is used to stop.

The scrolled window in the connection pane now has a specified size

Fixed a segfault that would occur when the main window had focus and the F8 key was pressed.

* Changes in version 0.7.15 *

Uses avcodec_decode_audio3 for libavcodec audio decoding when available.

Fixed bug in avcodecdecode.c, the samples buffer is now aligned on 64 bytes which ensures best performance and the ability to decode formats for which libavcodec uses sse instructions.

Fixed bug in avcodecdecode.c where freed memory could continue to be used.

Added some minor fixes supplied by Andrew Suffield.

Removed the option to not keep passwords over application restarts. Given the extra mouseclicks now requried in order to enter the password and no visible cue to password absence, this feature has been dropped.

Added a new connection feature to the server window. This allows for listener stats to be gathered from a list of relays as well as the master server. Aslo, stats collection can be turned off on a per server basis.

Removed directory checks and conditional inclusion for ffmpeg header files to aid compilation on certain distibutions.

Version 0.7.15_pre1 released as 0.7.14a.

* Changes in version 0.7.14a *

Server stats are now obtained in a threaded manner to prevent the possibility of lockup.

Added a new admin password entry to the server window so that in instances where the Shoutcast server has an admin password applied the stats can still be obtained.

Added and option to turn off stats retrieval on a per server basis.

Stats are additionally now displayed on a per server basis in the server window.

* Changes in version 0.7.14 *

Added 'Alternate' playlist mode.

Added listener stats retrieval. Stats are now displayed below the stream status indicator.

Dynamic runtime linking supported for libmad. MP3 playback can no longer be completely disabled.

Added prefs for how to handle faulty server connections.

Dynamic runtime linking supported for libmp3lame. MP3 streaming can no longer be completely disabled.

Added audio dumping facility to avcodecdecode.c for removing seek noise.

Fixed a bug in avcodecdecode.c which was causing delayed stopping of ape tracks.

Added support for mpc files.

Added support for ape files.

Added an external playlist mode. This allows for extremely large playlists without cluttering the playlist box.

* Changes in version 0.7.13 *

Fixed behaviour when network congestion is encountered.

* Changes in version 0.7.12a *

Fixed beeping sound that was being triggered by a gtk.Entry being filled beyond it's specified character limit, specifically when playing a track with the progress counter in countdown mode.

Fixed multiple deprecation warnings for gtk.SpinButton caused by non zero page sizes in their respective gtk.Adjustment.

* Changes in version 0.7.12 *

Fixed a problem of idjcctrl being able to crash idjc through specifying a server tab number that does not exist.

Fixed a problem with the FLAC encoder not properly registering a bitrate resulting in an inability to stream.

The About pane now displays a list of contributors to IDJC.

Added code to prevent the DJ alarm triggering twice.

Playlist menu option Add To Jingles is now greyed out for playlist controls.

Playlist controls are now processed much more quickly.

Fixed a segfault in mp3dec.c. Older versions of JACK won't trigger this.

Added a new announcement feature on the player context menu that provides a dialog box for text prompts. It's also useful as an alternative to the stop-player control. It provides more of a cue that the DJ needs to talk (if the DJ alarm wasn't enough) and opens the mic for the DJ. The keyboard shortcut is U for no particular reason.

Comp meter updated to indicate noisegate and deess attenuation levels as distinct colours.

Recordings can now be started when the connection type is set to Shoutcast and the format is set to ogg with flac or speex.

Contains brand new microphone audio processing code contributed by Stefan Fendt.

Spacebar now shortcuts for the microphone.

Added new shortcuts V for VoIP and P for private VoIP.

Keyboard focus capability has been stripped from all but the playlists which means that whenever the main window has focus that the keyboard shortcuts mechanism will be functional.

The stream peak meter now red-lines at -2dB and the VU at -7 dB.

Added a new option to cap the maximum stream audio level at -2dB. This may improve the encoding quality. When active this change is reflected in the Str Peak and Str VU meters by the drawing of a line.

Tighter timings on the interlude player. Silence detection at the end of tracks is now more aggressive. Compensated for extended quiet intro songs by inhibiting silence detect on the first 15 seconds of any track.

Now using the python subprocess module for launching the mixer and sourceclient sub-processes to clear a deprecation warning.

Updated to work with the latest pygtk.

When LANG environment variable is not set exception TypeError is now caught for Python 2.6

The CRC is now checked on mp3 files, also sync errors and the like are checked for and not played. This prevents things like the sample rate from being misread.

Ogg/Vorbis can now be streamed at 8kbps.

* Changes in version 0.7.11a *

Added configure option --disable-static, which forces the use of shared libraries. Currently only libshout, which becomes a dependency when this option is specified.

* Changes in version 0.7.11 *

FLAC playback now requires version 1.1.3 or greater.

Configure will now warn on missing LAME dependency.

Added the capability to connect to a Prokyon3 database for the retrieval of detailed music collection metadata. Includes search/filter facility, drag and drop.

Configure options for dependencies are now forced when explicitly specified so --enable-speex="yes" will result in ./configure exiting with an error message if that dependency cannot be met.

The meter area now responds to a mouse right click by bringing up the application-wide context menu.

Added new configure options to prevent building against FLAC and speex libraries.

Added a stream status indicator to the main window.

Fixed a bug that was preventing certain session data from being saved.

Fixed a bug with regard to the requested initial state of the Monitor Mix Stream button which was causing a crash on program start.

Libshout dependency eliminated, linked statically.

Added shoutcast contact information IRC, AIM, ICQ.

* Changes in version 0.7.10 *

Reduced the size of the level meters and their text.

Changed the level meters to use the DrawingArea widget. This gives a more authentic meter appearance with the different colours on the scale but more importantly reduces CPU load massively when using certain GTK themes.

Labelled all the widgets in the crossfader bar.

Updated the Stream Mon. button to something a little less obtuse.

Added a new 'None' option to the Metadata Source chooser.

Fixed the media formats list to not show mp4/m4a when IDJC built without ffmpeg support.

Added new ./configure options to allow building without support for non-free formats:
   --disable-mad
   --disable-ffmpeg
   --disable-mp4
   --disable-lame

Removed unused JACK audio ports from the sourceclient.

Added a DSP interface via JACK which includes a bypass control.

* Changes in version 0.7.9 *

New dialog boxes control reconnecting to a server when the connection fails. Reconnection attempts will be made as many as three times after sensible time delays with the user given the option to trigger the reconnection attempt early or to cancel altogether.

Removed the faad2 dependency. AAC decoding to be done in future by ffmpeg instead. Tagging and metadata readout use libmp4v2.

Dependency include files avcodec.h and avformat.h have been moved to different directories. The build system now accounts for this.

Added a mid marker for the crossfader.

Added a selector for choosing the crossfader response curve.

Added new buttons for centering the crossfader.

Included a patch for a metadata source selector.

Improved the handling of poorly terminated Ogg streams.

Regression fix: IDJC is now capable of running when the LANG environment variable isn't set.

* Changes in version 0.7.8a *

Fixed oggdec.c to prevent infinite looping when files are added which contain unterminated streams.

Applied a patch which cleans up superfluous suggested tags in the ogg vorbis tagger when there is a case mismatch e.g. artist vs. ARTIST.

* Changes in version 0.7.8 *

Changed mp3 tab label text to upper case.

Fixed the Speex decoder so it cleanly rejects files that don't have frames_per_packet set to 1 or above.

Added a Speex encoder.

* Changes in version 0.7.7 *

Fixes to oggdec.c in the flac seek and tell callbacks. Fix to oggflacdec.c so that end of tracks are detected.

Added an OggFlac encoder. Triangular dither is applied when using 16 and 20 bit.

Fade in/out made consistent across all JACK sample rates for microphone headroom, mic and aux mute/unmute, player mute/unmute.

Track fadeout now works consistently for all JACK sample rates.

Increased media player watchdog timeout to 9 seconds to accomodate very large media files.

An english label on the compressor now reads Release, formerly Decay. Decay was used previously due it being only five letters long.

A number of compressor, noise gate, and normaliser control values have been changed to units expressed as times and time constants in milliseconds, formerly they were samples and fractions of movement per sample. The former scheme suffered from being dependent upon the JACK sample rate and also it did not follow the example of actual studio equipment.

Ogg file metadata updates occur instantaneously when using the seek bar.

Fixed oggscan_eos in oggdec.c so that all ogg/oga files should import correctly.

Added the keyword 'managed' to the Ogg/vorbis encoder configuration line for when in managed bitrate mode.

Added a new Ogg/vorbis streaming configurator. Upper and lower limits are now expressed as a percentage. Feature expansion is made possible for alternative types of Ogg stream by this new arrangement.

Default text in the jack ports tab now reads system instead of alsa_pcm - this is compatible across different jack back ends but only for recent versions of jack.

* Changes in version 0.7.6 *

The Radio Server window is now by default larger in order not to obscure the encoding format controls.

Removed the (mp3 only) text from the Shoutcast dropdown. When Shoutcast is unavailable due to non support of LAME mp3 encoding the Shoutcast dropdown item is set insensitive.

Builds of IDJC that lack mp3 streaming support now display an mp3 tab with a message where the configuration controls would otherwise be.

Support for Icecast version 1 servers has been dropped due to lack of support in recent versions of libshout.

STREAMERS and RECORDERS environment variables now affect ./configure and can be used to set the number of streamers and recorders that will be available.

The Add Files dialog now reports which media files are supported.

Removed the EXTM3U option from prefs. The current policy is to write m3u metadata when saving playlists and to ignore it on readback.

Extended m3u metadata is now Latin1 encoded.

Cleanups to the playlist populating code.

Added pls playlist support.

Single lined m3u files can now pull in directories.

Added xspf playlist support.

Added the ability to build with pmake, which is widely used on BSD systems.

Added file bsdcompat.c to include workalikes for GNU libc extensions with an aim to get IDJC working on BSD.

Stability fixes to oggdec.c to permit malformed ogg files without locking up.

Added support for the tagging of speex (.spx) files.

Removed a line of code that was causing a visual glitch on the play progress bar at the end of a track.

Added new command line options -m, -a, -t, -s. The man page has been updated to explain what they are for.

Added a speex audio decoder.

* Changes in version 0.7.5 *

Saved Ogg streams now have the oga file extension which is the correct one to use for chained Ogg files.

Added a FLAC decoder for OggFLAC audio files.

Added a vorbis decoder replacing the libvorbisfile decoder that was present previously.

Added support for the oga (Ogg audio) file extension which is the correct one to use for chained ogg audio files.

Added a general purpose Ogg audio decoder which serves as a base for launching decoders for chained Ogg files (oga). All streams in the file can be of a distinct format and samplerate. It also handles obtaining metadata for the playlist.

Fixed a regression introduced in 0.7.4 which prevented shoutcast connections from working due to a labelling change.

* Changes in version 0.7.4 *

Visual tweaks to Prefs->General.

Server connnect button will not grey out while streaming Ogg when Shoutcast is later selected.

Ogg stream serial numbers are now set to an initial random value.

Ogg streams are now guaranteed to contain at least five ogg page outputs per second. This will prevent listener clients from presuming the stream has gone dead and disconnecting. This means that to stream it is no longer necessary to set a minimum bitrate.

The record button is now greyed out when the recording directory is not writable due to file permissions etc.

Ogg recordings now have a meta-header.

It is now possible to run multiple instances of IDJC.

JACK server connection is achieved with jack_client_open instead of the deprecated jack_client_new function.

Minor tweaks to tooltips.

Connection type chooser now indicates mp3 only for Shoutcast.

Changes to the Update, Server Connect, and Record tool tip texts to indicate why one of these buttons might be greyed out.

Record button no longer greyed out when the server connect button is greyed on account of Ogg + Shoutcast widget combination.

File choosers replaced with their more modern versions.

Updated the realtime.html documentation page.

Changed the way command line parameters are handled. Added a new option for specifying which jack server to connect to.

Added code to clean up double bolding occurrences in the playlist.

Updated the idjc man page.

New translation en_US.

New module ln_text.py to facilitate multi language support, replaces langheader.py, includes maintenance features.

* Changes in version 0.7.3 *

Documentation on the website and in the doc folder has been updated.

Option --disable-tooltips has been added to ./configure

A window showing the GPL licence text is now included as part of the program.

Removed usage hint text from the gtk.Entry in the Prefs->Event tab. The tooltip should be sufficient.

The server connect/disconnect timers deactivate once they have performed their task. They now have a default text of 00:00.

The Ogg relative upper and lower bitrate spinbuttons are greyed out when deactivated.

Fixed a bug where mp3 files with a LAME gapless tag would not play if their sample rate differed from that of the the JACK sound server.

Added a great many tooltips.

Support for new GTK tooltips API. Tooltips require PyGTK version 2.12 or later.

Bits and bobs in Prefs->General has been retitled 'Miscellaneous Features' and the various options now have descriptive labels.

Dead code has been removed.

The space where the indicator box used to be is properly removed in Basic Streamer mode.

Reduced the microphone latency to the headphones when in VOIP mode. Direct mixing rather than a jack audio bridge.

Added the option to turn off microphone audio in the DJ headphones. This is a facility for those suffering with high audio latency.

Added support for upper and mixed case file extensions. Example: Mp3, oGg, FlAc are accepted into the playlist.

* Changes in version 0.7.2a *

Fix to a regression in file kvpparse.c (memory leak).

Deactivated the pointless watchdog code in idjcsourceclient.

* Changes in version 0.7.2 *

Added gapless mp3 playback.

IDJC now runs with environment variable MALLOC_CHECK_ set to 2. This prevents IDJC from crashing when minor heap corruption occurs.

Fixed uninitialised variables bug in the mixer (metadata packet type).

Fixed uninitialised variables bug in the mixer (fade index).

Removed obsolete code from the Ogg/vobis encoder.

* Changes in version 0.7.1a *

The pop-up window now has a border.

DJ aud level now works in 'Basic Streamer' mode.

Cosmetic change to stream normalizer in prefs.

Fix for the opening vu meters causing a crash bug.

Build system fix for Ubuntu 7.10 regarding problems detecting libmp3lame.

Removed the obsolete LED indicators from the main window.

* Changes in version 0.7.1 *

The idjcctrl program now has connect and disconnect commands to allow server connection/disconnection from the command line.

Added global exception handling to vu_update to ensure thread unlocking occurs.

Added a fallback mode for decoding m4a files using ffmpeg. FAAD2 versions 2.5 and up are not supported directly by IDJC.

Added handling for corrupt m4a files in mp4decode.c.

The update button causes server reconnection when streaming to shoutcast which ensures that shoutcast servers know the correct bit rate.

Bitrate, samplerate, and number of channels info is now set before the connection is made which should resolve some shoutcast issues.

* Changes in version 0.7.0c *

Fixed regression in the X-Chat announcer which would cause the application to lock up if used.

* Changes in version 0.7.0b *

Fixed a regression in the playlist controls 'Stop streaming' and 'Stop recording' which was causing a lock-up to occur.

* Changes in version 0.7.0a *

Updated ebuild.

Reinstated the MP3meta=utf-8 option.

Added a DJ audio output level control in the preferences.

Removed idjcskype and its man page which are obsolete and replaced it with new documentation in the VOIP tutorial. Skype is confirmed working within IDJC.

* Changes in version 0.7.0 *

Implemented a new, more powerful streaming architecture with multiple streams possible, greater control over quality settings, ability to change the bitrate live on air, and the ability to stream from a prerecorded file with the metadata preserved.

Removed the MP3=utf8 option. This option is now always turned on meaning that mp3 metadata is always encoded as utf-8.

In the mixer altered the way microphone signals are processed when the microphone buttons are muted. This greatly reduces the amount of CPU used since half of all CPU usage by the mixer was going into processing the microphone signal.

New license: GNU General Public Licence version *3*.

* Changes in version 0.6.12a *

Streaming can now be started automatically by timer.

* Changes in version 0.6.12 *

FLAC tags are now read regardless of case.

Added a decoder for wma files (requires libavcodec and libavformat from ffmpeg).

Underscores are now allowed in profiles.

Added a 'Switch To Aux' playlist control to allow the streaming of some defualt audio source via the aux input once the playlist has run its course.

Fixed end of track detection for right player when left player was playing.

Fixed metadata reading bug for flac files where lower case tags were not being read.

MP3 encodes with greater precision. No longer limited to 16 bits audio input.

Added new executable named idjcctrl to provide a feature that allows a remote application to append files to the playlist. m3u and pls files are allowed.

Added a control for player resampling quality.

Code cleanup in xlplayer. All decoders moved to own modules.

Ogg decodes to float instead of 16 bit integer.

Added mp3 playback using libmad - optional.

Added m4a playback support with faad2 - optional.

Support for FLAC-1.1.3 and beyond has been added - FLAC is now optional.

Fixed a couple of traceback/race conditions in mixprefs.py.

The playlist popup window now correctly reports which file is playing when there are untagged files in the playlist.

Improved handling of missing LAME mp3 encoder by adding a dialog informing the user if they need to install LAME.

Removed the xine-lib dependancy.

Timeout will no longer take JACK down with it.

* Changes in version 0.6.11 *

Added a tooltip style popup window to the playlists that shows a summary of the playlist contents and indicates the track which is playing (if any).

EyeD3 is now optional. This means that idjc packages can be made regardless of whether an eyeD3 package is available for that particular distro. Tagging functionality is disabled when eyeD3 is not present and id3 tag reading is performed instead by xine-lib.

Fixed a bug where xine would be used to read ID3 tags regardless of whether eyeD3 had already done so. This was causing problems with certain files that had id3 version 1 tags and contained accented characters. This bug has also been fixed. Any failure to decode from utf-8 on the tag info xine-lib provides will result in their being decoded from latin1 instead.

Code cleanup in the limiter.

* Changes in version 0.6.10 *

Added a bug workaround so that a seek to the last second of audio of a track when using the xine-lib decoder will not occur. This was added to prevent a mixer crash.

Added an event driven commands feature in the Prefs, mainly for controlling the mixer. Included tooltips.

Changed copyright message to read 2005-2007

Added a popup menu to the prefs, server, jingles, window open buttons that contains a close option.

The locale in the mixer and server modules is now forced to 'C' to ensure proper operation of sscanf when faced with floating point numbers.

Added a playlist control for normalising the playback speed. The hotkey for this is N. Added an option to disable this to save CPU cycles and screen space.

Added playback speed control for main media players. Block size, time remaining, and finish times are appropriately affected.

* Changes in version 0.6.9 *

A new context menu puts controls for turning on/off of the various meters into the main window plus gives the ability to quit the application when running from TWM (terminal window manager) which does not display an application close button.

Cellrenderer code is now prevented from running during shutdown.

Function write_channel_data will no longer attempt a write when num_samples==0 this is to prevent the possibilitity of dereferencing a null pointer.

Function demux_channel_data will no longer generate a spurious error message and exit when num_samples==0, this done for compatibility with new libsndfile related code.

Added libsndfile based media file decoder for wav files. New dependancy libsndfile.

Replaced deprecated gtk.threads_enter/leave instances.

A xine config file is now generated automatically by idjc in the ~/.idjc directory. This prevents the loading of the unused audio and video drivers as well as preventing the probing of the most efficient memcpy method. The result is a faster startup time. The mmx memcpy method more than meets the needs of the application. On some machines the probe was causing failure.

Function xlplayer_create no longer returns before the player is fully initialised.

The mixer module initialisation is now waited upon directly, after launch by the parent.

* Changes in version 0.6.8 *

Added profile support.  To use it launch idjc as follows: idjc profilename.  This causes a dialog box to appear asking if you want to create a new profile.  A further dialog box allows you to import settings from a different profile.  The main window title-bar indicates which profile is in use whenever you are not using default.  If you don't specify a profile the default behaviour is to ask you which profile you want to use.

Fixed a crash that would occur when attempting to play from an empty playlist.

Added an option for MP3 metadata to be in UTF-8 encoding instead of the ISO8859-1(latin1).

Updated the X-chat plugin to show a helpful error message within X-chat whenever an announcement message is dropped due to not matching the specified nick in any of the specified channels.

* Changes in version 0.6.7b *

Fixed the pause feature.  It was causing the track silence timeout to trigger.

Track silence timeout increased from 5 to 9 seconds and the silence threshold has been raised a bit.

* Changes in version 0.6.7a *

Improvements to the compressor de-ess mechanism.

Bugfix to compressor: de-ess was being fed an uninitialised value.

Accuracy improvements to the db lookup/conversion tables.

Improvements to the soft knee compression curve in the compressor.  Values checked with gnuplot.

* Changes in version 0.6.7 *

Changed the method used to implement the xlplayer watchdog.

Added an RMS filter to the microphone compressor.

Greatly improved the handling of launches of duplicate IDJC instances (the taskbar will flash for the currently running instance and the second instance will exit with a console error message).

Improvements to the makefiles.

Fixed the three-mixer-crashes-and-it's-out code.  IDJC will shut down cleanly and will even save the session for later restoration.

Added a desktop menu item for gnome and kde.

Major facelift for the idjc homepage which doubles as the documentation in the doc directory.

Updated the IDJC man page and added a new man page for idjcskype.

* Changes in version 0.6.6 *

Added a high quality mp3 streaming control to the server window.  This uses more CPU but the results are much better.  Also added a 24kb/s streaming mode for modem listeners.

Added a timeout to the media decoders so that the mixer will be restarted in the event of a lock-up resultant of a bad media file.

Fixed a bug where when streaming ogg with an insufficently tagged file the file metadata would contain html tags.

Fixed a bug in the Ogg/vorbis decoder where errors in an ogg file could go unhandled resulting in a mixer crash.

* Changes in version 0.6.5 *

Option to save and restore the server password added to the preferences.

The mixer module is now automatically restarted upon a crash.  This means the application will hopefully not freeze.  The main media players are bumped onto the next track so that if a corrupted track had caused the crash it will be skipped.  This feature also works when jackd is closed via killall.

Application now starts more quickly because the xine config file is used.  This has a downside in that a corrupted config file can cause xine to segfault.

Added optional support for reading file info directly from mp4/m4a files and for tagging.  This feature is dependant on libmp4ff and its header file mp4ff.h being present.

Optimisations for playlist stats reduce cpu load, also made it so meters only get updated when the new data differs.

Regression fix to the playlist controls.

* Changes in version 0.6.4a *

Audio processing is suppressed during FLAC seeking to prevent spurious audio output.

Made the stream and listen buttons mute/unmute gradually.

* Changes in version 0.6.4 *

The metadata tagger window can now be resized.

Added gapless playback (perfect for concept albums that typically lack silences between tracks).  Also the player skips to the next track after 5 seconds of silence.  This is to counter the obvious downside of having files that contain bonus tracks in your collection.

When adding controls to the playlist when a track is playing, the playing track is not now reselected afterwards.

Added a dither option mostly for people with 24 bit capable soundcards.

When the jingles sequence box is shaded it no longer collects values via doubleclick.

Implemented a whole new player architecture, dispensing with mplayer and using a simple audio decoding engine within the mixer module itself.  Benefits include quicker player startup/shutdown times and reduced system load when doing so, the ability to add new features in the future, much faster seek times.  Some file formats that worked previously may no longer play, however or may play but not be seekable.  If xine can play it so can idjc.  That means avi files can now be played (audio only).  Implemented alongside the xine decoder a FLAC and Ogg/vorbis decoder so that those formats are seekable.

* Changes in version 0.6.3 *

Additional German translation.

Removed the artificial size restrictions on text strings in the server window.

Fixed a crash that occurred when disconnecting from the server.

Fixed a problem with the shutdown code where a segfault could sometimes occur.

Added session restoration.  On by default, but can be switched off in the prefs.

Added the ability to transfer focus from one playlist to another using the left and right arrow keys.  You can now move files across using shifted left and right arrow.  Also the delete key removes files, and in addition to the space key which plays files, the backspace key causes play to stop.  M opens the microphone and < and > open left and right mic in split-mic mode. Keys 1 and 2 cause the crossfader to move to the respective player.  The c key passes the crossfader.  The t key activates the metadata [t]agger.  S inserts a [s]top control.  A inserts a transfer [a]cross control.  F inserts a [f]ade across control.

File requester directory is remembered across application restarts.

* Changes in version 0.6.2b *

Fixed an off-by-one error that resulted in heap corruption and crashes when adding Ogg files to the playlist.

* Changes in version 0.6.2a *

Fixed a freezeup bug triggered when loading an extm3u playlist in extm3u mode.

* Changes in version 0.6.2 *

Added a zero cross switch to the pause feature of the recording facility to prevent audible clicks (this makes the automatic pause feature fully usable).

Changed the digital filters to use variable type double instead of float because of blowup problems.

Changed the ceiling label in Stream Normalizer to read threshold.

Fixed a misconfiguration bug in the stream normalizer that resulted in audible clicks on the stream audio when the digital zero threshold was breached and the app had been started with the stream normalizer turned off.

* Changes in version 0.6.1b *

Partial code rewrite for Ogg metadata.  This may fix a bug that results in an infinite loop when a corrupted or non 100% compliant Ogg file is encountered.

* Changes in version 0.6.1a *

Fixed the parsing of track lengths in Ogg files.  Parsing is also much faster now.

* Changes in version 0.6.1 *

Added lead-in stripping.  Songs with quiet endings are also cut short when fadeout is on.

Added an information display for playlist blocks showing the time the block will finish, remaining time, size of any additional selections.

Now uses the python path from AM_PATH_PYTHON in the launch script.  This is preferable when there are multiple installs of python on your system so the correct one is run.

Added volume normalization to the stream audio.

Added a track length column to the playlists.

Added a history log file.  This file catalogues the song changes and server connections.  It is saved to ~/.idjc/history.log.

Added automatic module restarting for the server module (idjcserver).  If idjc was streaming at the time the server module failed, the connection will be automatically remade.  Without this feature idjc would freeze up.

Fixed a regression for when adding playlists with the file requester.

* Changes in version 0.6.0 *

Enforced minimum library versions in ./configure.

The page size for the range widgets is now set to zero which helps with rendering of the range widgets when using the QT rendering engine.

Added a fix for when the digital progress box is not big enough for its text.  An option in the prefs.

Fixed idjcserver.c so that it no longer segfaults when libshout is not present.  Added inclusion of string.h to dsp.c and pipereader.c

Added the ability to tag files live on air.  The effects propagate properly.

Added ability to stream Ogg metadata.

The streaming encoding method is now remembered across application restarts.

Increased the number of different streaming bitrates available.

* Changes in version 0.5.9a *

Fixed a bug where the music would loop if a loop option was specified in ~/.mplayer/config

Fixed a bug in the jingles player where the Sequence box would become unusable after playing jingles.

The sequence box now has focus when the jingles window is opened.

* Changes in version 0.5.9 *

The automatic crossfade speed adjustment can now be set as high as eight seconds.

The currently playing track can now be dragged in its playlist without the track stopping.

Added playlist control elements that are accessible from the playlist pop-up menu for doing such things as automatic crossfades, stopping the player, or even stopping streaming after a certain track is played.  This feature is supported in Play All mode only.

Crossfader pass-speed is now remembered.

Fixes to locale code.

The recorder can now pause automatically when there is silence in the audio.

Will now install png files for the graphics which significantly reduces the installed size. Xpm graphics will remain available.

Added dialog windows for when the connection to the radio server has been disconnected.

Added LED-style indicators in the main window for streaming and recording.

Added a shutdown confirmation dialog box that appears when you hit the application quit button and you are streaming or recording at the time.

Player settings at startup now include the Tracks Played window state and the Stream Mon button.

Drag and drop with Nautilus is now working.  Konqueror drag and drop now supports the # and % characters.

Added window resizing to the main and jingles window to reduce the need for scrolling in the playlist windows.  Window sizes are preserved across application re-starts.

The IDJC entry in the documentation directory now includes the package version number as well as the package name.  The documentation files themselves are now g-zipped.  The documention directory is now /prefix/share/doc rather than the non FHS compliant /prefix/doc directory.

* Changes in version 0.5.8 *

The locale is no longer set to en_US whenever no locale setting is present.

Fixed a bug that would cause an application lock-up related to code added in version 0.5.7 for sending metadata upon connection--the newmeta flag is now cleared automatically.  The bug manifested itself whenever a failed login to the radio server occurred upon a repeat connection attempt.

Added code that calls shout_set_audio_info to declare the bitrate, sample rate, and number of channels.  This should help users of certain clients who may be having problems tuning in.

Added EXTM3U option to prefs.  This allows the turning off of extended m3u processing for when you add playlists.  It also prevents the saving of extm3u data (when deactivated) when you save a playlist.

A sensible filename will automatically be chosen when none is specified when saving playlists. A default filename is also provided.

The application will now work when /dev/shm is present but not world writable which sometimes happens.  Should that be the case pipes will be created in the users home directory instead.

The file chooser dialog now supports multiple file selections.

The file chooser dialog now works properly with G_FILENAME_ENCODING set to @locale with files with international characters in the filename.

Listen and Stream buttons are now respected in Basic Streamer mode.

Fixed a bug where IDJC could hang when Send Metadata was unselected.

Added a 192kbps Streaming mode for mp3.

* Changes in version 0.5.7 *

The song title metadata is now automatically set upon connection with the server.

No longer allocates buffers for every frame of data.  The old ones are reused if they are big enough.

Added a track history so the DJ no longer needs to remember what tracks he played.

Altered vu_update so it can be used in two modes rather than maintaining two almost identical functions.  Calling it with False as the parameter will prevent thread locking from being used.  I also moved the thread locking to the outermost scope of this function to prevent the two forms of the function from possibly running concurrently and causing a lock with the server module.

Removed unused variables in the mixer.  Tidied up variable declarations and added comments.  Moved global variables to local ones wherever possible.  Changed one or two variable types in relation to the DJ Alarm mechanism for consistency.  Altered the way the pipe_reader structures are handled--they are now allocated on the heap.

mIRC style colour entry can be done by pressing Ctrl+k which inserts a character-code-3 into the message entry boxes of the X-Chat announcement feature at the cursor.  The user needs to follow it up with a numerical foreground colour number and an optional comma separated background colour number.  A Ctrl+k not preceding a number will cause colours to revert to default (colours turned off).

A submenu has been added so that it is now possible to select colours in the X-Chat (announce and timer) message boxes, by right clicking for a pop-up menu, and browsing the "mIRC Colour Chart" submenu.  The first click chooses the foreground, and the second click, the background, which is slightly different to how X-Chat does it.  Colour 99 is for transparent background.

Modified a couple of german labels to prevent distortion of the GUI.

Added code for a clean exit when receiving a ^C in the console.

New labels for most of the widgets in german.  Credit in the AUTHORS file.

Added infrastructure for multiple language support.  The intention is to initially support english, german, and french.

JACK error messages generated when starting JACK automatically no longer cause IDJC to fail.  Some of these messages are merely informational so they can all be ignored.  They are now prefixed JACK instead of IDJC and are only treated as information when the client activation fails.

Now plays mono wav files propery with MPlayer CVS version.

The pipereader code has been rearranged so that it is now as integrated into its own code module as is practicable.  Added a precautionary mutex on the flushing mechanism.

* Changes in version 0.5.6a *

Bugfix: repaired the track seeking ability of the media players.

* Changes in version 0.5.6 *

Added a pause button to the stream recorder.

Ripped out all the reusable code from the mixer and put it in separate source files.

Improved microphone icon.  Before it was perfectly horizontal which looked a bit odd.  The shaft colour is now bronze from the slightly greenish anodised look of before.

Added a man page for IDJC.  It covers advice on configuring JACK.

Modified the parse routines in idjcmixer and idjcserver to use code in a new common source file kvpdict.c that ensures that no buffer can be overfilled.  A new buffer is allocated every time that new data is received (made perfectly to measure) rather than using fixed size buffers as was done previously.

Thanks to the GNU autotools libshout is now optional, but recommended of course.  The server window streaming related widgets will appear ghosted if you install IDJC without libshout.

Added GNU autotools build system.  ./configure and all that.

Added a feature where the mic button is automatically turned on when in greenphone mode.  The mic was always on in greenphone mode before but the display did not always reflect this.  The microphone stays on after greenphone mode is cancelled.

The listen buttons go into indeterminate state now and become insensitive when in redphone mode with the microphone off.   Before the listen buttons would just go insensitive and when made sensitive later on they got stuck in pre-light mode until moused over (stupid GTK+ glitch, I suspect).

Added a control string and an update button for metadata.  You can now update the metadata manually with a button click.

Added a bandpass filter for the noisegate.  This makes the noisegate much less sensitive to low frequency air effects and mains hum, and shuts off sooner due to high frequency room reverberations also being filtered out.

Subtle graphical tweak to the phone icons to look a little less flat by adding some shading.

Optimised the mic and aux fade in/out code to prevent the gain factors from getting too small (it overloads the fpu).  Optimised the compressor and noisegate by doing the above and by eliminating casting and reducing division.  CPU usage on the mixer is now in the 3-4% range when optimised.  Before it would start at this point and rise to around 6-7% (on my machine at least).

Volume and Aux now fade in/out when the mute/unmute buttons are pressed.  Red button on the jingles player now causes the interlude player volume to be automuted.

MPlayer is no longer started with -cache option for FLAC and Ogg files due to the extended startup times involved.

Code tidy-up in the mixer.  Most notably in the buffer flushing code.  Added some comments.

The track played by the interlude player is now highlighted.

The sequence box is now ghosted when the jingles player is playing.
