Running

Requirements

You need the following hardware/software components for installing and running SoundHelix:

  • Java SE Development Kit or Runtime Edition 7 (JDK 7 or JRE 7) or later (http://www.oracle.com/technetwork/java/javase/downloads)
  • Apache log4j 1.2.x or later (included)
  • GNU Getopt 1.0.14 or later (included)
  • a MIDI hardware playback device, MIDI-capable software or operation system's MIDI implementation
  • some MIDI hub software a.k.a. virtual MIDI cable (optional)
  • some audio recording software (optional)


Downloading, installing and starting SoundHelix

Download a binary package of SoundHelix and extract it somewhere. Then, open a console and go to that directory. Then on Windows simply run SoundHelix by typing

run.bat

You can also double-click on "run.bat" (or "run", depending on how it's displayed) using the Explorer. If it doesn't work, make sure you have read and execute permission for "run.bat".

On Linux or any other Unix variant (also MacOS) type

./run.sh

(this requires the "x" flag of the script to be set; if it is not set, you can run "chmod a+x ./run.sh" upfront to set it).

Without parameters (like above), this will start SoundHelix with the XML file examples/SoundHelix-Popcorn.xml. You can also provide the SoundHelix XML file directly, e.g. by running "./run.sh examples/SoundHelix-Percussion.xml").

Run the script (run.bat or run.sh) with the parameter "--help" to view the usage options:


Usage: java -jar SoundHelix.jar [options] xml-filename

Options:

   -h
   --help                 Show this help

   -v
   --version              Show the application version

   -s songname
   --song-name songname   Set the song name for seeding the random generator

   -m
   --show-midi-devices    Show available MIDI devices with MIDI IN port

Instead of using a local filename you can use a URL that contains SoundHelix XML data. E.g., run "run.bat http://www.soundhelix.com/applet/examples/SoundHelix-Piano.xml". Supported URL schemes are http, https, ftp and file.

During playback, SoundHelix provides a very simple command console. Type "help" in the console to view the possible commands.

Logging

SoundHelix uses Apache log4j for logging. You can configure the log level to use in the "log4j.properties" file found in the SoundHelix directory. For more verbose logging, change the default log level "INFO" to "DEBUG" (more logging) or "TRACE" (most logging). Log levels can also be defined per Java class, if required. For details about how to configure log4j, please refer to the log4j documentation.

Using a MIDI hub (a.k.a. virtual MIDI router or virtual MIDI cable)

Some MIDI software (like Propellerhead Reason) does not offer a MIDI device itself, but can connect to an existing MIDI device to receive MIDI messages. SoundHelix also does not make itself visible as a MIDI device, so neither can SoundHelix connect to the MIDI software nor can the MIDI software connect to SoundHelix. In this case, you must install some MIDI hub software as a man-in-the-middle, for example loopMIDI (available for Windows, other platforms offer similar MIDI hub software), where both SoundHelix and the MIDI software can connect to. This software simply sets up a MIDI device that is visible from both Java and from any other MIDI software and relays MIDI messages between SoundHelix and the MIDI software. SoundHelix must be configured to use the MIDI hub input port as the MIDI output device and the MIDI software must use MIDI hub output port as the MIDI input device. A nice side effect of this approach is that you can start SoundHelix and the MIDI software independently, because they can both successfully connect to the MIDI hub, even if the corresponding MIDI partner has not connected yet.

With loopMIDI, simply create a MIDI port with any name and use this port in your SoundHelix XML file as the MIDI output device. The MIDI software can then use the same port for input. If needed, you can create more than one MIDI port (every MIDI port can handle upto 16 MIDI channels) and configure these ports as separate MIDI devices in SoundHelix. Visit the loopMIDI website to download loopMIDI. loopMIDI will run on Windows XP, Windows Vista and Windows 7 (both on 32-bit and 64-bit).

Comments

Virtual MIDI driver

Hi there,
for an alternative virtual MIDI driver,
you might take a look at loopMIDI on my website...
Best regards, Tobias

Works great

loopMIDI works great together with SoundHelix (both on 32-bit and 64-bit Windows). Thanks for the hint!

I've updated the documentation...

"With loopMIDI, simply create

"With loopMIDI, simply create a MIDI port with any name and use this port in your SoundHelix XML file as the MIDI output device."
Ok, but how i proceed to add a port in wich XML Sound Helix file please ?
Everybody are not programmers. I really beg you to give me some help, it will be very kind.
Thanks both of you for your creations.
Best regards.

In your SoundHelix XML file,

In your SoundHelix XML file, use the created MIDI port name in the "device" tag of the MidiPlayer, like this (here, the created loopMIDI port is called "loopMidiPort"):

<device name="device1" clockSynchronization="true">loopMidiPort</device>

The MIDI device can then be referenced by the name "device1". You can map the instruments to that MIDI device like this:

<map instrument="percussion" device="device1" channel="1"/>

Exporting

Hi, Is it possible to export the generated song to a raw MIDI file? If so, how? Thanks in advance, Frenk. (Combine)

It is currently not possible

It is currently not possible to export songs in MIDI format. However, this will most likely be a new feature added in SoundHelix 0.5.

MIDI export now available

MIDI format export is now part of SoundHelix 0.5u and will be part of the final release 0.5. See the MidiPlayer configuration for details.

I WISH

I wish I could use this. Had to blow open my windows security to get the "test applet" to run. WOW it's fabulous!
So I download it, and have NO IDEA what this is or how to open it. Run.bat doesn't do anything. Very sad.
The installation instructions might as well be in Chinese. :(

Please send the full

Please send the full SoundHelix output to . "Run.bat doesn't do anything" doesn't tell me much. Did you try opening a console, then went to the SoundHelix folder (where run.bat) is located and then typed "run.bat"?

Sorry, but i'm having big

Sorry, but i'm having big diffulties with soundhelix on Mac (Snow leopard 10.6.8) and the first question is: What do you mean with "Soundhelix XML file"? I can't find any file with this name in the pakage I dowloaded. When I start launching the program with ./run.sh via Terminal, i got a message error "Could not find the midiplayer" so i immagine I have to set the one I created. Where and wich is the file I have to set before lounching the program with ./run.sh. Tahnks in advance.

A couple of SoundHelix XML

A couple of SoundHelix XML files are included (see the examples subfolder, e.g. "SoundHelix-Piano.xml").

Please send the full output to ("Could not find the midiplayer" is not enough), then let's continue from there.

Add new comment

Error | SoundHelix

Error

Error message

PDOException: SQLSTATE[42000]: Syntax error or access violation: 1142 INSERT command denied to user 'o3587400'@'swh-live-web53.swh.1u1.it' for table 'drupal_accesslog': INSERT INTO {accesslog} (title, path, url, hostname, uid, sid, timer, timestamp) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7); Array ( [:db_insert_placeholder_0] => Running [:db_insert_placeholder_1] => node/38 [:db_insert_placeholder_2] => [:db_insert_placeholder_3] => 52.55.55.239 [:db_insert_placeholder_4] => 0 [:db_insert_placeholder_5] => vjiHkyB-S5c3g-0x-dSbfHVMp4qxeienTzlnp_ZvMRA [:db_insert_placeholder_6] => 1329 [:db_insert_placeholder_7] => 1711667695 ) in statistics_exit() (line 91 of /mnt/web305/e3/68/52429368/htdocs/soundhelix.com/public_html/modules/statistics/statistics.module).
The website encountered an unexpected error. Please try again later.