HISE Logo Forum
    • Categories
    • Register
    • Login

    What filetypes and channel sizes are supported?

    Scheduled Pinned Locked Moved General Questions
    6 Posts 3 Posters 376 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      Fergler
      last edited by Fergler

      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

      LindonL 1 Reply Last reply Reply Quote 0
      • d.healeyD
        d.healey
        last edited by d.healey

        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

        Libre Wave - Freedom respecting instruments and effects
        My Patreon - HISE tutorials
        YouTube Channel - Public HISE tutorials

        F 1 Reply Last reply Reply Quote 0
        • LindonL
          Lindon @Fergler
          last edited by

          @Fergler - and make sure before you start to load audio that the samples a(.wav files) are in the Samples folder in your project.

          HISE Development for hire.
          www.channelrobot.com

          1 Reply Last reply Reply Quote 0
          • F
            Fergler @d.healey
            last edited by

            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

            d.healeyD 1 Reply Last reply Reply Quote 0
            • d.healeyD
              d.healey @Fergler
              last edited by

              @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?

              Libre Wave - Freedom respecting instruments and effects
              My Patreon - HISE tutorials
              YouTube Channel - Public HISE tutorials

              F 1 Reply Last reply Reply Quote 0
              • F
                Fergler @d.healey
                last edited by Fergler

                @d-healey

                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!

                1 Reply Last reply Reply Quote 1
                • First post
                  Last post

                18

                Online

                1.7k

                Users

                11.8k

                Topics

                102.5k

                Posts