A mirror of SoundHelix, the software MadHelix is based on.

[[ 🗃 ^zoKmE soundhelix ]] :: [📥 Inbox] [📤 Outbox] [🐤 Followers] [🤝 Collaborators] [🛠 Commits]

Clone

HTTPS: git clone https://vervis.peers.community/repos/zoKmE

SSH: git clone USERNAME@vervis.peers.community:zoKmE

Branches

Tags

soundhelix-0.2 :: doc /

CHANGELOG.txt

SoundHelix
----------

Author: Thomas Schürger (thomas@schuerger.com)


Change log
----------

0.2: 2011-07-31

    - Completely rewrote the constraint fulfillment code in the SimpleArrangementEngine. Now a randomized backtracking
      algorithm is used to find a song activity matrix which fulfills all constraints. The time required to find a valid
      matrix is now a fraction of what it was before, even if more restrictive constraints are used. You might need to
      increase the maxInterations parameter up to a million or more if you used that parameter before (it now defaults to
      1000000).

    - Added "seed" attribute which allows random seeding of a component by providing a constant 64-bit value (decimal
      integer with sign). Added "salt" attribute which allows to set the random salt by providing a 32-bit value (decimal
      integer with sign). Both attributes can be used for all tags where a "class" attribute is used for instantiating a class,
      but not both can be used at the same time. The provided seed value will be used instead of deriving a seed from the
      parent component or as a random seed salt for the seed derivation scheme, respectively. See the "Random seeds" section
      of the documentation for details (http://www.soundhelix.com/doc/random-seeds).

    - Added "obeyChordSections" tag to the ArpeggioSequenceEngine. If set to true, a chord that spans a chord section boundary
      will lead to a pattern being chosen that ends at the boundary rather than when the chord ends. Defaults to false.

    - Added "obeyChordSections" tag to the PadSequenceEngine. If set to true, a chord that spans a chord section boundary
      will lead to retriggering the chord at the boundary. Defaults to false.

    - Added the constraints "minSegmentLength" and "maxSegmentLength" to the SimpleArrangementEntry, which constrain the
      minimum and maximum activity segment lengths, respectively, of an activity vector (counted in chord sections). The two
      constraints will be ignored for an activity vector if the activity vector never becomes active.

    - Added the counterpart constraints "minPauseLength" and "maxPauseLength" to the SimpleArrangementEngine, which constrain
      the minimum and maximum pause lengths, respectively, between activity segments (counted in chord sections).  The
      constraints will be ignored for an activity vector if the activity vector is never active or only has one activity
      segment.

    - Added a "uniquePatternParts" tag to the RandomPatternEngine and the RandomFragmentPatternEngine. If the value is "true",
      the pattern parts within a pattern group a generated until they are unique. If the value is "false", the uniqueness is
      not enforced. Defaults to true (which is what was used in the previous versions).


    - Added "skipWhenApplied" and "skipWhenNotApplied" tags to conditional patterns in the DrumSequenceEngine. With these two
      tags you can define the number of conditional patterns to skip if the current pattern was applied or was not applied
      (even though it was allowed to be applied), respectively. You can skip backwards by using a negative number (-1 would
      repeat the current conditional pattern, -2 would jump to the previous one, etc.; make sure that you don't create
      infinite loops). Both values default to zero, which means that processing continues with the next pattern.

    - Fixed bug that prevented correct random seeding when a song name was used on the command-line.


0.1: 2011-05-22

    - Added a better random seed augmentation scheme. Now random seeds from a component are passed on to subcomponents by
      augmenting the value with a hash value of the implementation class of the subcomponent and the position of the subcomponent
      within the parent component. This makes sure that each subcomponent receives a different random seed with very high
      probability.

    - The DrumSequenceEngine now supports using pitch offsets relative to the base pitch. For example, if the base pitch is
      36, using "0" in the pattern uses pitch 36, "1" uses pitch 37, etc. This is suitable for example for loop players, where
      different pitches for different loop fragments are used.

    - Removed the RhythmSequenceEngine, because it was not configurable and not really usable. Use the DrumSequenceEngine instead.

    - Added a new PatternEngine called RandomFragmentPatternEngine. This PatternEngine can be used for example to generate
      drum patterns. It gives you more control over the results than the RandomPatternEngine by building a pattern by concatenating
      provided pattern fragments, but does not support random velocity generation.

    - Added the constraints startBeforeSection and stopAfterSection to the SimpleArrangementEntry, which are the counterparts of
      startAfterSection and stopBeforeSection, respectively.

    - The RandomSequenceEngine and the RandomPatternSequenceEngine are now deprecated (they will be removed in a future
      version). Consider using the RandomPatternEngine or RandomFragmentPatternEngine with a different SequenceEngine instead.

    - Added pseudo LFO controller "milliBPM" to the MidiPlayer. This allows changing the BPM during playback using an LFO. Note
      that this may have some side-effects on other BPM-dependent parts of the MidiPlayer (MIDI timing ticks, LFOs, etc.), just
      like if you change the BPM manually during playback.

    - Re-implemented the ArpeggioSequenceEngine to use PatternEngines.

    - The SoundHelix applet now sets the applet's window title to the current song name.

    - Improved example. The example now uses the RandomFragmentPatternEngine for the percussion and the ArpeggioSequenceEngine for
      arpeggios.


0.0.5: 2011-02-27

    - The command-line version of SoundHelix now accepts document URLs as well instead of only files, so XML files
      can be referenced by using HTTP/HTTPS/FTP URLs directly. Note that HTTPS requires special JVM configuration.

    - The base URL (xml:base) is now set correctly when XML documents are parsed. This means that
      XInclude can now be used properly. All relative URLs referenced in the XML documents are now
      relative to the including document URLs. The example has been changed to source out the SongNameEngine and
      the HarmonyEngine configuration as separate documents.
 
    - The RandomPatternEngine now also supports wildcards as offsets. Useful for all SequenceEngines which allow wildcards
      (e.g., the MelodySequenceEngine).

    - Introduced "version" attribute for the XML root tag. If present, the application version will be checked against the
      specified version of the tag. If the version attribute ends with a "+" (e.g., "0.0.5+"), the application version must
      be at least the given version, otherwise the versions must match exactly.

    - Added escaping support for splitting strings. For example, now commas in MIDI device names can be escaped by preceding
      them with a backslash.

    - Fixed inconsistent XML structure of the "lfo" tag of the MidiPlayer. The tag is now called "controllerLFO" without
      a "class" attribute, and it has (among others) a subtag called "lfo" with a "class" attribute. Fix your XML files accordingly.

    - Fixed inconsistency in the controllerLFO/channel tag of the MidiPlayer (channels were numbered from 0-15 instead of
      1-16 like in the "map" tag). Fix your XML files accordingly by increasing the LFO channels by 1.

    - Added random seedability and XML configurability to the LFO interface.

    - Added song name text field to the applet. A new song with a given name can be created by entering it into the field,
      with the song name being used as the random seed.

    - Added buttons for Facebook and Twitter to applet, which lets you share the current song easily on Facebook/Twitter.

    - Added buttons for YouTube and SoundHelix to applet, which lets you visit the SoundHelix YouTube channel and the SoundHelix website

    - Added tooltips to all text fields and buttons in the applet.

    - Updated included log4j version from 1.2.8 to 1.2.16.

    - Improved example.


0.0.4: 2011-01-15

    - Added a first version of a JNLP-based applet. The applet is available at
      http://www.soundhelix.com/applet/SoundHelix-applet.jnlp

    - Added support for song name generation. Each XML file now requires a songNameEngine tag.

    - A song can now be recreated by specifying its song name.


0.0.3: 2010-11-11

    - Corrected small problems regarding random initialization.

    - Made run scripts play examples/SoundHelix-Piano.xml if no parameters are given.

    - Updated example.


0.0.2: 2010-11-07

    - Added possibility to specify more than one MIDI device name for the MIDI player; SoundHelix will take the first
      one available on your system.
      
    - Updated example.


0.0.1: 2010-11-02

    - Initial release

[See repo JSON]