SoundHelix is a free, versatile and flexible Java framework for composing and playing algorithmic random music based on constrained random generation (CRG). SoundHelix is an algorithmic random music generator (including a built-in MIDI sequencer) which can play generated songs on MIDI devices in real-time. It can also write the generated songs as MIDI files.
Homepage
Download
Recent Releases
0.829 Apr 2015 10:47
major feature:
0.8: 2015-04-28
- Added support for conditional LFOs in the DrumSequenceEngine and the MidiPlayer. Similar to conditional patterns, a condition
can now trigger the usage of an LFO for creating an LFO sequence, which can be used in the MidiPlayer for remote-controlling
MIDI controllers. In the DrumSequenceEngine, a conditional LFO can be configured via the "conditionalLFO" tag, which can be
mapped to a MIDI controller in the MidiPlayer via the "instrumentControllerLFO" tag.
- Added support for velocity scaling in each track in the SimpleArrangementEngine via the new tag "velocity". Each track's note
velocity is scaled by a factor of the given velocity divided by the song's maximum velocity. For example, if the song's maximum
velocity is 1000 and you specify 500 in this tag, all velocities of all the track's sequences are halved.
- Added support for providing a ticks-per-beat value per pattern. If the actual ticks per beat of the song is different (but
compatible) all note/pause lengths of the pattern are scaled accordingly. For example, you can have a song with a ticks-per-beat
value of 12 and provide some patterns with a ticks-per-beat value of 4, which will then be scaled length-wise by a factor of 3.
The ticks per beat can be specified per pattern in the StringPatternEngine and in the CrescendoPatternEngine (using the attribute
"ticksPerBeat") and per pattern engine in the RandomPatternEngine and RandomFragmentPatternEngine using the tag "ticksPerBeat".
These new attributes/tags are optional. If they are not provided, no length scaling is performed.
- Added support for soloing and muting individual tracks via the track tag's attributes "solo" and "mute". If at least one track uses
solo="true", the song is generated only with the soloed tracks. Otherwise, all tracks which do not have mute="true" are used.
In any case, all unused ActivityVectors are ignored when the song's ac
|