Forum
    • Categories
    • Register
    • Login

    Optimal Midi Architecture

    Scheduled Pinned Locked Moved General Questions
    26 Posts 5 Posters 1.9k 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.
    • David HealeyD
      David Healey @Bart
      last edited by David Healey

      @Bart said in Optimal Midi Architecture:

      Oh look Bitwig are already in the game.... yas

      I don't trust AI "search" results. No DAW yet supports MIDI 2 from what I've seen.

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

      B 1 Reply Last reply Reply Quote 0
      • B
        Bart @David Healey
        last edited by

        @David-Healey

        Rule #1

        Dont trust anything AI 🧐

        B 1 Reply Last reply Reply Quote 1
        • ulrikU
          ulrik @Bart
          last edited by ulrik

          @Bart Hi Bart, my experience with midi is that you can work without the MidiPlayer module, this is a video on one of my projects where you can have several independent sequences running in parallel.
          The whole concept is built around the TransportHandler (internal or external clock), synced or independent to a daw clock.

          video

          So I set the TransportHandler to trigger the clock every 1/64T note (the lowest value available)
          and based on that, I can make calculations for each note value for position and length etc.. using this function

          TH.setEnableGrid(true, 23); // 1/96
          TH.setOnGridChange(true, gridChange);
          
          //  nv = note value (part of a quarter note), wheel = sequence
          inline function gridChange(clock, arg2, arg3)
          {
          	if (!ENABLEPLUGIN.EnablePluginPnl.getValue())
          		return;
          	local nv = NVLookUpNum[Canvas.getValue().notevalue];
          	
          	for (wheel in Canvas.getValue().wheels)
          	{
          		local steps = wheel.steps;
          		local length = nv * steps;
          		
          		local beat = clock % (96*length);
          		local idx = Canvas.getValue().wheels.indexOf(wheel);
          		
          		Canvas.data["beat"+idx] = Math.floor(clock / (96*nv)) % steps;
          		
          		if (clock % (96*nv) == 0)
          		{
          			play(wheel, Canvas.data["beat"+idx], clock/96*4);
          		}
          		
          		local cycle = beat / (96*nv*steps);
          		Canvas.data["pointer"+idx] = cycle;
          		Canvas.changed();
          	}
          };
          

          The video is a tutorial for setting up key switches you can skip to around 3.00 to see at least 8 independent sequences running

          Hise Develop branch
          MacOs 15.6.1, Xcode 16.2
          http://musikboden.se

          B 2 Replies Last reply Reply Quote 1
          • B
            Bart @Bart
            last edited by

            I'm hitting the pillow anyway, guess this projects on hold for now. Sounds like working without the MIDI Player to achieve the objectives might be too much to take on myself atm.

            Cheers doods.

            1 Reply Last reply Reply Quote 0
            • B
              Bart @ulrik
              last edited by

              @ulrik

              Oh wow, thanks ulrik 👈

              I'll have a look in the morrow, my eyes are falling out right now.

              1 Reply Last reply Reply Quote 0
              • B
                Bart @ulrik
                last edited by Bart

                @ulrik said in Optimal Midi Architecture:

                So I set the TransportHandler to trigger the clock every 1/64T note (the lowest value available)
                and based on that, I can make calculations for each note value for position and length etc.. using this function

                Nice plugin ulrik 👍

                I'm likely aiming for a higher PPQ of 960, so not sure it's possible that way..

                Chatbot stating: Running a JS loop 960 times per quarter note per sequencer lane will cause hell. And I think you're stating that 96 PPQ is the highest that can go?.

                Supposedly the Hise MIDI Player has an internal PPQ resolution of 960 PPQ, handled by sample accurate C++ timing. That's what I need 🙏

                The MIDI Player could work, but I don't see a way to use it without initially clogging up the plugin with 50 - 100+ MIDI Players, nor finding a way to set them to other MIDI Channels.

                Info pointing toward a lot of work to get higher resolution timing without using the MIDI Player.. 👷

                Stuck, but there must be a way in Hise.

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

                24

                Online

                2.4k

                Users

                13.9k

                Topics

                120.6k

                Posts