HPKComposer, a 3D Art composition tool for Csound - version 2.1

Here is a brief description of the main characteristics. For a more complete description, click on the "GUI" button on the left.

The overall objective of HPKComposer is to be an authoring tool that lets you

  • HPKComposer simplifies the use of Csound, through a graphical user interface, by the use of algorithmic generators for building the score events, and by allowing sound design with the help of  software synthesizers. The virtual synthetizer pluggable structure allows the use of different software synthetizer that are all using Csound. Three are providing:
    • HPKSynthe has a classical structure made of sound generators, filters and modulators, and complety hides the Csound synthesis language,
    • Csounds Orc allows the direct use of the Csound opcodes through a text editor.
    • Modular allows to build modular synthetizers where modules are high level Csound opcodes.
  • The algorithmic generators are based on CMask, and have been extended (fractal,random patterns list, multi segment generator, polyphonic support, scale quantification, randomization). A score is made of up to 8 Structures, each one having its own algorithmic generator, and using one of the 8 Instruments. High level tools are available, like chord morphing, clouds generator and step sequencer.
  • The definition of the instrument parameters is dynamic, they are defined in the virtual synthesizer editor and then controlled in the Structure editor using any of the algorithmic generators.
  • It is possible to generate VRML97 world where graphical objects transformations can be linked to instrument parameters values, or modifyied by external MIDI devices.
  • Csound compilation is launched from HPKComposer.
  • A MIDI file can also be generated from the note events Structures.
  • The resulting sound file can be played from HPKComposer using an external sound player.


The score is made of 8 structures that can be individually activated. Each structure is assigned to one of the 8 available Instruments. A structure represents how the score events will be generated, and when. Each note event is defined by several parameters: start time, duration, pitch (primary and 3 optional secondary values for polyphonic pitch), amplitude, and 16 controllers that are assigned to the Instrument parameters in the Instrument editor. For each event parameter, you specify the evolution using a generator, a mask modifier and a quantifier. The range of every parameters, except those related to the timing of the event, are normalised to 127. This simplifies the editing, the copy operations and allow easy integration with MIDI controls.

HPKSynthe software synthesizer

Its structure is common in the synthesizer world: four sound generators can be routed or not through a transformation module (ring modulation and filters), and through up to 8 global effects (delay and reverberations). Some sound generators and filters parameters can be modulated by LFO, envelopes or random generators.

Sound generators are extensible by writing Java classes, but a fairly complete sound palette is available in standard.

  • Pluck, pluck opcode
  • Granular sampler, sound file as grains, taken from CMask
  • Granular, grain opcode
  • FM with waveshaping
  • Simple oscillator
  • Risset pseudo-flanger
  • Sawtooth oscillator (band limited impulse train), from Hans Mikelson
  • Pulse oscillator, from Hans Mikelson
  • Analog VCO
  • Lyon double resonated noise
  • Randi pitched noise
  • Pink Noise
  • Electric Priest (Tobias Enhus)
  • Electric Priest Aaah (Tobias Enhus)
  • Variable Spectrum Oscillator (gbuzz opcode)

3D world builder

The 3D world editor lets you describe a background theme for the world, how the produced sounds are places in it, and let you add pre-defined graphical objects, that can follow or not sound evolution. You can also describe how external MIDI device can interoperate with this 3D world. As in fact a graphical object can also be a sound file, it is possible to add external sound files to the scene and to mix them using external MIDI device. The supported MIDI interactions are note, velocity and controler messages.