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 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.