HISE Logo Forum
    • Categories
    • Register
    • Login

    Few questions from a newbie

    Scheduled Pinned Locked Moved Solved Newbie League
    drums samplerprogrammingroutingdesignervirtual drums
    39 Posts 4 Posters 2.5k 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.
    • griffinboyG
      griffinboy @ScreamingWaves
      last edited by

      @ScreamingWaves

      If you want to get it done on a tight deadline, simplify the scope.
      Probably don't do the multi output routing at first.
      Prototype each part of the project separately so that you can learn how each bit works, then create your actual project.

      S 1 Reply Last reply Reply Quote 1
      • S
        ScreamingWaves @griffinboy
        last edited by ScreamingWaves

        @griffinboy yeah i'll firstly try to import only one sample for each drum part, while trying to learn the basics of scripting, and hopefully i'll be able to grasp it fast enough.

        But just out of curiosity, how long would an expert take to develop something like that?
        15 channels, hundreds of sample each. To load and route them on the TX16Wx Sampler it took me 4-6 hours. But what about doing that on HISE and make a new plugin out of it? That's the part of the task that yet i can't comprehend.

        I know I'm pretty ambitious 🤓

        d.healeyD griffinboyG It_UsedI 3 Replies Last reply Reply Quote 0
        • d.healeyD
          d.healey @ScreamingWaves
          last edited by d.healey

          @ScreamingWaves said in Few questions from a newbie:

          15 channels, hundreds of sample each.

          If the samples are named correctly, it should be a few clicks. But it depends on exactly how you want them to be mapped.

          Free HISE Bootcamp Full Course for beginners.
          YouTube Channel - Public HISE tutorials
          My Patreon - HISE tutorials

          S 1 Reply Last reply Reply Quote 1
          • griffinboyG
            griffinboy @ScreamingWaves
            last edited by

            @ScreamingWaves

            Adding to David's answer,
            no time at all to import samples, if your samples are named properly (already organised) or have metadata etc.

            If you need to organise all the samples etc, then it will take quite a while longer.

            You should be able to find youtube videos (David Healy likely has multiple) about using the stock hise sampler and how sample import works.

            1 Reply Last reply Reply Quote 0
            • It_UsedI
              It_Used @ScreamingWaves
              last edited by It_Used

              @ScreamingWaves said in Few questions from a newbie:

              Но просто из любопытства: сколько времени потребуется эксперту, чтобы разработать что-то подобное?
              15 каналов, по сотне сэмплов в каждом. Чтобы загрузить и скомпоновать их на семплере TX16Wx, мне потребовалось 4-6 часов. А как насчёт того, чтобы сделать то же самое на HISE и сделать из этого новый плагин? Вот эту часть задачи я пока не могу понять.

              Advice (Soft):
              Channels split - Adobe Audition/Cockos Reaper. (10-30 min) (i have script for creating sampling template into reaper project).
              Auto mapping by sfz - sfz tools, or Manually write sfz with NotePad++, (1-3 h). Or Use Hise sample mapper (5-10 min). as I understand it, the idea is to create a vst based on Hise anyway, so the skills of using the built-in sample mapper will not be superfluous.
              And, the amount of time I wrote about can be spent even by a novice, the main thing is to get past the feeling when software new for you, and then the process will be more or less focused on specific actions to get a specific result, and when this feeling of novelty appears, then you spread through all functions trying to find the one you need. This is where most of the time is spent.

              1 Reply Last reply Reply Quote 1
              • S
                ScreamingWaves @d.healey
                last edited by

                @d-healey Kick in, Out. and Subkick, Snare Top, Bot, Tom, Floor, Dick Mic, HiHat, Crash L & R, Ride, OHs and Room and (Stereo), these are all the mics used, each of them should have their own output. When i program a snare hit, snare t&b will be triggered along with room and OH (same with kick, tom etc), but routed to different channels. An example of file name is "01 SNR_Snare T", "01 SNR_Snare B" or "01 SNR_OH" or "01 SNR_Room". "01" is the velocity (lowest), "SNR" should indicate the key, "OH" and "Snare T" is the mic and should indicate the output. The only problem maybe is that i have 80 velocities for the snare (close mic, room and OH), but 30 for the toms, so 01 should not mean only Vel 1, but rather from 1 to 3 for example, depending on the range it needs till all the sample occupy every velocity. I imported samples 01, 02 03 and 04 to try it out, the first three were put on velocity 1, 2 and 3, but the 04 from 4 to 127. With the other sampler i dragged those 4 and it automatically mapped them "equally": 01 from 1 to 33, 02 from 34 till 66, 03 from 34 till 99, 04 from 100 till 127. Is there such option on HISE? I haven't found it yet.

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

                  @ScreamingWaves I'd take the time to improve the file naming, that way the auto-mapping will be super quick. I'd also put each drum type in a separate sampler.

                  Example file name structure: drumType_micPosition_lowVelocity_highVelocity.wav

                  Or if you want HISE to automatically calculate the low/high velocity for you, just put a single value for the velocity level starting at 1.

                  For example: snare_mic1_vel1.wav, snare_mic1_vel2.wav, snare_mic1_vel3.wav

                  But at this stage I wouldn't even think about mic positions. Just play around with two different drum types in two different samplers for now, with a few velocities and 1 mic.

                  Free HISE Bootcamp Full Course for beginners.
                  YouTube Channel - Public HISE tutorials
                  My Patreon - HISE tutorials

                  S 1 Reply Last reply Reply Quote 1
                  • S
                    ScreamingWaves @d.healey
                    last edited by ScreamingWaves

                    @d-healey

                    I watched your multimic sampler tutorial and followed every step and i made the first scripts in the project, thank you so much!

                    then i added another sampler for the snare, i thought it would work just by adding the reference to the new sampler but it didn't. so i copied all the previous scripts changing the name of the sampler but now no purge button is responding. what did i do wrong?
                    KICK sampler has 3 channels, snare just 2

                    Content.makeFrontInterface(1200, 800);

                    //Get sampler
                    const var smpKickin = Synth.getChildSynth("smpKickin");

                    //Purge button
                    const var btnPurge = [];

                    for (i = 0; i < 3; i++)
                    {
                    btnPurge[i] = Content.getComponent("btnPurge" + i);
                    btnPurge[i].setControlCallback(purgeMicPosition);
                    }

                    inline function purgeMicPosition(component, value)
                    {
                    local idx = btnPurge.indexOf(component);

                    local micName = smpKickin.asSampler().getMicPositionName(idx);
                    
                    smpKickin.asSampler().purgeMicPosition(micName, value);
                    
                    local idx = btnPurge.indexOf(component);
                    

                    }

                    //Get sampler
                    const var smpSnare = Synth.getChildSynth("smpSnare");

                    for (i = 0; i < 2; i++)
                    {
                    btnPurge[i] = Content.getComponent("btnPurge" + i);
                    btnPurge[i].setControlCallback(purgeMicPosition);
                    }

                    inline function purgeMicPosition(component, value)
                    {
                    local idx = btnPurge.indexOf(component);

                    local micName = smpSnare.asSampler().getMicPositionName(idx);
                    
                    smpSnare.asSampler().purgeMicPosition(micName, value);
                    
                    local idx = btnPurge.indexOf(component);
                    
                    Console.print(idx);
                    

                    }

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

                      @ScreamingWaves Can you wrap all that code in code tags so it's easier to follow? This button bd6a81c2-ac09-4e9c-8b1e-b6dea89bf15d-image.png

                      Free HISE Bootcamp Full Course for beginners.
                      YouTube Channel - Public HISE tutorials
                      My Patreon - HISE tutorials

                      S 2 Replies Last reply Reply Quote 0
                      • S
                        ScreamingWaves @d.healey
                        last edited by

                        This post is deleted!
                        1 Reply Last reply Reply Quote 0
                        • S
                          ScreamingWaves @d.healey
                          last edited by

                          @d-healey 
                          Content.makeFrontInterface(1200, 800);
                          
                          //Get sampler
                          const var smpKickin = Synth.getChildSynth("smpKickin");
                          const var smpSnare = Synth.getChildSynth("smpSnare");
                          
                          
                          //Purge button
                          const var btnPurge = [];
                          
                          for (i = 0; i < 3; i++)
                          {
                          	btnPurge[i] = Content.getComponent("btnPurge" + i);
                          	btnPurge[i].setControlCallback(purgeMicPosition);
                          }
                          
                          
                          inline function purgeMicPosition(component, value)
                          {
                          	local idx = btnPurge.indexOf(component);
                          
                          	local micName = smpKickin.asSampler().getMicPositionName(idx);
                          	
                          	smpKickin.asSampler().purgeMicPosition(micName, value);
                          
                          	local idx = btnPurge.indexOf(component);
                          
                          }
                          
                          for (i = 3; i < 2; i++)
                          {
                          	btnPurge[i] = Content.getComponent("btnPurge" + i);
                          	btnPurge[i].setControlCallback(purgeMicPosition);
                          }
                          
                          inline function purgeMicPosition(component, value)
                          {
                          	local idx = btnPurge.indexOf(component);
                          	
                          	local micName = smpSnare.asSampler().getMicPositionName(idx);
                          	
                          	smpSnare.asSampler().purgeMicPosition(micName, value);
                          	
                          	local idx = btnPurge.indexOf(component);
                          	
                          }
                          
                          d.healeyD 1 Reply Last reply Reply Quote 0
                          • d.healeyD
                            d.healey @ScreamingWaves
                            last edited by

                            @ScreamingWaves As always I would suggest starting simpler. A mic mixer is quite complicated and if you are trying to modify code to do something it wasn't designed to do, you really need to understand it well.

                            That said, here are some pointers to get you started. You can't have two functions or two variables with the same name in the same scope. Uniqueness is very important in programming.

                            For example you have two functions both called purgeMicPosition, and within them you have two variables called idx.

                            Check out my scripting 101 video, it will give you a quick overview of some of these kinds of things. Also in the HISE documentation there is a link to a Javascript beginner's course which will help.

                            Free HISE Bootcamp Full Course for beginners.
                            YouTube Channel - Public HISE tutorials
                            My Patreon - HISE tutorials

                            S 1 Reply Last reply Reply Quote 0
                            • S
                              ScreamingWaves @d.healey
                              last edited by

                              @d-healey

                              Hi! i watched your 101 scripting in hise video, some js tutorials and i finally understand something about scripting and so i was finally able to program all the purge buttons!

                              I added more gain, pan, saturation and compression knobs, peak meters and all is working fine so far!

                              now I'm wondering: is there a way to split the output channels of the plugin and use some as mono and some as stereo?

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

                                @ScreamingWaves Can you tell me more about what the goal is?

                                Free HISE Bootcamp Full Course for beginners.
                                YouTube Channel - Public HISE tutorials
                                My Patreon - HISE tutorials

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  ScreamingWaves @d.healey
                                  last edited by

                                  @d-healey

                                  if that's possible i'd like to send the kick, snare, tom, floor, wurst mic, hihat, ride and crashes to their own mono outputs and save the left over outputs lfor stereo room and OH, so when the end user will convert the virtual instrument to audio tracks they will have all the tracks separated.

                                  If that is not possible i can route the cymbals close mics to the overhead output to blend in, but the first option would be more flexible

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

                                    @ScreamingWaves All outputs from HISE are stereo pairs, so I don't think you can have true mono outputs. You'd need to use individual left and rights of a stereo out.

                                    The routing is pretty straight forward, didn't I demonstrate this in one of the mic mixer videos? - I haven't seen them in a while so can't recall.

                                    Free HISE Bootcamp Full Course for beginners.
                                    YouTube Channel - Public HISE tutorials
                                    My Patreon - HISE tutorials

                                    S 1 Reply Last reply Reply Quote 0
                                    • S
                                      ScreamingWaves @d.healey
                                      last edited by

                                      @d-healey

                                      yes the routing is easy. but it theres no way to use individual channels to then pan them mono, that's why i asked if maybe it was possible to split them with scripts. if not it's not a big deal.
                                      Thank you so much for your replies!

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

                                        @ScreamingWaves You can use simple gain modules (or a script FX) to pan a stereo signal to one side.

                                        Free HISE Bootcamp Full Course for beginners.
                                        YouTube Channel - Public HISE tutorials
                                        My Patreon - HISE tutorials

                                        S 1 Reply Last reply Reply Quote 0
                                        • S
                                          ScreamingWaves @d.healey
                                          last edited by

                                          @d-healey

                                          i tried that, but the signal will be either left or right if the outputs are designed to be stereo. It would be an option (for the end user) to print into audio and then split L &R to have 2 mono channels. did you mean that?

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

                                            @ScreamingWaves I'm not following. If it's a mono signal then it cannot be panned, it's only going to come out of one side. I think I'm missing something simple.

                                            Free HISE Bootcamp Full Course for beginners.
                                            YouTube Channel - Public HISE tutorials
                                            My Patreon - HISE tutorials

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

                                            20

                                            Online

                                            2.0k

                                            Users

                                            12.8k

                                            Topics

                                            110.9k

                                            Posts