@Lindon you can always lookup the chain index by inspecting the XML:
<Processor Type="StreamingSampler" ID="Sampler" Bypassed="0" Gain="1.0"
Balance="0.0" VoiceLimit="256.0" KillFadeTime="20.0" IconColour="0"
PreloadSize="8192.0" BufferSize="4096.0" VoiceAmount="256.0"
SamplerRepeatMode="3.0" RRGroupAmount="1.0" PitchTracking="1.0"
OneShot="0.0" CrossfadeGroups="0.0" Purged="0.0" Reversed="0.0"
NumChannels="1" UseStaticMatrix="0.0" LowPassEnvelopeOrder="0.0"
Group0Table="" Group1Table="" Group2Table="" Group3Table="" Group4Table=""
Group5Table="" Group6Table="" Group7Table="" SampleMapID="">
<EditorStates BodyShown="1" Visible="1" Solo="0" MapPanelShown="1" BigSampleMap="1"
GainModulationShown="1"/>
<ChildProcessors>
<Processor Type="MidiProcessorChain" ID="Midi Processor" Bypassed="0">
<EditorStates BodyShown="1" Visible="0" Solo="0"/>
<ChildProcessors/>
</Processor>
<Processor Type="ModulatorChain" ID="GainModulation" Bypassed="0" Intensity="1.0">
<EditorStates BodyShown="1" Visible="0" Solo="0"/>
<ChildProcessors>
<Processor Type="SimpleEnvelope" ID="DefaultEnvelope" Bypassed="0" Monophonic="0.0"
Retrigger="1.0" Intensity="1.0" Attack="5.0" Release="10.0" LinearMode="1.0">
<EditorStates BodyShown="1" Visible="1" Solo="0"/>
<ChildProcessors>
<Processor Type="ModulatorChain" ID="Attack Time Modulation" Bypassed="0"
Intensity="1.0">
<EditorStates BodyShown="1" Visible="0" Solo="0"/>
<ChildProcessors/>
</Processor>
</ChildProcessors>
</Processor>
</ChildProcessors>
</Processor>
<Processor Type="ModulatorChain" ID="PitchModulation" Bypassed="0" Intensity="0.0">
<EditorStates BodyShown="1" Visible="0" Solo="0"/>
<ChildProcessors/>
</Processor>
<Processor Type="EffectChain" ID="FX" Bypassed="0">
<EditorStates BodyShown="1" Visible="0" Solo="0"/>
<ChildProcessors/>
</Processor>
<Processor Type="ModulatorChain" ID="Sample Start" Bypassed="0" Intensity="1.0">
<EditorStates BodyShown="1" Visible="0" Solo="0"/>
<ChildProcessors/>
</Processor>
<Processor Type="ModulatorChain" ID="Group Fade" Bypassed="0" Intensity="1.0">
<EditorStates BodyShown="1" Visible="0" Solo="0"/>
<ChildProcessors/>
</Processor>
</ChildProcessors>
<RoutingMatrix NumSourceChannels="2" Channel0="0" Send0="-1" Channel1="1" Send1="-1"/>
<channels>
<channelData enabled="1" level="0.0" suffix=""/>
</channels>
</Processor>
SampleStart => 4th child processor => 4.
const var b = Synth.createBuilder();
const var sampler = b.create(b.SoundGenerators.StreamingSampler, "Sampler", 0, -1);
const var SAMPLE_START_MOD_INDEX = 4;
b.create(b.Modulators.Velocity, "VeloSampleStart", sampler, SAMPLE_START_MOD_INDEX);
b.flush();
Im begingng to think this Builder stuff is a bit pointless - if its not all there then its not saving anything in the end.
I would say 99% of the functionality is there - I'm building the full Triaz module tree with the builder including hardcoded FX modules, loading custom script processors, etc. It's just that the current docs are a bit sparse and you need to know secret tricks like this one but that is solved with the glory of the new upcoming docs.