ChangeLog ######### * 1.9.22 (2023-02-02) * The waf autooption ``--example-tools`` has been removed. The example clients and tools are no longer part of the jack2 project. * Drop dependencies that were only used for example clients and tools (readline, sndfile and zita libs) * Fix build with python3.11+ * Fix compatibility with macOS 12+ * Fix ringbuffer thread safety on ARM * 1.9.21 (2022-04-15) * Add shell mode to ``jack_control`` (executes commands from stdin until EOF) * The waf autooption ``--example-tools`` introduced in 1.9.20 is now off by default, To get the previous behavior back pass ``--example-tools`` during build. This flag (and the related tools and their code) are going to be removed in the next release. * Fix alignas() on non-packed architectures * Fix build of jack-example-tools man pages (1.9.20 regression) * Fix compatibility with macOS 12 * Fix missing symbols from jack client library (error and info callback pointers) * Fix potential memory corruption in midi_latency_test tool * Fix JackWeakAPI on Windows * Use predefined variables in pkg-config file (required for mingw) External changes, related to macOS/Windows installer: * Fix application style in QJackCtl (qwindowsvistastyle.dll was missing) * Update QjackCtl used in macOS/Windows installers to 0.9.7 * 1.9.20 (2022-01-15) * Add waf autooption ``--example-tools`` to allow optional build of executables, libraries and man pages provided by `jack-example-tools `_ (the files are built by default). Building and installing the additional files can be disabled by using ``--example-tools=no`` or ``--no-example-tools``. * Fix 32-bit support in ALSA driver * Fix incomplete ASIO support on Windows * Fix metadata usage with multiple users * Fix netsource tool missing on Windows * Fix semaphore usage on macOS * Official FreeBSD support External changes, related to macOS/Windows installer: * Update Qt5 used in macOS/Windows installers to 5.12.12 * Update QjackCtl used in macOS/Windows installers to 0.9.6 * 1.9.19 (2021-07-15) * Add jack_position_t::tick_double, and flags around it * Add zalsa "-w" argument to wait for soundcard to be available * Bump internal protocol version to 9 (due to struct alignment) * Fix alignment of fields for atomic accesses * Fix build for platforms needing __STDC_FORMAT_MACROS * Fix compilation of documentation * 1.9.18 (2021-04-15) * Add zalsa_in/out as internal client (based on zita-a2j/j2a and jack1 code) * Fix jack_midi_dump deadlock on close after the jack server is restarted * Fix interrupt signal for linux futex waits * Fix usage of meta-data in official macOS builds (private DB errors) * Log error message when cleaning previous DB (macOS and Windows) * 1.9.17 (2021-01-15) * Fix jack_control stopping after first command iteration * Fix library compat/current version under macOS * Fix return codes of jackd on success * Ignore DB_VERSION_MISMATCH error on windows, it is expected * Remove old workaround for asio4all, as it breaks with jack-router External changes, related to macOS/Windows installer: * Add jack-router to Windows installer, opt-in * Fix registry keys for Windows, add 32bit compat ones on 64bit * Support for arm64 macOS builds * Show welcome and license pages on windows installer * Update QjackCtl used in macOS/Windows installers to v0.9.0, with some commits cherry-picked from develop branch * 1.9.16 (2020-10-16) * Fix/revert a change in how meta-data definitions were exposed (regression in 1.9.15) * Remove jack-router Windows code from the repository * 1.9.15 (2020-10-15) * Automated builds for macOS and Windows (see jackaudio/jack2-releases repository) * Adapt wscript Windows build configuration to match old v1.9.11 installer * Bump maximum default number of clients and ports (now 256 clients and 2048 ports) * Delete various macOS and Windows-related files from the source code (no longer relevant) * Mark JACK-Session as deprecated, please use NSM instead * Remove unnecessary GPL include from LGPL code * Split example-clients and tools, as done in JACK1 many years ago (WIP) * Write Windows registry key during installation, so 3rd parties can find jackd.exe (as HKLM\\Software\\JACK\\Location) * jack_control: Fix handling of dbus bytes * jack_control: Return a proper exit status on DBus exception * jack_property: Fix possible crash with "-l" argument usage * jack_wait: Add client name option -n/--name * Fix compilation of documentation * Fix compilation of mixed mode with meta-data enabled * Fix compilation with mingw * Fix client-side crash if initial meta-data DB setup fails * Fix macOS semaphore usage, so it works again * Several fixes for Windows (with contributions from Kjetil S. Matheussen) * Several minor fixes and grammar corrections (with contributions from Adam Miartus and Timo Wischer) * 1.9.14 (2019-10-28) * Fix ARM build * Fix mixed mode build when meta-data is enabled * Fix blocking DBus device reservation, so it plays nice with others (like PipeWire) * Use python3 for the waf build scripts * 1.9.13 (2019-10-06) * Meta-data API implementation. (and a few tools updated with support for it) * Correct GPL licence to LGPL for files needed to build libjack. * Remove FreeBoB backend (superseded by FFADO). * define JACK_LIB_EXPORT, useful for internal clients. * Mark jack_midi_reset_buffer as deprecated. * Add example systemd unit file * Signal to systemd when jackd is ready. * Set "seq" alsa midi driver to maximum resolution possible. * Fix loading internal clients from another internal client. * Code cleanup and various fixes. (too many to mention here, see git log for details) * 1.9.12 (2017-12-13) * Fix Windows build issues. * Fix build with gcc-7. * Show hint when DBus device reservation fails. * Add support for internal session files. * 1.9.11-RC1 (2017-06-13) * Various corrections in NetJack2 code. Partial buffers can now be transmitted with libjacknet API. * Including S24_LE/BE formats to linux ALSA driver. * More robust shared memory allocator. * Allow autostart of jackd on OSX where device-names can contain spaces. * Correct CoreAudio devices aggregation code. * Waf and wscripts improvement and update. * More flexible RT priority setup on Windows. * New JackProxyDriver. * Various fixes in JACK MIDI code. * Fix return value of SetTimebaseCallback(). * Correct netmanager latency reporting. * Implement new jack_port_rename and JackPortRenameCallback API. * For OSX El Capitan support, use of Posix semaphore and move of Frameworks in /Library folder. * Fix CPU hogging of the midi_thread(). * Release audio devices when alsa_driver_new fails. * String management fix. * Correct JackDriver::Open: call to fGraphManager->SetBufferSize has to use current fEngineControl->fBufferSize value. * Use ARM neon intrinsics for AudioBufferMixdown. * Fix Netjack alignment. * Various wscript improvements and cleanup. * Fix initialization of several class variables. * Heap-allocate client matrix in topo sort. * Add a toggle command to transport utility, to allow toggling between play and stop state. * Avoid side effects from parsing of "version" option in jackd. * Allow firewire device be selected via -d. * Add ARM-NEON acceleration for all non-dithering sample conversion functions. * Add jack_simdtest utility. * Use Linux futex as JackSynchro. * Add autoclose option to jack_load. * 1.9.10 (2014-07-19) * More robust code in JackPortAudioDriver to handle buffer size change and backend switching. * Fix bus error on ARM platforms. * Dynamically scan and print backend and internal names in jackd. * CoreMIDI driver fixes. * Rework NetJack2 code (OPUS codec on OSX, latency management, libjacknet code). * Correct auto-connect for audioadapter. * Add IIO driver. * Merge of Nedko no-self-connect branch. * Fix freewheel mode. * JackServer::SwitchMaster now correctly notify buffer_size and sample_rate changes, cleanup/improvements in JackNetDriver. * Tim Mayberry : Add support for building with mingw compiler. * Merge of Kim Jeong Yeon Android branch. * Partial port of metadata API. * 1.9.9.5 (2012-11-26) * Adrian Knoth fix in midiseq.c. * Fix library symbols export issue. * Cleanup drivers and internals loading code. * jackctl_driver_params_parse API moved in public control.h. * More general drivers/internals loading model on Windows. * Factorize code the server/client request in JackRequestDecoder class. * More robust server/client protocol. * Implement shutdown for in server clients. * Better time-out management in NetJack2. * Experimental system port alias use in Windows JackRouter. * Improve ShutDown in NetManager. * Correct ShutDown in JackInternalClient and JackLibClient. * Fix NetJack2 initialisation bug. * Add EndTime function (especially for Windows). * Rename JackProcessSync in JackPosixProcessSync. * A bit more robust JackMessageBuffer implementation (in progress). * Check server API callback from notification thread. * Use a time-out in notification channel write function. * Fix lock management in JackEngine. * In control API, UNIX like sigset_t replaced by more abstract jackctl_sigmask_t * opaque struct. * Improve libjacknet master mode. * Remove JACK_32_64 flag, so POST_PACKED_STRUCTURE now always used. POST_PACKED_STRUCTURE used for jack_latency_range_t type. * Rework JackMessageBuffer. [firewire] * Introduce UpdateLatencies() in FFADO backend. [firewire] * Allow FFADO backend to change the buffer size. * Update waf. * New jack_get_cycle_times() implementation from Fons Adriennsen. * Align buffers to 32 byte boundaries to allow AVX processing. * Extend jack_control to have parameter reset commands. * Fix alsa driver parameter order. * Control API: Enforce driver/internal parameter order. * Fix in ALSA adapter. * Devin Anderson patch for Jack/CoreMIDI duplicated messages. * Change framework installation hierarchy for OSX Mountain Lion. * Update JackCoreAudioDriver and JackCoreAudioAdapter with more recent API. * jack_control: fix epr command. * Add opus support to NetJack2. * More robust channel mapping handling in JackCoreAudioDriver. * netjack1/netone opus support. * controlapi: fix double free on master switch. * Use string ids in the alsa device list. * netjack/opus: don't re-init en/decoders. * Correct JackPortAudioDriver::Open: special case for ASIO drivers. * 1.9.8 (2011-12-19) * Merge newer-midi branch (Devin Anderson redesign of the MIDI drivers: alsarawmidi, ffado, coremidi and winmme). * Correction in jackdmp.cpp: notify_server_stop should be done after server destruction. * Correct driver lifetime management. * Add XRun detection in PortAudio driver. * CELT code for NetJack2. * Merge branch switch-master-port-registration-notifications: correct driver port registration. * Libjacknet in progress. * Correct MIDI in NetJack2. * Correct OSX real-time thread setup. * Correct rd_acquire in dbus code. * Correct NetJack2 connection handling. * SaveConnections/RestoreConnections in NetDriver and JackAudioDriver. * Special version of jack_attach_shm/jack_release_shm on client side for POSIX shared memory, to solve a memory leak issue. * Another round of code improvements to handle completely buggy Digidesign CoreAudio user-land driver. * Special CATCH_CLOSE_EXCEPTION_RETURN to handle Close API calls. * Add JACK_NETJACK_PORT and JACK_NETJACK_MULTICAST environment variables for NetJack2. NetJack2 now only send data on network only is ports are connected both sides. * Fix for "starting two instances of same app in parallel does not work" bug. * Enable explicit channel mapping in CoreAudio driver. * New JackTimedDriver class to be used by JackDummyDriver, JackNetDriver and JackNetOneDriver classes. * More robust code in synchronization primitives and in JackMessageBuffer. * More robust Control API implementation. Add jackctl_driver_get_type in Control API. * Singleton behaviour for JackCoreMidiDriver and JackWinMMEDriver. * John Emmas patch for DSP CPU computation. * John Emmas Windows server launching patch. * Fix jack_set_port_name API. * Enable local access in NetJack2 code. * Dynamic port management in JACK/CoreMidi bridge. * 1.9.7 (2011-03-30) * Sync JackAlsaDriver::alsa_driver_check_card_type with JACK1 backend. * Correct JackServer::Open to avoid a race when control API is used on OSX. * Improve backend error handling: fatal error returned by Read/Write now cause a Process failure (so a thread exit for blocking backends). Recoverable ones (XRuns..) are now treated internally in ALSA, FreeBob and FFADO backends. * In jackdmp.cpp, jackctl_setup_signals moved before jackctl_server_start. * Correct symbols export in backends on OSX. ALSA backend: suspend/resume handling. * Correct dummy driver. * Adrian Knoth jack_lsp patch. * Remove JackPortIsActive flag. * New latency API implementation. * ComputeTotalLatencies now a client/server call. * Add latent test client for latency API. * Also print playback and capture latency in jack_lsp. jack_client_has_session_callback implementation. * Check requested buffer size and limit to 1..8192 - avoids weird behaviour caused by jack_bufsize foobar. * jack_port_type_get_buffer_size implementation. * Stop using alloca and allocate buffer on the heap for alsa_io. * Rename jdelay to jack_iodelay as per Fons' request. * Call buffer size callback in activate (actually this is done on client side in the RT thread Init method). * Add jack_midi_dump client. * Synchronize net JACK1 with JACK1 version. * Synchronize jack_connect/jack_disconnect with JACK1 version. * Correct JackNetMaster::SetBufferSize. * Use jack_default_audio_sample_t instead of float consistently, fix ticket #201. * -X now allows to add several slave backends, add -I to load several internal clients. * Rework internal slave driver management, JackServerGlobals now handle same parameters as jackdmp. * Correct JackEngine::NotifyGraphReorder, update JackDebugClient with latest API. * Devin Anderson server-ctl-proposal branch merged on trunk: improved control API, slave backend reworked. Implement renaming in JackDriver::Open to avoid name collision (thanks Devin Anderson). * Correct alsa_driver_restart (thanks Devin Anderson). Correction of jack_connect/jack_disconnect: use of jack_activate and volatile keyword for thread shared variable. * Correction of JackNetOneDriver for latest CELT API. * Synchronize JackWeakAPI.cpp with new APIs. * 1.9.6 (2010-08-30) * Improve JackCoreAudioDriver and JackCoreAudioAdapter : when no devices are described, takes default input and output and aggregate them. * Correct JackGraphManager::DeactivatePort. * Correct JackMachServerChannel::Execute : keep running even in error cases. Raise JACK_PROTOCOL_VERSION number. * Arnold Krille firewire patch. * Raise JACK_DRIVER_PARAM_STRING_MAX and JACK_PARAM_STRING_MAX to 127 otherwise some audio drivers cannot be loaded on OSX. * Fix some file header to have library side code use LGPL. * On Windows, now use TRE library for regexp (BSD license instead of GPL license). * ffado-portname-sync.patch from ticket #163 applied. * Remove call to exit in library code. * Make jack_connect/jack_disconnect wait for effective port connection/disconnection. * Add tests to validate intclient.h API. * On Linux, inter-process synchronization primitive switched to POSIX semaphore. * In JackCoreAudioDriver, move code called in MeasureCallback to be called once in IO thread. * David Garcia Garzon netone patch. * Fix from Fernando Lopez-Lezcano for compilation on fc13. * Fix JackPosixSemaphore::TimedWait : same behavior as JackPosixSemaphore::Wait regarding EINTR. * David Garcia Garzon unused_pkt_buf_field_jack2 netone patch. * Arnold Krille firewire snooping patch. * Jan Engelhardt patch for get_cycles on SPARC. * Adrian Knoth hurd.patch, kfreebsd-fix.patch and alpha_ia64-sigsegv.patch from ticket 177. * Adrian Knoth fix for linux cycle.h (ticket 188). * In JackCoreAudioDriver, fix an issue when no value is given for input. * 1.9.5 (2010-02-12) * Dynamic choice of maximum port number. * More robust sample rate change handling code in JackCoreAudioDriver. * Devin Anderson patch for Jack FFADO driver issues with lost MIDI bytes between periods (and more). * Fix port_rename callback: now both old name and new name are given as parameters. * Special code in JackCoreAudio driver to handle completely buggy Digidesign CoreAudio user-land driver. * Ensure that client-side message buffer thread calls thread_init callback if/when it is set by the client (backport of JACK1 rev 3838). * Check dynamic port-max value. * Fix JackCoreMidiDriver::ReadProcAux when ring buffer is full (thanks Devin Anderson). * Josh Green ALSA driver capture only patch. * When threads are cancelled, the exception has to be rethrown. * Use a QUIT notification to properly quit the server channel, the server channel thread can then be 'stopped' instead of 'canceled'. * Mario Lang alsa_io time calculation overflow patch. Shared memory manager was calling abort in case of fatal error, now return an error in caller. * Change JackEngineProfiling and JackAudioAdapterInterface gnuplot scripts to output SVG instead of PDF. * 1.9.4 (2009-11-19) * Solaris boomer backend now working in capture or playback only mode. * Add a -G parameter in CoreAudio backend (the computation value in RT thread expressed as percent of period). * Use SNDCTL_DSP_SYNCGROUP/SNDCTL_DSP_SYNCSTART API to synchronize input and output in Solaris boomer backend. * Big endian bug fix in memops.c. * Fix issues in JackNetDriver::DecodeTransportData and JackNetDriver::Initialize. * Correct CPU timing in JackNetDriver, now take cycle begin time after Read. * Simplify transport in NetJack2: master only can control transport. * Change CoreAudio notification thread setup for OSX Snow Leopard. * Correct server temporary mode: now set a global and quit after server/client message handling is finished. * Add a string parameter to server ==> client notification, add a new JackInfoShutdownCallback type. * CoreAudio backend now issue a JackInfoShutdownCallback when an unrecoverable error is detected (sampling rate change, stream configuration change). * Correct jackdmp.cpp (failures case were not correct..). * Improve JackCoreAudioDriver code. * Raise default port number to 2048. * Correct JackProcessSync::LockedTimedWait. * Correct JACK_MESSAGE_SIZE value, particularly in OSX RPC code. * Now start server channel thread only when backend has been started (so in JackServer::Start). * Should solve race conditions at start time. * jack_verbose moved to JackGlobals class. * Improve aggregate device management in JackCoreAudioDriver: now a "private" device only and cleanup properly. * Aggregate device code added to JackCoreAudioAdapter. * Implement "hog mode" (exclusive access of the audio device) in JackCoreAudioDriver. * Fix jack_set_sample_rate_callback to have he same behavior as in JACK1. * Dynamic system version detection in JackCoreAudioDriver to either create public or private aggregate device. * In JackCoreAudioDriver, force the SR value to the wanted one *before* creating aggregate device (otherwise creation will fail). * In JackCoreAudioDriver, better cleanup of AD when intermediate open failure. * In JackCoreAudioDriver::Start, wait for the audio driver to effectively start (use the MeasureCallback). * In JackCoreAudioDriver, improve management of input/output channels: -1 is now used internally to indicate a wanted max value. * In JackCoreAudioDriver::OpenAUHAL, correct stream format setup and cleanup. * Correct crash bug in JackAudioAdapterInterface when not input is used in adapter (temporary fix). * Sync JackCoreAudioAdapter code on JackCoreAudioDriver one. * JACK_SCHED_POLICY switched to SCHED_FIFO. * Now can aggregate device that are themselves AD. * No reason to make jack_on_shutdown deprecated, so revert the incorrect change. * Thread AcquireRealTime and DropRealTime were (incorrectly) using fThread field. * Use pthread_self()) (or GetCurrentThread() on Windows) to get the calling thread. * Correctly save and restore RT mode state in freewheel mode. * Correct freewheel code on client side. * Fix AcquireRealTime and DropRealTime: now distinguish when called from another thread (AcquireRealTime/DropRealTime) and from the thread itself (AcquireSelfRealTime/DropSelfRealTime). * Correct JackPosixThread::StartImp: thread priority setting now done in the RT case only. * Correct JackGraphManager::GetBuffer for the "client loop with one connection" case: buffer must be copied. * Correct JackInfoShutdownCallback prototype, two new JackClientProcessFailure and JackClientZombie JackStatus code. * Correct JackCoreAudio driver when empty strings are given as -C, -P or -d parameter. * Better memory allocation error checking on client (library) side. * Better memory allocation error checking in ringbuffer.c, weak import improvements. * Memory allocation error checking for jack_client_new and jack_client_open (server and client side). * Memory allocation error checking in server for RPC. * Simplify server temporary mode: now use a JackTemporaryException. * Lock/Unlock shared memory segments (to test...). * Sync with JACK1 : -r parameter now used for no-realtime, realtime (-R) is now default, usable backend given vie platform. * In JackCoreAudio driver, (possibly) clock drift compensation when needed in aggregated devices. * In JackCoreAudio driver, clock drift compensation in aggregated devices working. * In JackCoreAudio driver, clock drift compensation semantic changed a bit: when on, does not activate if not needed (same clock domain). * Sync JackCoreAudioAdapter code with JackCoreAudioDriver. * 1.9.3 (2009-07-21) * New JackBoomerDriver class for Boomer driver on Solaris. * Add mixed 32/64 bits mode (off by default). * Native MIDI backend (JackCoreMidiDriver, JackWinMMEDriver). * In ALSA audio card reservation code, tries to open the card even if reservation fails. * Clock source setting on Linux. * Add jackctl_server_switch_master API. * Fix transport callback (timebase master, sync) issue when used after jack_activate (RT thread was not running). * D-Bus access for jackctl_server_add_slave/jackctl_server_remove_slave API. * Cleanup "loopback" stuff in server. * Torben Hohn fix for InitTime and GetMicroSeconds in JackWinTime.c. * New jack_free function added in jack.h. * Reworked Torben Hohn fix for server restart issue on Windows. * Correct jack_set_error_function, jack_set_info_function and jack_set_thread_creator functions. * Correct JackFifo::TimedWait for EINTR handling. * Move DBus based audio device reservation code in ALSA backend compilation. * Correct JackTransportEngine::MakeAllLocating, sync callback has to be called in this case also. * NetJack2 code: better error checkout, method renaming. * Tim Bechmann patch: hammerfall, only release monitor thread, if it has been created. * Tim Bechmann memops.c optimization patches. * In combined --dbus and --classic compilation code, use PulseAudio acquire/release code. * Big rewrite of Solaris boomer driver, seems to work in duplex mode at least. * Loopback backend reborn as a dynamically loadable separated backend. * 1.9.2 (2009-02-11) * Solaris version. * New "profiling" tools. * Rework the mutex/signal classes. * Support for BIG_ENDIAN machines in NetJack2. * D-BUS based device reservation to better coexist with PulseAudio on Linux. * Add auto_connect parameter in netmanager and netadapter. * Use Torben Hohn PI controler code for adapters. * Client incorrect re-naming fixed : now done at socket and fifo level. * Virtualize and allow overriding of thread creation function, to allow Wine support (from JACK1). * 1.9.1 (2008-11-14) * Fix jackctl_server_unload_internal. * Filter SIGPIPE to avoid having client get a SIGPIPE when trying to access a died server. * Libjack shutdown handler does not "deactivate" (fActive = false) the client anymore, so that jack_deactivate correctly does the job later on. * Better isolation of server and clients system resources to allow starting the server in several user account at the same time. * Report ringbuffer.c fixes from JACK1. * Client and library global context cleanup in case of incorrect shutdown handling (that is applications not correctly closing client after server has shutdown). * Use JACK_DRIVER_DIR variable in internal clients loader. * For ALSA driver, synchronize with latest JACK1 memops functions. * Synchronize JACK2 public headers with JACK1 ones. * Implement jack_client_real_time_priority and jack_client_max_real_time_priority API. * Use up to BUFFER_SIZE_MAX frames in midi ports, fix for ticket #117. * Cleanup server starting code for clients directly linked with libjackserver.so. * JackMessageBuffer was using thread "Stop" scheme in destructor, now use the safer thread "Kill" way. * Synchronize ALSA backend code with JACK1 one. * Set default mode to 'slow' in JackNetDriver and JackNetAdapter. * Simplify audio packet order verification. * Fix JackNetInterface::SetNetBufferSize for socket buffer size computation and JackNetMasterInterface::DataRecv if synch packet is received, various cleanup. * Better recovery of network overload situations, now "resynchronize" by skipping cycles.". * Support for BIG_ENDIAN machines in NetJack2. * Support for BIG_ENDIAN machines in NetJack2 for MIDI ports. * Support for "-h" option in internal clients to print the parameters. * In NetJack2, fix a bug when capture or playback only channels are used. * Add a JACK_INTERNAL_DIR environment variable to be used for internal clients. * Add a resample quality parameter in audioadapter. * Now correctly return an error if JackServer::SetBufferSize could not change the buffer size (and was just restoring the current one). * Use PRIu32 kind of macro in JackAlsaDriver again. * Add a resample quality parameter in netadapter. * 1.9.0 (2008-03-18) * Waf based build system: Nedko Arnaudov, Grame for preliminary OSX support. * Control API, dbus based server control access: Nedko Arnaudov, Grame. * NetJack2 components (in progress): jack_net backend, netmanager, audioadapter, netadapter : Romain Moret, Grame. * Code restructuring to help port on other architectures: Michael Voigt. * Code cleanup/optimization: Tim Blechmann. * Improve handling of server internal clients that can now be loaded/unloaded using the new server control API: Grame. * A lot of bug fix and improvements. * 0.72 (2008-04-10) * 0.71 (2008-02-14) * Add port register/unregister notification in JackAlsaDriver. * Correct JACK_port_unregister in MIDI backend. * Add TimeCallback in JackDebugClient class. * Correct jack_get_time propotype. * Correct JackSocketClientChannel::ClientClose to use ServerSyncCall instead of ServerAsyncCall. * Better documentation in jack.h. libjackdmp.so renamed to libjackservermp.so and same for OSX framework. * Define an internal jack_client_open_aux needed for library wrapper feature. * Remove unneeded jack_port_connect API. * Correct jack_port_get_connections function (should return NULL when no connections). * In thread model, execute a dummy cycle to be sure thread has the correct properties (ensure thread creation is finished). * Fix engine real-time notification (was broken since ??). * Implements wrapper layer. * Correct jack_port_get_total_latency. * Correct all backend playback port latency in case of "asynchronous" mode (1 buffer more). * Add test for jack_cycle_wait, jack_cycle_wait and jack_set_process_thread API. * RT scheduling for OSX thread (when used in dummy driver). * Add -L (extra output latency in aynchronous mode) in CoreAudio driver. * New JackLockedEngine decorator class to serialize access from ALSA Midi thread, command thread and in-server clients. * Use engine in JackAlsaDriver::port_register and JackAlsaDriver::port_unregister. * Fix connect notification to deliver *one* notification only. * Correct JackClient::Activate so that first kGraphOrderCallback can be received by the client notification thread. * New jack_server_control client to test notifications when linked to the server library. * Synchronise transport.h with latest jackd version (Video handling). * Transport timebase fix. * Dmitry Baikov patch for alsa_rawmidi driver. * Pieter Palmers patch for FFADO driver. * Add an Init method for blocking drivers to be decorated using JackThreadedDriver class. * Correct PortRegister, port name checking must be done on server side. * Correct a missing parameter in the usage message of jack_midiseq. * New SetNonBlocking method for JackSocket. * Correct a dirty port array issue in JackGraphManager::GetPortsAux. * 0.70 (2008-01-24) * Updated API to match jack 0.109.0 version. * Update in usx2y.c and JackPort.cpp to match jackd 0.109.2. * Latest jack_lsp code from jack SVN. * Add jack_mp_thread_wait client example. * Add jack_thread_wait client example. * Remove checking thread in CoreAudio driver, better device state change recovery strategy: the driver is stopped and restarted. * Move transport related methods from JackEngine to JackServer. * Tim Blechmann sse optimization patch for JackaudioPort::MixAudioBuffer, use of Apple Accelerate framework on OSX. * Remove use of assert in JackFifo, JackMachSemaphore, and JackPosixSemaphore: print an error instead. * Correct "server_connect": close the communication channel. * More robust external API. * Use SetAlias for port naming. * Use jackd midi port naming scheme. * Notify ports unregistration in JackEngine::ClientCloseAux. * Fix in JackClient::Error(): when RT thread is failing and calling Shutdown, Shutdown was not desactivating the client correctly. * 0.69 * On OSX, use CFNotificationCenterPostNotificationWithOptions with kCFNotificationDeliverImmediately | kCFNotificationPostToAllSessions for server ==> JackRouter plugin notification. * On OSX, use jack server name in notification system. * Correct fPeriodUsecs computation in JackAudioDriver::SetBufferSize and JackAudioDriver::SetSampleRate. * Correct JackMachNotifyChannel::ClientNotify. * Correct bug in CoreAudio driver sample rate management. * Add a sample_rate change listener in CoreAudio driver. * Correct sample_rate management in JackCoreAudioDriver::Open. * Better handling in sample_rate change listener. * Pieter Palmers FFADO driver and scons based build. * Pieter Palmers second new build system: scons and Makefile based build. * Tim Blechmann scons patch. * Change string management for proper compilation with gcc 4.2.2. * JackLog cleanup. * Cleanup in CoreAudio driver. * Tim Blechmann patch for JackGraphManager::GetPortsAux memory leak, Tim Blechmann patch for scons install. * Dmitry Baikov MIDI patch: alsa_seqmidi and alsa_rammidi drivers. * CoreAudio driver improvement: detect and notify abnormal situations (stopped driver in case of SR change...). * 0.68 (2007-10-16) * Internal loadable client implementation, winpipe version added. * Reorganize jack headers. * Improve Linux install/remove scripts. * Use LIB_DIR variable for 64 bits related compilation (drivers location). * More generic Linux script. * Correct jack_acquire_real_time_scheduling on OSX. * Merge of Dmitry Baikov MIDI branch. * Correct JackGraphManager::GetPortsAux to use port type. * Remove JackEngineTiming class: code moved in JackEngineControl. * Add midiseq and midisine examples. * Cleanup old zombification code. * Linux Makefile now install jack headers. * Use of JACK_CLIENT_DEBUG environment variable to activate debug client mode. * Definition of JACK_LOCATION variable using -D in the Makefile. * Restore jack 0.103.0 MIDI API version. * Fix a bug in freewheel management in async mode: drivers now receive the kStartFreewheelCallback and kStopFreewheelCallback notifications. * Server and user directory related code moved in a JackTools file. * Client name rewriting to remove path characters (used in fifo naming). * Correct ALSA driver Attach method: internal driver may have changed the buffer_size and sample_rate values. * Add JackWinSemaphore class. * Add an implementation for obsolete jack_internal_client_new and jack_internal_client_close. * Add missing jack_port_type_size. * Use of JackWinSemaphore instead of JackWinEvent for inter-process synchronization. * Correct types.h for use with MINGW on Windows. * Move OSX start/stop notification mechanism in Jackdmp.cpp. * Correct CheckPort in JackAPI.cpp. * 0.67 (2007-09-28) * Correct jack_client_open "status" management. * Rename server_name from "default" to "jackdmp_default" to avoid conflict with regular jackd server. * Fix a resource leak issue in JackCoreAudioDriver::Close(). * Better implement "jack_client_open" when linking a client with the server library. * Correct "jack_register_server" in shm.c. * Add missing timestamps.c and timestamps.h files. * Correctly export public headers in OSX frameworks. * Suppress JackEngine::ClientInternalCloseIm method. * Use .jackdrc file (instead of .jackdmprc). * Install script now creates a link "jackd ==> jackdmp" so that automatic launch can work correctly. * Paul Davis patch for -r (--replace-registry) feature. * Internal loadable client implementation. * Fix JackEngine::Close() method. * Windows JackRouter.dll version 0.17: 32 integer sample format. * 0.66 (2007-09-06) * Internal cleanup. * Windows JackRouter.dll version 0.16: use of "jack_client_open" API to allow automatic client renaming, better Windows VISTA support, new JackRouter.ini file. * 0.65 (2007-08-30) * Fix backend port alias management (renaming in system:xxx). * Fix a bug in JackLibClient::Open introduced when adding automatic client renaming. * Fix a bug in jack_test. * Correct JackShmMem destructor. * Correct end case in JackClient::Execute. * Correct JackMachSemaphore::Disconnect. * Implement server temporary (-T) mode. * Make "Rename" a method of JackPort class, call it from driver Attach method. * Server/library protocol checking implementation. * 0.64 (2007-07-26) * Checking in the server to avoid calling the clients if no callback are registered. * Correct deprecated jack_set_sample_rate_callback to return 0 instead of -1. * Dmitry Baikov buffer size patch. * Correct notification for kActivateClient event. Correct JackEngine::ClientCloseAux (when called from JackEngine::ClientExternalOpen). * Correct JackWinEvent::Allocate. * Automatic client renaming. * Add "systemic" latencies management in CoreAudio driver. * Automatic server launch. * Removes unneeded 'volatile' for JackTransportEngine::fWriteCounter. * 0.63 (2007-04-05) * Correct back JackAlsaDriver::Read method. * Dmitry Baikov patch for JackGraphManager.cpp. Merge JackGraphManager Remove and Release method in a unique Release method. * Dmitry Baikov jackmp-time patch : add jack_get_time, jack_time_to_frames, jack_frames_to_time. Add missing -D__SMP__in OSX project. Add new jack_port_set_alias, jack_port_unset_alias and jack_port_get_aliases API. * Steven Chamberlain patch to fix jack_port_by_id export. * Steven Chamberlain patch to fix jack_port_type. Test for jack_port_type behaviour in jack_test.cpp tool. Add jack_set_client_registration_callback API. Add "callback exiting" and "jack_frame_time" tests in jack_test. * 0.62 (2007-02-16) * More client debug code: check if the client is still valid in every JackDebugClient method, check if the library context is still valid in every API call. * Uses a time out value of 10 sec in freewheel mode (like jack). * More robust activation/deactivation code, especially in case of client crash. * New LockAllMemory and UnlockAllMemory functions. * Use pthread_attr_setstacksize in JackPosixThread class. * Add Pieter Palmers FreeBob driver. * Thibault LeMeur ALSA driver patch. * Thom Johansen fix for port buffer alignment issues. * Better error checking in PortAudio driver. * 0.61 (2006-12-18) * Tom Szilagyi memory leak fix in ringbuffer.c. * Move client refnum management in JackEngine. * Shared_ports renamed to shared_graph. * Add call to the init callback (set up using the jack_set_thread_init_callback API) in Real-Time and Notification threads. * Define a new 'kActivateClient' notification. * New server/client data transfer model to fix a 64 bits system bug. * Fix a device name reversal bug in ALSA driver. * Implement thread.h API. * 0.60 (2006-11-23) * Improve audio driver synchronous code to better handle possible time-out cases. * Correct JackWinEnvent::Allocate (handle the ERROR_ALREADY_EXISTS case). * Correct JackEngine::ClientExternalNew. * 0.59 (2006-09-22) * Various fixes in Windows version. * Signal handling in the Windows server. * Improved JackRouter ASIO/Jack bridge on Windows. * Rename global "verbose" in "jack_verbose" to avoid symbol clash with PureData. * Add a new cpu testing/loading client. * Correct server SetBufferSize in case of failure. * Correct PortAudio driver help. * Use -D to setup ADDON_DIR on OSX and Linux. * Synchronize ALSA backend with jack one. * 0.58 (2006-09-06) * Correct a bug introduced in 0.55 version that was preventing coreaudio audio inputs to work. * Restructured code structure after import on svn. * 0.57 * Correct bug in Mutex code in JackClientPipeThread::HandleRequest. * ASIO JackRouter driver supports more applications. * Updated HTML documentation. * Windows dll binaries are compiled in "release" mode. * 0.56 * Correct SetBufferSize in coreaudio driver, portaudio driver and JackServer. * Real-time notifications for Windows version. * In the PortAudio backend, display more informations for installed WinMME, * DirectSound and ASIO drivers. * 0.55 * Windows version. * Correct management of monitor ports in ALSA driver. * Engine code cleanup. * Apply Rui patch for more consistent parameter naming in coreaudio driver. * Correct JackProcessSync::TimedWait: time-out was not computed correctly. * Check the return code of NotifyAddClient in JackEngine. * 0.54 * Use the latest shm implementation that solve the uncleaned shm segment problem on OSX. * Close still opened file descriptors (report from Giso Grimm). Updated html documentation. * 0.53 * Correct JackPilotMP tool on OSX. * Correct CoreAudio driver for half duplex cases. * Fix a bug in transport for "unactivated" clients. * Fix a bug when removing "unactivated" clients from the server. Tested on Linux/PPC. * 0.52 * Universal version for Mac Intel and PPC. * Improvement of CoreAudio driver for half duplex cases. * 0.51 * Correct bugs in transport API implementation. * 0.50 * Transport API implementation. * 0.49 * Internal connection manager code cleanup. * 0.48 * Finish software monitoring implementation for ALSA and CoreAudio drivers. * Simpler shared library management on OSX. * 0.47 * More fix for 64 bits compilation. * Correct ALSA driver. * Create a specific folder for jackdmp drivers. * Use /dev/shm as default for fifo and sockets. * "Install" and "Remove" script for smoother use with regular jack. * 0.46 * Fix a bug in loop management. * Fix a bug in driver loading/unloading code. * Internal code cleanup for better 64 bits architecture support. * Compilation on OSX/Intel. * Add the -d option for coreaudio driver (display CoreAudio devices internal name). * 0.45 * Script to remove the OSX binary stuff. * Correct an export symbol issue that was preventing QjackCtl to work on OSX. * Fix the consequences of the asynchronous semantic of connections/disconnections. * 0.44 * Patch from Dmitry Daikov: use clock_gettime by default for timing. * Correct dirty buffer issue in CoreAudio driver. Updated doc. * 0.43 * Correct freewheel mode. * Optimize ALSA and coreaudio drivers. * Correct OSX installation script. * 0.42 * Patch from Nick Mainsbridge. * Correct default mode for ALSA driver. * Correct XCode project. * 0.41 * Add the ALSA MMAP_COMPLEX support for ALSA driver. * Patch from Dmitry Daikov: compilation option to choose between "get_cycles" and "gettimeofday" to measure timing. * 0.4 * Linux version, code cleanup, new -L parameter to activate the loopback driver (see Documentation), a number of loopback ports can be defined. Client validation tool. * 0.31 * Correct bug in mixing code that caused Ardour + jackdmp to crash... * 0.3 * Implement client zombification + correct feedback loop management + code cleanup. * 0.2 * Implements jack_time_frame, new -S (sync) mode: when "synch" mode is activated, the jackdmp server waits for the graph to be finished in the current cycle before writing the output buffers. Note: To experiment with the -S option, jackdmp must be launched in a console. * 0.1 * First published version