There are 2 sorts of sounds: the "simple sounds", which describe a single time trajectory in the frequency domain, and include a waveform and envelope description, and the "sound groups", which are made of simple sounds assembled together to produce a complex effect. All sounds can be modulated in various ways by other sounds.
Are created by means of the "Paint" and "Draw" tools. Simple sounds are made of the following attributes:
This is a list of points that define a piecewise linear function of time on the frequency domain. This list can be edited using the Edit tool.
The level, or loudness, is a floating point number corresponding to the overall loudness of the sound. For practical purposes, the recommended range of loudness for this parameter is the interval [1..9], with 1 corresponding approximately to a ppp level, 9 to a fff, and 4 to a mezzo piano level. See the dynamics page on Wikipedia for more details on this scale.
This loudness is to be understood as a relative loudness compared to all the other sounds in the piece, rather than an absolute loudness. When the piece is rendered in audio, the maximum composite loudness is computed, mapped to the maximum available value for the output device, and all sound levels are mapped to lower values weighted after their respective level. Hence, two sounds at the same level and with the same envelope will sound equally loud. A sound level of 4 will be heard as approximately twice louder (+6dB SPL) than a 3 level, a sound of level 9 will be approximately 32 times louder (+30dB SPL) than a sound with a level of 4 and so forth.
It should be noted that, while the sounds are created with an integer level value between 1 and 9, it is always possible to specify values out of this range (including negative values), or non-integral values, by using the Edit > Set Level... action, which accepts relative and floating point values, or by entering notes from a MIDI keyboard.
Graphically, the level of a sound is mapped to the transparency value of the shape that represents it: sounds are are more transparent or appear less contrasted from the background will be rendered softer than sounds that appear darker. Sound levels can also be displayed in the main view using the View > Show Levels action.
The envelope complements the level parameter to describe a loudness profile. It is a piecewise-linear function in the range [0..1] which is mapped to the full duration of each sound it is assigned to. The places where the envelope value reaches 1 will be rendered at the exact level set for the sound, while the places where the envelope value is 0 will sound silent. Intermediate values of the envelope are linearly mapped to the interval [0..level] for each sound. The envelope also include an attack and a release duration, so that sounds of varying lengths that use the same envelope can be recognize as being from the same "instrument".
Graphically, the envelope is represented by a varying thickness of the line that represents the sound. This is most convenient to spot and align accents in the piece, and getting therefore the rhythm of the piece right.
Roughly speaking, the waveform describes the timbre of the sound being described. The timbre is often denoted by attributes such as "color", "brightness"... For harmonic sounds, the waveform defines the spectral components of the sound (overtones/partials), as well as their relative weight. Yet, sounds in HighC are sometimes inharmonic (including white noise), and their color can evolve in time. Also, there are many ways to generate waveforms, all tied to a particular synthesis technique. So, giving a precise definition of what is a waveform is quite a challenge.
Graphically, waveforms are represented by a color computed each time the waveform is modified. The color reflects some of the characteristics of the sounds: harmonic sounds will be saturated (pure red, pure green or any pure color), while inharmonic (noise bands, sounds with heavy modulation...) will be greyish/desaturated. Bright sounds (sounds that have a lot of energy in the high end of the spectrum) will be blueish, while pure sounds (like a sine) will be redish. In a sense, this color mapping is an exact translation of the average sound spectrum's profile to the visible color spectrum. There is a perceptual issue, in that we can orally distinguish many more sound textures than we can distinguish hues and saturation values. Thus, sounds having close enough parameters will look indistinguishable visually, while they sound different. Also, most common "instrumental" sounds will fall in between the red and the green side of the spectrum (as very bright sounds are harsh to the hear), making the view somewhat dull. To remedy this issue, you can choose your own colors for particular waveforms so as to introduce better contrast between waveforms that have a similar profile but sound actually very different.
Tags are labels that you can attach to a sound to facilitate the manipulation of groups of sounds as a self-contained set. Tag sets correspond roughly to instrumental tracks (or voices) and parts in a composition.
Tags for a given sounds can be viewed by using the View > Show Tags.. action.
In a future version, sounds in HighC will be attached a trajectory in the physical space. This will be used to generate stereo, but also fully spatialized pieces, as well as handle multiple output channels.
Patterns are groups of sounds that are stored in the piece and can be instantiated at any place or position in the piece. Patterns are particularly useful to create rhythms, chord sequences, riffs, or other repeated patterns that you might want to position first, then edit.
Effects are "shadow sounds" that are based on a set of original sounds that you created and selected. They repeat the input sounds a given number of times, adding some continuous variations of loudness, pitch or other attributes of the sound. They allow various audio effects such as echo, delay, reverb to be implemented easily... Effects are not implemented yet.
A sound can be used to modulate another sound, either in pitch (vibrato or frequency modulation), or in loudness (tremolo or ring modulation). Modulations are created by selecting the modulated sounds, then the modulator, then applying one of the commands of the Effects menu. Modulations are represented by vertical lines that link modulators and modulated sounds, and by a diagonal pattern that identifies sounds that are modulated with one another.