DISSCO
Digital Instrument for Sound Synthesis and Composition
DISSCO offers a unified approach to composition and sound synthesis, bringing both disciplines together in a seamless process. DISSCO consists of three modules: LASS, a Library for Additive Sound Synthesis; CMOD, a Composition Module; and LASSIE, a Graphic User Interface (GUI).
Although DISSCO can be employed to generate music in any desired style, it exhibits a bias towards the use of controlled randomness and encourages the user to plan the composition ahead of time and in detail. DISSCO is a “black box”: once the data is fed in, the user does not intervene during the computations, and the output does not require post-processing. All three components (LASS, CMOD, and LASSIE) are written in C++; the Xerces parser is used to read and interpret CMOD input files created by LASSIE in the XML format. LilyPond is necessary to create a score using traditional Western notation.
In order to compile DISSCO, Xerces, muParser.h, sndfile.h, gtkmm and premake4 are needed.
DISSCO runs in Linux. A Docker container allows it to run in other environments as well.
LASS
LASS (Library for Additive Sound Synthesis) can generate an arbitrary number of sounds and each sound can have any number of partials. LASS provides the user with complete control over the attributes of each partial. LASS is unique in the way it allows the user to specify the perceived loudness (a nonlinear function of amplitude and frequency) of sounds. To achieve an assigned perceived loudness, the amplitude of a sound is adjusted on the basis of the ISO equal-loudness curves and a number of critical bands. Unlike its MUSIC N-type predecessors DIASS_M4C and DISCO, LASS uses function evaluations instead of table look-ups and does not require a "score".
Three design goals have guided this project: expandability, ease of use, and efficiency. The architecture of LASS is modular; new features are added continuously and future developers must be able to easily expand the system. The library was designed to be user-friendly. The interfaces to classes were made as clear as possible and kept consistent across objects. Extensive use of references instead of pointers helps insure good memory management. Since sound synthesis is computationally intensive, LASS must also be efficient.
LASS is based on theoretical contributions by Hans Kaper, Senior Mathematician Emeritus at Argonne National Laboratory, and Sever Tipei, Professor Emeritus at the University of Illinois at Urbana-Champaign and Director of the "James W. Beauchamp Computer Music Project". It has benefited from their experience with two earlier additive synthesis systems, DIASS_M4C and DISCO.
The general framework of the library and many of its features were written by Braden Kowitz. A number of students enrolled in the "Advanced Computer Music" seminar as well as National Center for Supercomputing Applications SPIN interns have also contributed to the project.
In 2013, LASS was partly rewritten by Ming-ching Chiu to fully utilize the power of multi-core personal computers. DISSCO is implemented on computer clusters at NCSA and San Diego Supercomputing Center.
CMOD
The central component of the Composition Module is the Event class. An event can have children events that, in turn, can become parent events and have their own children, in an arrangement reminiscent of Russian dolls (matryoshkas). CMOD has the structure of Directed Acyclic Graph (DAG):
there is only one Top event, but there can be any number of High, Medium,
Low, and Bottom events corresponding to various structural levels of the composition: the entire piece, sections, themes, chords or any other subdivisions. Individual sounds are generated at the Bottom level. Not all types of events need to be present, and new categories could be created. This structure reflects the fact that similar tools can be used at different time scales and for different parameters.
Such tools allow the user to assign values at all structural levels and to build individual sounds. They can be strictly deterministic (lists of elements, sieves, patterns) or part of the "controlled randomness" family (probability, stochastic distributions, Markov chains).
All events have a start time, type, and duration. However, the Top and the Bottom events differ from the other ones – the Top event is unique, while the Bottom event creates synthesized sounds, notes in a score, or both, and assigns to them various attributes such as vibrato, tremolo, glissando, location in space, and reverberation for sound synthesis, or for notation, accents, ties, staccato, 8va, trill, etc.
An initial version of the Composition Module was written by Sever Tipei. It was enhanced by students in the “Advanced Computer Music” seminar, and improved by Ryan Cavis, Andrew Burnson, Ming-ching Chiu, Rishabh Rajagopalan, Ziyuan Chen, SPIN interns and volunteers.
LASSIE
A Graphic User Interface, provides easy access to DISSCO. It offers the user a convenient way of managing input data in an integrated graphic environment. LASSIE is implemented using gtkmm, the C++ interface for the popular GUI library GTK+.
The main window of LASSIE contains a drop-down menu and the tool bar at the top of the window, the Object List in the left portion of the main window, and the attributes of the object selected in the Objects List in the right part of the main window. The Object List groups the objects (events, spectrums, notes, envelopes, etc.) in separate folders. The attributes of any object can be inspected and edited by double clicking the object in the Objects List.
An Envelope Library window is part of LASSIE and is opened by clicking the “Envelope Library” button at the bottom of the Objects List. The Envelope Library window provides the visualized representation of the original text-based envelope specification. Envelopes can be modified directly in this window.
LASSIE provides some instructions in real time as the attributes of objects are edited. It also checks the syntax of the information input and shows warnings if the input files contain illegal syntax.
DISSCO can be run through LASSIE or, after the input was provided, in command line mode
LASSIE was written by Ming-ching Chiu.
DISSCO is free software; it may be redistributed and/or modified under the
terms of the GNU General Public License as published by the Free Software
Foundation. See: