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
:: examples
/
SoundHelix-Piano.xml
<?xml version="1.0"?>
<SoundHelix version="0.2+" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="../includes/Standard-SongNameEngine.xml"/>
<structure>
<bars><random min="96" max="192" step="16"/></bars>
<beatsPerBar>4</beatsPerBar>
<ticksPerBeat>4</ticksPerBeat>
</structure>
<xi:include href="../includes/Standard-HarmonyEngine.xml"/>
<arrangementEngine class="SimpleArrangementEngine">
<maxIterations>1000000</maxIterations>
<minActivityCount>3</minActivityCount>
<maxActivityCount>8</maxActivityCount>
<maxActivityChangeCount>2</maxActivityChangeCount>
<startActivityCounts><random list="1,2,3,4|1,2,3,4,5"/></startActivityCounts>
<stopActivityCounts><random list="2,1|3,2|4,3,2"/></stopActivityCounts>
<activityVector name="accomp">
<stopShift>-2</stopShift>
<minActive>10</minActive>
</activityVector>
<activityVector name="arpeggio">
<minActive>15</minActive>
<maxActive>65</maxActive>
</activityVector>
<activityVector name="melody">
<startAfterSection>3</startAfterSection>
<stopBeforeSection>1</stopBeforeSection>
<stopShift>-3</stopShift>
<minActive>10</minActive>
<maxActive>35</maxActive>
<maxSegmentCount>3</maxSegmentCount>
<minSegmentLength>2</minSegmentLength>
<maxSegmentLength>4</maxSegmentLength>
</activityVector>
<activityVector name="base_and_snare">
<startAfterSection>1</startAfterSection>
<startBeforeSection>4</startBeforeSection>
<stopBeforeSection>0</stopBeforeSection>
<stopAfterSection>3</stopAfterSection>
<minActive>50</minActive>
<maxActive>85</maxActive>
<minSegmentCount>2</minSegmentCount>
<maxSegmentCount>4</maxSegmentCount>
</activityVector>
<activityVector name="hihat">
<startAfterSection>0</startAfterSection>
<stopBeforeSection>0</stopBeforeSection>
<minActive>40</minActive>
<maxActive>85</maxActive>
</activityVector>
<activityVector name="pad">
<minActive>10</minActive>
<maxActive>70</maxActive>
</activityVector>
<activityVector name="bass">
<startAfterSection>0</startAfterSection>
<minActive>15</minActive>
<maxActive>80</maxActive>
</activityVector>
<activityVector name="randombass">
<startAfterSection>1</startAfterSection>
<stopBeforeSection>0</stopBeforeSection>
<minActive>15</minActive>
<maxActive>80</maxActive>
</activityVector>
<activityVector name="plonk"/>
<activityVector name="chord"/>
<track>
<instrument>arpeggio</instrument>
<transposition>-12</transposition>
<sequenceEngine class="ArpeggioSequenceEngine">
<obeyChordSubtype>true</obeyChordSubtype>
<obeyChordSections>true</obeyChordSections>
<patternEngines>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,1:26000</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,3:26000,4:26000,3:26000,2:26000,1:26000</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,3:26000,4:26000,5:26000,6:26000,7:26000,8:26000,7:26000,6:26000,5:26000,4:26000,3:26000,2:26000,1:26000</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,3:26000,4:26000,5:26000,6:26000,7:26000,8:26000,7:26000,6:26000,5:26000,4:26000,3:26000,2:26000,1:26000,0:26000,1:26000,2:26000,3:26000,4:26000,3:26000,2:26000,1:26000</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,3:26000,4:26000,5:26000,6:26000,7:26000,8:26000,7:26000,6:26000,5:26000,4:26000,3:26000,2:26000,1:26000,0:26000,1:26000,2:26000,3:26000,4:26000,5:26000,6:26000,5:26000,4:26000,3:26000,2:26000,1:26000</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,3:26000,4:26000,5:26000,6:26000,7:26000,8:26000,7:26000,6:26000,5:26000,4:26000,3:26000,2:26000,1:26000,0:26000,1:26000,2:26000,3:26000,4:26000,5:26000,6:26000,7:26000,8:26000,7:26000,6:26000,5:26000,4:26000,3:26000,2:26000,1:26000</string>
</patternEngine>
</patternEngines>
<patternEngines>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,1:26000</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,1:26000,2:26000,3:26000,2:26000,1:26000</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,1:26000,2:26000,3:26000,2:26000,3:26000,4:26000,3:26000,4:26000,5:26000,4:26000,3:26000,2:26000,1:26000</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,1:26000,2:26000,3:26000,2:26000,3:26000,4:26000,3:26000,4:26000,5:26000,4:26000,5:26000,6:26000,5:26000,6:26000,7:26000,6:26000,5:26000,4:26000,3:26000,2:26000,1:26000</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,1:26000,2:26000,3:26000,2:26000,3:26000,4:26000,3:26000,4:26000,5:26000,4:26000,5:26000,6:26000,5:26000,6:26000,7:26000,6:26000,7:26000,8:26000,7:26000,6:26000,5:26000,4:26000,3:26000,2:26000,1:26000</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,1:26000,2:26000,3:26000,2:26000,3:26000,4:26000,3:26000,4:26000,5:26000,4:26000,5:26000,6:26000,5:26000,6:26000,7:26000,6:26000,7:26000,8:26000,7:26000,8:26000,9:26000,8:26000,7:26000,6:26000,5:26000,4:26000,3:26000,2:26000,1:26000</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0:26000,1:26000,2:26000,1:26000,2:26000,3:26000,2:26000,3:26000,4:26000,3:26000,4:26000,5:26000,4:26000,5:26000,6:26000,5:26000,6:26000,7:26000,6:26000,7:26000,8:26000,7:26000,8:26000,9:26000,8:26000,7:26000,6:26000,5:26000,4:26000,3:26000,2:26000,1:26000,0:26000,1:26000,2:26000,1:26000,2:26000,3:26000,2:26000,3:26000,4:26000,3:26000,4:26000,5:26000,4:26000,3:26000,2:26000,1:26000</string>
</patternEngine>
</patternEngines>
</sequenceEngine>
<activityVector>arpeggio</activityVector>
</track>
<!-- <track>
<instrument>arpeggio</instrument>
<transposition>-12</transposition>
<sequenceEngine class="MultiPatternSequenceEngine">
<obeyChordSubtype>true</obeyChordSubtype>
<patternEngines>
<patternEngine class="StringPatternEngine">
<string>-/6,4/2</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>-/4,3/4</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>-/2,2/6</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0/8</string>
</patternEngine>
</patternEngines>
<patternEngines>
<patternEngine class="StringPatternEngine">
<string>2/8</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>-/2,0/6</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>-/4,1/4</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>-/6,0/2</string>
</patternEngine>
</patternEngines>
<patternEngines>
<patternEngine class="StringPatternEngine">
<string>3/8</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>-/2,1/6</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>-/4,2/4</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>-/6,0/2</string>
</patternEngine>
</patternEngines>
</sequenceEngine>
<activityVector>arpeggio</activityVector>
</track> -->
<track>
<instrument>accomp</instrument>
<transposition>-24</transposition>
<sequenceEngine class="MultiPatternSequenceEngine">
<patternEngines>
<patternEngine class="StringPatternEngine">
<string>-,-,-,-,5,-,-,-,-,-,-,-,5,-,-,-</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>-,-,-,-,4,-,-,-,-,-,-,-,4,-,-,-</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>-,-,-,-,3,-,-,-,-,-,-,-,3,-,-,-</string>
</patternEngine>
<patternEngine class="StringPatternEngine">
<string>0,-,-,0,-,-,0,-,-,-,0,-,-,-,-,-,0,-,-,0,-,-,0,-,-,-,0,-,-,-,-,-,0,-,-,0,-,-,0,-,-,-,0,-,-,-,-,-,0,-,-,0,-,-,0,-,-,-,0,-,-,-,+,-,0,-,-,0,-,-,0,-,-,-,0,-,-,-,-,-,0,-,-,0,-,-,0,-,-,-,0,-,-,-,-,-,0,-,-,0,-,-,0,-,-,-,0,-,-,-,-,-,0,-,-,0,-,-,0,-,-,-,0,-,-,-,-1,+</string>
</patternEngine>
</patternEngines>
</sequenceEngine>
<activityVector>accomp</activityVector>
</track>
<!-- <track>
<instrument>chord</instrument>
<sequenceEngine class="ChordSequenceEngine">
<patternEngine class="StringPatternEngine">
<string>-,-,0,-</string>
</patternEngine>
</sequenceEngine>
<activityVector>chord</activityVector>
</track> -->
<track>
<instrument>melody</instrument>
<transposition>12</transposition>
<sequenceEngine class="MelodySequenceEngine">
<patternEngine class="RandomPatternEngine">
<patternTicks>16</patternTicks>
<patternString><random list="A1,A2,A1,A3,A1,A2,A1,B1"/></patternString>
<noteProbability>75</noteProbability>
<legatoProbability>0</legatoProbability>
<minVelocity>32767</minVelocity>
<maxVelocity>32767</maxVelocity>
<minActiveTicks>7</minActiveTicks>
<maxActiveTicks>13</maxActiveTicks>
<offsets>0,0,0,0,0,0,+,+</offsets>
<noteLengths>2,2,2,3,2,2,2,1,2</noteLengths>
<pauseLengths>2,2,2,2,1,2</pauseLengths>
<pitchVelocityCorrelation>100</pitchVelocityCorrelation>
<velocityExponent>3</velocityExponent>
</patternEngine>
</sequenceEngine>
<activityVector>melody</activityVector>
</track>
<track>
<instrument>percussion</instrument>
<sequenceEngine class="DrumSequenceEngine">
<pattern>
<pitch>36</pitch>
<patternEngine class="RandomFragmentPatternEngine">
<patternTicks>16</patternTicks>
<patternString>A1,B1,A1,B2,A1,B1,A1,B3</patternString>
<pattern group="A">0,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-</pattern>
<pattern group="B">0,-,-,0,-,-,-,-,0,-,-,-,-,-,-,-|0,-,-,-,-,-,-,-,0,-,-,-,-,-,0,-|0,-,-,-,-,-,-,-,0,-,-,-,-,-,-,0|0,-,-,-,-,-,-,-,0,-,-,-,-,-,0,0</pattern>
</patternEngine>
</pattern>
<pattern>
<pitch>38</pitch>
<patternEngine class="RandomFragmentPatternEngine">
<patternTicks>8</patternTicks>
<patternString>A1,A1,A1,B1,A1,A1,A1,C1,A1,A1,A1,B1,A1,A1,A1,C2</patternString>
<pattern group="A">-,-,-,-,0,-,-,-</pattern>
<pattern group="B">-,-,-,-,0,-,-,-|-,-,-,-,0,-,-,0</pattern>
<pattern group="C">-,-,-,-,0,-,-,0|-,-,-,0,0,-,0,-|-,-,-,0,0,0,-,0|-,-,-,0,0,0,0,-</pattern>
</patternEngine>
</pattern>
<pattern>
<pitch>42</pitch>
<patternEngine class="RandomFragmentPatternEngine">
<patternTicks>4</patternTicks>
<patternString>A1,A2,A1,A3,A1,A2,A1,A4</patternString>
<pattern group="A">0:26000,0:26000,0:26000,0:26000|0:26000,0:26000,-,0:26000|0:26000,-,-,-|0:26000,-,0:26000,-|0:26000,0:26000,0:26000,-</pattern>
</patternEngine>
</pattern>
<pattern>
<pitch>46</pitch>
<patternEngine class="RandomFragmentPatternEngine">
<patternTicks>8</patternTicks>
<patternString>A1,B1,A1,B2,A1,B1,A1,B3</patternString>
<pattern group="A">-,-,0:20000,-,-,-,0:20000,-</pattern>
<pattern group="B">-,-,0:20000,-,-,-,0:20000,-|-,-,0:20000,-,-,-,-,0:20000|-,-,0:20000,-,-,0:20000,-,0:20000</pattern>
</patternEngine>
</pattern>
<conditionalPattern>
<target>1</target>
<condition>0--->1---</condition>
<mode>replace</mode>
<probability>40</probability>
<patternEngine class="StringPatternEngine">
<string><random list="0:6,0:32,0:89,0:182,0:317,0:499,0:734,0:1024,0:1375,0:1789,0:2271,0:2822,0:3447,0:4149,0:4930,0:5793,0:6741,0:7776,0:8901,0:10119,0:11432,0:12842,0:14351,0:15962,0:17677,0:19498,0:21427,0:23467,0:25618,0:27884,0:30266,0:32767|0:1,0:6,0:16,0:32,0:56,0:89,0:130,0:182,0:243,0:317,0:402,0:499,0:610,0:734,0:872,0:1024,0:1192,0:1375,0:1574,0:1789,0:2021,0:2271,0:2537,0:2822,0:3125,0:3447,0:3788,0:4149,0:4529,0:4930,0:5351,0:5793,0:6256,0:6741,0:7247,0:7776,0:8327,0:8901,0:9499,0:10119,0:10763,0:11432,0:12124,0:12842,0:13584,0:14351,0:15144,0:15962,0:16806,0:17677,0:18574,0:19498,0:20449,0:21427,0:22433,0:23467,0:24528,0:25618,0:26737,0:27884,0:29061,0:30266,0:31502,0:32767"/></string>
</patternEngine>
</conditionalPattern>
<conditionalPattern>
<target>0</target>
<condition>1--->0---</condition>
<mode>add</mode>
<probability>40</probability>
<patternEngine class="StringPatternEngine">
<string><random list="0,0,0,0|0,0,0,0,0,0,0,0"/></string>
</patternEngine>
</conditionalPattern>
</sequenceEngine>
<activityVector>base_and_snare</activityVector>
<activityVector>base_and_snare</activityVector>
<activityVector>hihat</activityVector>
<activityVector>hihat</activityVector>
</track>
<track>
<instrument>pad</instrument>
<sequenceEngine class="PadSequenceEngine">
<offsets>0,1,2</offsets>
<velocity>12000</velocity>
</sequenceEngine>
<activityVector>pad</activityVector>
</track>
<track>
<transposition>-24</transposition>
<instrument>bass</instrument>
<sequenceEngine class="PatternSequenceEngine">
<patternEngine class="StringPatternEngine">
<string>0,-,-,-,0,-,-,0,-,-,0,-,-,-1,-,-,0,-,-,-,0,-,-,0,-,-,0,-,-,-,+,-,0,-,-,-,0,-,-,0,-,-,0,-,-,-1,-,-,0,-,-,-,0,-,-,0,-,0,-,-,0,-,+,-</string>
<string>0,-,-,0,-,-,0,2,0,-,-,0,-,-,-1,-,0,-,-,0,-,-,0,2,0,-,-,0,-,-,-1,-,0,-,-,0,-,-,0,2,0,-,-,0,-,-,-1,-,0,-,-,0,-,-,0,2,0,-,-,0,-,-,1,-</string>
<string>0,-,0,-,0,-,-,0,-,0,-,0,0,-,+,-</string>
<string>0,-,-,-,0,-,-,-,0,-,-,0,-,-,+,-,0,-,-,-,0,-,-,0,-,-,0,-,-,0,+,-,0,-,-,-,0,-,-,-,0,-,-,0,-,-,+,-,0,-,-,-,0,-,-,0,-,-,0,-,0,-,+,-</string>
<string>-,-,0,-,-,-,0,-,-,-,0,-,-,-,0,-,-,-,0,-,-,-,0,-,-,-,0,-,-,-,+,-</string>
<string>0,-,-,-,0,-,-,-,0,-,-,0,-,-,0,-,0,-,-,-,0,-,-,-,0,-,-,2,-,-,+,-,0,-,-,-,0,-,-,-,0,-,-,0,-,-,0,-,0,-,-,-,0,-,-,-,0,-,-,0,-,-,+,-</string>
<string>0,-,-,3,-,-,0,-,1,-,-,0,-,-,3,-,0,-,-,3,-,-,0,-,1,-,-,0,-,2,1,-</string>
</patternEngine>
</sequenceEngine>
<activityVector>bass</activityVector>
</track>
<track>
<transposition>-36</transposition>
<instrument>randombass</instrument>
<sequenceEngine class="PatternSequenceEngine">
<patternEngine class="RandomPatternEngine">
<patternTicks>16</patternTicks>
<patternString><random list="A1,A2,A1,A3|A1,A2,A1,A3,A1,A2,A1,A4"/></patternString>
<noteProbability>75</noteProbability>
<legatoProbability>0</legatoProbability>
<minVelocity>32767</minVelocity>
<maxVelocity>32767</maxVelocity>
<minActiveTicks>8</minActiveTicks>
<maxActiveTicks>15</maxActiveTicks>
<offsets>0,0,0,2,3,0,0,0</offsets>
<noteLengths>1,2,3,2</noteLengths>
<pauseLengths>1,2</pauseLengths>
<pitchVelocityCorrelation>100</pitchVelocityCorrelation>
<velocityExponent>3</velocityExponent>
</patternEngine>
</sequenceEngine>
<activityVector>randombass</activityVector>
</track>
<!-- <track>
<transposition>0</transposition>
<instrument>plonk</instrument>
<sequenceEngine class="PatternSequenceEngine">
<patternEngine class="RandomPatternEngine">
<patternTicks>8</patternTicks>
<patternString><random list="A1,A2,A1,A3|A1,A2,A1,A3,A1,A2,A1,A4"/></patternString>
<noteProbability>90</noteProbability>
<legatoProbability>0</legatoProbability>
<minVelocity>28000</minVelocity>
<maxVelocity>28000</maxVelocity>
<minActiveTicks>6</minActiveTicks>
<maxActiveTicks>8</maxActiveTicks>
<offsets>0,1,2,3,4,5</offsets>
<noteLengths>1</noteLengths>
<pauseLengths>1</pauseLengths>
<pitchVelocityCorrelation>100</pitchVelocityCorrelation>
<velocityExponent>3</velocityExponent>
</patternEngine>
</sequenceEngine>
<activityVector>plonk</activityVector>
</track> -->
</arrangementEngine>
<player class="MidiPlayer">
<bpm><random min="120" max="140" type="normal" variance="7"/></bpm>
<transposition><random min="64" max="68"/></transposition>
<beforePlayWaitTicks>0</beforePlayWaitTicks>
<afterPlayWaitTicks>16</afterPlayWaitTicks>
<groove><random list="100|110,90|115,85|125,75,115,85"/></groove>
<device name="device1" clockSynchronization="true">Microsoft GS Wavetable Synth,Microsoft GS Wavetable SW Synth,Java Sound Synthesizer,Gervill</device>
<map instrument="arpeggio" device="device1" channel="1" program="1"/>
<map instrument="accomp" device="device1" channel="2" program="1"/>
<map instrument="melody" device="device1" channel="3" program="2"/>
<map instrument="pad" device="device1" channel="4" program="92"/>
<map instrument="bass" device="device1" channel="5" program="40"/>
<map instrument="randombass" device="device1" channel="6" program="40"/>
<!-- <map instrument="plonk" device="device1" channel="7" program="1"/> -->
<map instrument="percussion" device="device1" channel="10"/>
<!-- <map instrument="chord" device="device2" channel="1" program="1"/> -->
<!-- <controllerLFO>
<lfo class="TriangleLFO"/>
<rotationUnit>beat</rotationUnit>
<speed>0.1</speed>
<minimum>0</minimum>
<maximum>16383</maximum>
<controller>pitchBend</controller>
<channel>1</channel>
<device>device1</device>
</controllerLFO> -->
<!-- <controllerLFO>
<lfo class="SineLFO"/>
<rotationUnit>beat</rotationUnit>
<speed>0.02</speed>
<minimum>100000</minimum>
<maximum>150000</maximum>
<controller>milliBPM</controller>
</controllerLFO> -->
</player>
</SoundHelix>