HISE Logo Forum
    • Categories
    • Register
    • Login

    playNoteWithStartOffset

    Scheduled Pinned Locked Moved General Questions
    20 Posts 3 Posters 1.1k 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.
    • LindonL
      Lindon @Christoph Hart
      last edited by

      @Christoph-Hart a looper is not my only scenario....

      Are you saying that even if I load the entire sample in to memory I'm still stuck with this limitation? please please say no.

      The looper will need very (sample) accurate positions to get it to work properly...

      The granular engine (another product) can be a bit more forgiving but again needs to be able to access (start from) any position in the wav

      As does the dynamic oscillator sequencing engine (yet a third product scenario) - its a kind -of cross-fading oscillator.

      Without the ability to start the note playback from an off-set anywhere in the wav file then nearly ALL our products wont work in HISE, and this would be very very very very very bad.

      HISE Development for hire.
      www.channelrobot.com

      1 Reply Last reply Reply Quote 0
      • Christoph HartC
        Christoph Hart
        last edited by

        Are you saying that even if I load the entire sample in to memory I'm still stuck with this limitation? please please say no.

        No, as I said, the sample start modulation in the sampler can use the entire range you specify (you will bypass the streaming engine and have everything in memory, but that's the only disadvantage).

        The limitation is only in the API call Message.setStartOffset(), which makes some use cases more simple, with the given restriction that it just works for smaller values (it's intended use case is stuff like skipping legato offsets which can be directly implemented in the legato script).

        LindonL 1 Reply Last reply Reply Quote 0
        • LindonL
          Lindon @Christoph Hart
          last edited by

          @Christoph-Hart phew - relief .

          So if I set the preload size to = -1

          then I can say

          playNoteWithStartOffset(0,60,120,)

          ??

          HISE Development for hire.
          www.channelrobot.com

          1 Reply Last reply Reply Quote 0
          • Christoph HartC
            Christoph Hart
            last edited by

            Almost. You set the SampleStartMod property of every sample to the full length (don't bother about the preload size, the engine is smart enough to load the entire sample start modulated range into memory), then you add a modulator on the sample start mod chain where you control how much of the start phase you want to skip (just like in KONTAKT IIRC).

            Calling Synth.playNoteWithStartOffset() has the same limitation.

            LindonL 1 Reply Last reply Reply Quote 0
            • LindonL
              Lindon @Christoph Hart
              last edited by

              @Christoph-Hart said in playNoteWithStartOffset:

              Almost. You set the SampleStartMod property of every sample to the full length

              -- for every sample? That's a nightmare of repetitive work....grief. Is there some programmatic way to do this - like in Kontakt

              z := find_zone("085_HipHop_Drums_Snares_01")
              len := get_sample_length(z)

              • so I assign a modulator (what kind a constant? a script voice start ? <- what can I do in here?)
                lets assume a constant (so number between 0 and 1)

              How do I set this to some very very specific number of samples?

              HISE Development for hire.
              www.channelrobot.com

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

                @Lindon

                -- for every sample? That's a nightmare of repetitive work....grief. Is there some programmatic way to do this - like in Kontakt

                Go into the Sampler workspace. Select all of the samples in the mapping editor. Right click the sampleStartMod value edit box. Drag the slider all the way to the right.

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

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

                  @d-healey oh ok that bits fine then, how do I assign as tart sample of (lets say) 623458 using this modulator approach?

                  HISE Development for hire.
                  www.channelrobot.com

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

                    @Lindon said in playNoteWithStartOffset:

                    @d-healey oh ok that bits fine then, how do I assign as tart sample of (lets say) 623458 using this modulator approach?

                    No idea, which is why I didn't answer that bit :p I've only used unspecific offsets in my projects so far.

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

                    1 Reply Last reply Reply Quote 0
                    • Christoph HartC
                      Christoph Hart
                      last edited by Christoph Hart

                      You can of course set sample properties programatically. There's a blog post called "Fun with Regex" that explains this.

                      If you use the modulator approach, the 0...1 value is converted to the samplestart mod range available in the sample that's about to start.

                      If you set them all to 623458, then just return 1.0 :)

                      LindonL 1 Reply Last reply Reply Quote 0
                      • LindonL
                        Lindon @Christoph Hart
                        last edited by

                        @Christoph-Hart fine but setting something to a fixed sample position is not really much use to me, let me explain:

                        My instrument has a wav file its 4 bars at a tempo (lets say) 120 bpm. OK its a loop and I want to divide this down into "steps" - 32 of them.

                        The user presses play and now I need to play this loop - but I want to do so by playing slices of the wav file - so I can reorder the slices, and change tempos during the song.

                        Lets assume for the minute the selected pattern is the following: 1,2,3,4,5,6,7...32 - so just sequential

                        So first slice is easy thats at 0 offset
                        so playNote with a zero offset..
                        --- Now I have to calculate a point to send a NoteOff but thats another story...

                        Next slice is at (file_length in samples/32) *1

                        So playNote with offset (file_length in samples/32) *1

                        next note:

                        playNote with Offset (file_length in samples/32) *2

                        next note:

                        playNote with Offset (file_length in samples/32) *3

                        etc.

                        This is all pretty easy to do in Kontakt... Kontakt will tell me the file_length in samples when I want it,
                        Kontakt will let me:

                        play_note(60,100,((file_length in samples/32) * pattern_number),(a user-specified duration))

                        ..and I'm done. No note off to worry about no offset to worry about

                        SO how would I do this in HISE?

                        HISE Development for hire.
                        www.channelrobot.com

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

                          oh and the blog is:

                          ERR_CONNECTION_TIMED_OUT

                          So I cant read you Regex post.

                          HISE Development for hire.
                          www.channelrobot.com

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

                            @Lindon Yup the blog link has been broken for some time, but all of the blog entries were moved to the forum under the blog category

                            Link Preview Image
                            Fun with Regex

                            This is an advanced feature that I just implemented (and you need at least version 0.984 for this). You can now change the properties of individual sample so...

                            favicon

                            Forum (forum.hise.audio)

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

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

                              @Lindon said in playNoteWithStartOffset:

                              This is all pretty easy to do in Kontakt... Kontakt will tell me the file_length in samples when I want it,

                              HISE has AudioSampleProcessor.getSampleLength() which might be useful here.

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

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

                                @d-healey Thanks dave. I will give this a try.. so one bit sorted now how to offset dynamically..

                                OK looking at it I have accss to :

                                Sample Start
                                Sample End

                                and I have SetSampleRange - what does this do?

                                can I use this call dynamically ? So..

                                myAudioSampleProcessor.setSampleRange( (file_length_in_samples/32) *2, (file_length_in_samples/32) *3);
                                myNoteID = playNote(60,100);
                                

                                HISE Development for hire.
                                www.channelrobot.com

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

                                  bump - still looking for answers about this last question...

                                  HISE Development for hire.
                                  www.channelrobot.com

                                  1 Reply Last reply Reply Quote 0
                                  • Christoph HartC
                                    Christoph Hart
                                    last edited by

                                    No, changing the sample start like this would affect all ringing voices so it's a rather nasty hack.

                                    I need to supply you with a proper workaround for the looper module. Given the fact that it's the only module that benefits from a sample start > 65536, it's a sensible addition.

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

                                    48

                                    Online

                                    1.7k

                                    Users

                                    11.7k

                                    Topics

                                    101.9k

                                    Posts