Do I understand this correctly: in a keygroup program, it is not possible to utilize LOOP TUNE to fine-tune the loop-portion of the sample? I can even get pad loop x-fade working (for which there doesn't appear to be a user interface) by manually editing the XPM file, but how to tune the pad loop? Loop length alone is not accurate enough to tune a sustain loop.
At 44100 Hz, a loop of 100 samples produces a fundamental frequency of 441 Hz, and a loop of 101 samples gives 436.6 Hz. Loop lengths are integers, a loop cannot be 100.23 samples long. To get closer to the desired fundamental frequency, the only way that I can see, if loop tuning doesn't work, is to use a longer loop with multiple fundamental wave cycles in it. For example in Kontakt you can tune the loop independently of the rest of the sample. And Akai has clearly at least considered this, because there seem to be some partial facilities for loop finetuning, I just can't get them to work. My current best-working idea is to use a longer pad loop (SliceLoop) with an x-fade.
I was able to get PAD LOOP X-FADE to work, so maybe there's some way to get pad loop tuning to work as well, by manually editing something in the XPM file. I'm interested in this, because I made a nicely working program which automatically finds good sustain loops from WAVs, and I want to use it to auto-loop keygroup programs. So I'm now looking at what would be a good way to get the loops accurately tuned.
Some investigation: -------------------------
There are parameters for both of these saved in a Keygroup XPM file. The "SliceLoop" attributes are shown as "PAD LOOP" in the user interface. But in addition to those there are "LoopStart", "LoopEnd", "LoopCrossfadeLength" and "LoopTune". For example
Code: Select all <Layer number="4">
<Active>True</Active>
<Volume>1.000000</Volume>
<Pan>0.500000</Pan>
<Pitch>0.000000</Pitch>
<TuneCoarse>0</TuneCoarse>
<TuneFine>0</TuneFine>
<VelStart>0</VelStart>
<VelEnd>127</VelEnd>
<SampleStart>0</SampleStart>
<SampleEnd>0</SampleEnd>
<LoopStart>0</LoopStart> <---- HERE
<LoopEnd>0</LoopEnd> <---- HERE
<LoopCrossfadeLength>0</LoopCrossfadeLength> <---- HERE
<LoopTune>0</LoopTune> <---- HERE
<RootNote>0</RootNote>
<KeyTrack>False</KeyTrack>
<SampleName></SampleName>
<PitchRandom>0.000000</PitchRandom>
<VolumeRandom>0.000000</VolumeRandom>
<PanRandom>0.000000</PanRandom>
<OffsetRandom>0.000000</OffsetRandom>
<SampleFile></SampleFile>
<SliceIndex>129</SliceIndex>
<Direction>0</Direction>
<Offset>0</Offset>
<SliceStart>0</SliceStart>
<SliceEnd>0</SliceEnd>
<SliceLoopStart>0</SliceLoopStart>
<SliceLoop>0</SliceLoop> <-------------- "PAD LOOP"
<SliceLoopCrossFadeLength>-1</SliceLoopCrossFadeLength>
<SliceTailPosition>0.500000</SliceTailPosition>
<SliceTailLength>0.000000</SliceTailLength>
</Layer>
As you can see, for every sample in a keygroup, there is SAMPLE loop, cross-fade and Loop Tune, and SLICE loop and crossfade. But there is no SLICE LOOP TUNE. Which is a bummer. And like I said, the SliceLoopCrossFadeLength parameter does work, even though it's not shown in the user interface. Or maybe I couldn't find where it is.
I tested that the Force loads AND SAVES BACK the Loop attributes from and to an XPM file, but it doesn't seem to actually DO anything with the information.
The information that's set in the Sample Editor, is saved to an "atem" RIFF meta chunk in the actual WAV files. It's a pun, "atem" is "meta" backwards. The data in an "atem" chunk seems to be nice and indented JSON text, like so
Code: Select all --- MooG Bass21-052 E2 046.WAV ---
WAVE
|_fmt
|_atem
atemú{
"version": 1,
"value0": {
"defaultSlice": {
"Start": 15848,
"End": 17480,
"LoopStart": 15848,
"LoopMode": 1,
"PulsePosition": 0,
"LoopCrossfadeLength": 372,
"LoopCrossfadeType": 0,
"TailLength": 0.0,
"TailLoopPosition": 0.5
},
"numBars": 2,
"Num slices": 0
},
"value1": {
"version": 1,
"note": "E",
"scale": "Major"
}
}
|_smpl
|_meta
|_data
(I wonder what "PulsePosition" does)
But the corresponding info in the XPM is empty. (and even if I manually write something in there, it doesn't seem to affect playback)
Code: Select all <Layer number="1">
<Active>True</Active>
<Volume>1.000000</Volume>
<Pan>0.500000</Pan>
<Pitch>0.000000</Pitch>
<TuneCoarse>0</TuneCoarse>
<TuneFine>0</TuneFine>
<VelStart>0</VelStart>
<VelEnd>46</VelEnd>
<SampleStart>0</SampleStart>
<SampleEnd>0</SampleEnd>
<LoopStart>0</LoopStart>
<LoopEnd>0</LoopEnd>
<LoopCrossfadeLength>0</LoopCrossfadeLength>
<LoopTune>0</LoopTune>
<RootNote>53</RootNote>
<KeyTrack>False</KeyTrack>
<SampleName>MooG Bass21-052 E2 046</SampleName>
<PitchRandom>0.000000</PitchRandom>
<VolumeRandom>0.000000</VolumeRandom>
<PanRandom>0.000000</PanRandom>
<OffsetRandom>0.000000</OffsetRandom>
<SampleFile></SampleFile>
<SliceIndex>129</SliceIndex>
<Direction>0</Direction>
<Offset>0</Offset>
<SliceStart>2003</SliceStart>
<SliceEnd>176399</SliceEnd>
<SliceLoopStart>2003</SliceLoopStart>
<SliceLoop>0</SliceLoop>
<SliceLoopCrossFadeLength>0</SliceLoopCrossFadeLength>
<SliceTailPosition>0.500000</SliceTailPosition>
<SliceTailLength>0.000000</SliceTailLength>
</Layer>