What filetypes and channel sizes are supported?
-
Really struggling to find this info on the site and docs and forum. I do see reference to people using flac a little bit, but when I put one in Sampler it isn’t playing back (but it’s waveform does appear), and multichannel flac crashes HISE
Multichannel wav crash HISE when you select the file, WavPack refuses to appear in the list of files.
This page has me especially confused that I might be missing something:
http://hise.audio/blog/posts/handling-multi-channel-samples
"Allow a flexible routing. Effects must be applicable to either individual channels or the (stereo) mix of all positions. Also surround samples should be possible.”I’d really love to avoid going to Wav because I’m using the multichannel feature and there is lots of dead 0 space after many of the samples but the feature requires the same sample length. This will bloat my files hugely if I have to go to Wav.
Thanks for any light shed on this
-
Mono or stereo wav files - I think aiff work too.
HISE's lossless compression is based on flac so no need to compress the samples before loading them.
HISE's system for handling multi-mic samples is you load in each channel as a separate wav (stereo or mono) then within HISE you can merge them in a pseudo multi-channel sample. From then on within HISE you interact with the pseudo sample while retaining the ability to route the individual channels.
I show that at the start of this video:
https://youtu.be/sV9aMTphmDE?si=zoTut4vovZ0LrTe8 -
@Fergler - and make sure before you start to load audio that the samples a(.wav files) are in the Samples folder in your project.
-
Ok, thanks. I will go to wav and try hr1 out
Btw, is there a way to get access to the tokenizing feature via scripting? I’m currently using
Synth.getSampler(group).loadSampleMapFromJSON(sampleMap);
from a json file generated based on the files right before this function is called. I suppose I need to put some mic token info into the JSON but I can’t find any relevant key/value pairs to use.
Thanks
-
@Fergler said in What filetypes and channel sizes are supported?:
hr1 out
.hr
is an archive format (like zip) it's not the compression format which is.ch
@Fergler said in What filetypes and channel sizes are supported?:
Btw, is there a way to get access to the tokenizing feature via scripting? I’m currently using
Synth.getSampler(group).loadSampleMapFromJSON(sampleMap);
from a json file generated based on the files right before this function is called. I suppose I need to put some mic token info into the JSON but I can’t find any relevant key/value pairs to use.
I'm not familiar with
loadSampleMapFromJSON()
What is it that you are wanting to do? -
It’s achieved; I’m loading samples based on their tokens and creating a module structure. Right now I’m only loading one mic (OH_M) and there are 6 other mic positions to load later with multimic. I should probably investigate doing it manually and exporting the sample map to see how it is represented there, if it is.
const var dataObj = Engine.loadFromJSON("../ArticulationData.json"); include("UI.js"); function createModule(type, name, parent) { if (type.toLowerCase() == "sampler") { var type = builder.SoundGenerators.StreamingSampler; } else { var type = builder.SoundGenerators.SynthChain; } var module = builder.create(type, name, parent, builder.ChainIndexes.Direct); return module; } function createSampleObj(fName, note1, note2, loVel, hiVel, RRGroup /*(j+1)*/ , Duplicate /*0*/ ) { var obj = { FileName: fName, Root: note1, LoKey: note1, HiKey: note1, LoVel: loVel, HiVel: hiVel, RRGroup: RRGroup, Duplicate: Duplicate }; return obj } var builder = Synth.createBuilder(); builder.clear(); var sampleMap = []; var stopper = 0; for (group in dataObj) { stopper++; var groupSampler = createModule("Sampler", group, 0); include("SetSamplerAttributes.js"); sampleMap = []; for (hit in dataObj[group]) { var rrGroups = dataObj[group][hit].RRGroups; var rrSize = dataObj[group][hit].RRSize; var Layers = dataObj[group][hit].Layers; var note1 = dataObj[group][hit].Note1; var note2 = dataObj[group][hit].Note2; var count = 0; for (i = 0; i < rrGroups; i++) { // for each rrGroup for (j = 0; j < rrSize && count < Layers; j++) { count++; include("SampleSortConsolePrint.js"); var fName = "{PROJECT_FOLDER}" + group + "-" + hit + "-OH_M-" + count + ".wav"; include("VelocityMath.js"); var obj = createSampleObj(fName, note1, note2, loVel, hiVel, (j+1), 0); sampleMap.push(obj); if (count == Layers) { // only saves complete sample sets until overflow logic is complete //Console.print("test"); Engine.dumpAsJSON(sampleMap, group + ".json"); } } Synth.getSampler(group).loadSampleMapFromJSON(sampleMap); } } if (stopper > 4) break // Let's take it slow } builder.flush();
Working good!