Kunquat is a music sequencer similar to tracker programs. Some of its distinctive features include high time resolution and flexible tuning configuration. Great care is also taken in designing a mixing infrastructure to allow mixing logical bodies instead of hardware forced channels.
The design is partially motivated by the desire to compose interactive music, that reacts on changes in the environment where the music is played. Such factors might include the events in a video game, or the amount of customers in a restaurant where the music is played.
We are still at an early stage. Check us out on GitHub.
This release of Kunquat is mostly a maintenance release with bug fixes in audio rendering and user interface, small performance improvements, and some small new features.
The most important fixes include consistent application of composition random seed (previous versions would fail to set this correctly at the initial start of playback), generation of PADsynth waveforms in some corner cases, and user interface behaviour in the composition sheet with custom grids and hits. The most notable new features include support for channel muting and soloing in the tracker, and storing of default notation in modules. Finally, signal processing is now faster when rendering audio in short sections, and improved resource allocation allows increased polyphony with many complex instruments.
This release of Kunquat introduces many new audio synthesis and signal processing capabilities, adds new ways to control instruments, improves usability, and brings a new polished look for the tracker. Although there are still missing key features and some details are subject to change, it is now possible to make full compositions of rich sound quality with the tracker.
The tracker now supports traditional sample-based synthesis with sample selection based on pitch, force and random chance. Other new software synthesis processors include Karplus-Strong string synthesis as well as the PADsynth algorithm. Other new signal processors include a simple delay and a range mapper that can be used to convert signals between different value ranges.
The tracker also features new ways of controlling instruments. The most notable is the hit interface that can be used to specify controls for drums and other non-melodic instruments. The instrument expression interface can be used to specify different ways to play a single instrument, which is especially useful with guitars and other similar instruments. The old note interface has also been extended with editors for user-defined scales and tunings.
In addition to new features in the synthesiser and sequencer, the tracker features several usability improvements. The composition sheet now supports standard clipboard operations as well as undo and redo. Also, testing of instruments is now easier with extended controls and the ability to select a subgraph of an instrument to be played inside the instrument editor. Finally, the user interface provides better feedback and handles common error conditions more gracefully.
Many things have also changed in the lower level. The Kunquat library now optimises many common signal processing patterns and supports multithreaded audio rendering, significantly reducing the computation time required for playback. Also, the Kunquat project has now migrated to Python 3 and the tracker interface uses the PyQt5 wrapper for accessing the Qt toolkit.
Finally, we have begun the effort of adding macOS support. While it is not yet stable on the platform and there are many rough edges in appearance, it should be possible to use Kunquat Tracker for playing Kunquat modules.
This release of Kunquat features major enhancements in composition editor, instrument and signal processing editors and the audio synthesis pipeline. Other enhancements include basic interactivity support and miscellaneous bug fixes. Despite all the work, Kunquat is still in an early stage of development. However, we encourage you to try the tracker out and let us know how you feel about it!
It is now possible to write compositions consisting of several patterns. All patterns of a composition are displayed together in the sheet, helping the user see the full structure of the composition. We have also reintroduced an improved grid that helps aligning event triggers in the time axis. The user can create customised grid layouts to support tuplets. Custom grids also support shuffled meter.
The audio synthesis editor has been extended to cover most aspects of instrument and signal graph editing. We have combined the concepts of generator and DSP into a new kind of signal processor. These processors can manipulate signals either separately or mixed together. This approach allows for more flexibility in the way audio is synthesised while keeping individual processors simple. Additionally, note pitch and force information is now explicitly produced inside the instrument signal processing system. Finally, the lowpass and stereo panning events have been replaced with more generic events that control user-defined potentiometers of instruments and effects.
To forward the support of composing game music, we have reintroduced editor for composition interactivity. The composer is now able to define environment variables that can be used to alter the way music is played. This provides a convenient interface for programmers who wish to control music playback without having to worry about the internal structure of the music.
In this release, the composition sheet returns with just enough support for creating small polyphonic tunes. Note and rest editing is supported through both mouse and keyboard. We have included a simple mixing graph editor together with limited support for instrument editing. You can also save and load your work using the new save and open buttons.
On the architectural side, we did some internal code refactoring as well as some small adjustments to APIs. As a result, the Kunquat library API now reveals default values of the rendering engine initialization set, removing the need to copy values over to tracker code manually.
We also did a complete renewal of the build process and started using the fabricate build tool. Therefore, you may wish to read the updated installation instructions even if you have built Kunquat before.
There has been silence for some time now when it comes to Kunquat releases. However, the development side has been active during this non-break. We have moved development to GitHub and upgraded our development process to match that.
Since the previous release we have rewritten the tracker several times to experiment with different threading and programming models. While we have now found a model that seems to work, the tracker has lost lots of features that need rewriting to match the new model. We will be returning old features back one by one in future releases.
While many old features were lost in the architecture upgrade, the tracker also gained some new features. The new release introduces an on-screen keyboard that visualizes played notes with intense twinkle. Keyboard jamming is now a recognized use case and the latency and performance of the tracker have been adjusted accordingly. The tracker includes a log window that show what Kunquat events are fired in the background. In addition, some performance measurements are displayed in the about window.
In addition to improvements in the tracker, we have also improved the API and architecture of the Kunquat C library. It is now possible to get an estimate of the duration of a Kunquat song without breaking the playback state. It is also possible to retrieve all fired events regardless of how many events are fired at once. We also added instrument controls that allow the user to rearrange their instruments more efficiently. Finally, we rewrote the sequencer code to give us more flexibility when implementing new features in the playback code.