A mirror of SoundHelix, the software MadHelix is based on.
Clone
HTTPS:
git clone https://vervis.peers.community/repos/zoKmE
SSH:
git clone USERNAME@vervis.peers.community:zoKmE
Branches
Tags
- soundhelix-0.0.2
- soundhelix-0.0.3
- soundhelix-0.0.4
- soundhelix-0.0.5
- soundhelix-0.1
- soundhelix-0.2
- soundhelix-0.3
- soundhelix-0.4
- soundhelix-0.5
- soundhelix-0.6
- soundhelix-0.7
- soundhelix-0.8
- soundhelix-0.9
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