Welcome to SoundHelix!

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, e.g., for using or post-processing them in third-party MIDI software.

SoundHelix is open-source software and is licensed under the GNU General Public License v3. The project is hosted on SourceForge.


There is now an Amazon Alexa skill for SoundHelix. The Alexa skill is available in English (UK and US) and German. Just search for the skill "SoundHelix" in your Alexa app. "Alexa, start SoundHelix and play a song."


  • produces enjoyable non-esoteric algorithmic random music
  • supports instant remixing by using a different random seed
  • uses randomness as a source of surprise
  • platform independent - runs on any platform that supports Java
  • can generate full songs within a couple of milliseconds
  • fully configurable using XML
  • supports function expansion, e.g., Euclidean rhythms
  • can be used
    • as a standalone Java application
    • as a JNLP-based applet
    • as an applet embedded into a webpage
    • within third-party Java software (e.g., as in-game music) via the SoundHelix API
  • includes an integrated custom MIDI player, which
    • can remote-control any number of MIDI devices in parallel with up to 16 MIDI channels each
    • supports any number of synchronized LFOs for slowly changing MIDI parameters (modulation wheel, pitch bend, etc.)
    • supports conditional note patterns and conditional LFO actions
    • supports sending MIDI timing ticks to selected MIDI devices (for time-critical effects like echo)
    • supports configurable non-uniform timing (groove patterns)
    • supports milli-BPM playing speed resolution
    • allows saving generated songs in MIDI (.mid) format
  • can be extended easily by providing additional implementations for the defined interfaces

SoundHelix has left its experimental state. It already produces fancy tunes and can be used for quite complex music. Be aware, however, that things like the XML format and parts of the API might change drastically in the future. If you like SoundHelix, don't forget to click on the "I like" button in the "Resources" block on the left and consider making a donation. Feel free to comment on all documentation pages and FAQs!

Check out the audio examples for example results generated with SoundHelix. You can also play around with SoundHelix in real-time by using the SoundHelix applet.

You can follow SoundHelix on Facebook, Twitter and SoundCloud.

Questions? Bugs? Feature requests? Visit the SoundHelix Support Forum!

Development statistics

Project development statistics provided by Open HUB: