Kunquat 0.3.2 "DSP effects"

Milestone information

Project:
Kunquat
Series:
0.3
Version:
0.3.2
Code name:
DSP effects
Released:
 
Registrant:
Tomi Jylhä-Ollila
Release registered:
Active:
No. Drivers cannot target bugs and blueprints to this milestone.  

Download RDF metadata

Activities

Assigned to you:
No blueprints or bugs assigned to you.
Assignees:
1 Ossi Saresoja, 4 Tomi Jylhä-Ollila
Blueprints:
No blueprints are targeted to this milestone.
Bugs:
14 Fix Released

Download files for this release

After you've downloaded a file, you can verify its authenticity using its MD5 sum or signature. (How do I verify a download?)

File Description Downloads
download icon kunquat-0.3.2.tar.gz (md5, sig) Kunquat source release 116
last downloaded 5 weeks ago
Total downloads: 116

Release notes 

The release of Kunquat 0.3.2 is packed with many improvements over previous versions. The new release ships with reverb and volume scaling, which are the first effects utilizing our new support for DSP effects. A flexible graph structure is provided for routing audio data, allowing DSP effects both inside instruments and for compositions. We now have better support for the kind of generators and DSP effects that benefit from allocating internal buffers based on mixing rate used for playback. The new release also adds support for pitch-independent generators and instruments, which buys us more convenient input mechanisms and saves the composers some time. The changes to tuning system also make it possible to implement more convenient input mechanisms, and simplify the overall model for manipulating pitch. Several internal modifications support future work in developing composition editors and interactive music players. Finally, we got some new noise generators, but also support for storing generators and DSP effects as standalone files.

The new release ships with reverb and volume scaling, the first effects utilizing our new support for DSP effects. The support for applying DSPs was one of the biggest shortcomings directly involved with audio processing. DSP effects are virtual machines that produce audio data based on incoming audio data. The type of input data is what separates them from generators, which require playback events in order to produce output. The reverb code is based on Freeverb, generously contributed into the public domain by Jezar at Dreampoint.

Kunquat provides a flexible graph structure for routing audio data, allowing DSP effects both inside instruments and for compositions. In the model, we chose compositions, instruments, generators and DSP effects have ports for outputting sound. In addition, DSP effects have inputs for receiving sound that the related effect is applied on. Use of DSP effects is allowed both inside an instrument and for the whole composition. It should be possible to package your favourite distortion effect within your distorted guitar instrument, but it should also be possible to add an echo to your composition as a whole.

The new release has better support for generators and DSP effects that benefit from allocating internal buffers based on the mixing rate used for playback. In order to allow these devices to produce output correctly even after the user decides to change the mixing rate, we have changed the method of controlling the mixing rate in the API of libkunquat. Instead of letting the user of the library change the mixing rate arbitrarily on every mixing call, we have provided a dedicated function for setting a new mixing rate. This makes it possible for generators and DSP effects to reallocate their internal buffers if needed.

The new release also adds support for pitch-independent generators and instruments, which buys us more convenient input mechanisms and saves the composers some time. In the previous releases, distinguishing pitch-independent generators and instruments from the pitch-relative ones was not possible. This release adds pitch locks that instrument and generator builders can use to guarantee that the sound of the the instrument or generator will be same for all input pitches. When we know the pitch does not matter, we can build more efficient user interfaces that allow binding such instruments to keyboard keys one for each without wasting keys for pitch selection. Being able to tell a generator or an instrument does not depend on pitch will also save time, as the musician does not need to try out the instrument or generator at all possible pitches just to find out they all sound the same.

The changes to tuning system makes it possible to do more convenient input mechanisms, and simplify the overall model for manipulating pitch. The trigger for playing a note was changed to use cents, which means it is no longer relative to a tuning. Getting rid of the mapping against a tuning table made regular playback more straightforward. The change should also help user interface developers to come up with better input methods, as the input method is not tied to one tuning or another. Retuning is now done by doing transformations on the cent value instead of note table. Pitch offset in the tuning table allows shifting the whole tuning to a direction or the other. This is done by triggering a pitch offset event, either from the composition, or maybe in the future from a game controlling playback.

Several internal modifications were done to better support future work in developing composition editors and interactive music players. The event handler taking care of events launched by triggers in patterns was made more flexible. It should now also be able to handle events coming from a foreign environment such as a game or graphical composition editor application. This should, in time, make it easier to integrate Kunquat compositions with external environments such as games or maybe even some real life sensory input.

Kunquat gained some noise generators, and supports now storing generators and DSP effects in standalone files. Generators and DSP effects gained their own file formats. It is now possible to store compositions, effects, instruments, generators, and scales, all in their own files. The new noise generator engine is at the moment able to generate white noise and blue noise. Other noise types are likely to be added in the future.

Changelog 

This release does not have a changelog.

0 blueprints and 14 bugs targeted

Bug report Importance Assignee Status
515781 #515781 change note on event to use cents 2 Critical   10 Fix Released
515793 #515793 code event handler 2 Critical Tomi Jylhä-Ollila  10 Fix Released
596983 #596983 DSP ports 2 Critical   10 Fix Released
549549 #549549 generator pitch lock 3 High   10 Fix Released
549553 #549553 instrument pitch lock 3 High   10 Fix Released
597796 #597796 generator pitchlock should happen at input 3 High   10 Fix Released
372196 #372196 DSP mixing graph 4 Medium Tomi Jylhä-Ollila  10 Fix Released
386499 #386499 effect processor frame 4 Medium Tomi Jylhä-Ollila  10 Fix Released
423702 #423702 reverb effect 4 Medium Tomi Jylhä-Ollila  10 Fix Released
597424 #597424 file formats for generators and effects 4 Medium   10 Fix Released
515784 #515784 pitch offset to tuning table 5 Low   10 Fix Released
515785 #515785 pitch offset event 5 Low   10 Fix Released
596977 #596977 generator specific pitches in instrument pitch lock 5 Low   10 Fix Released
371445 #371445 white noise generator 6 Wishlist Ossi Saresoja  10 Fix Released
This milestone contains Public information
Everyone can see this information.