HISE Logo Forum
    • Categories
    • Register
    • Login

    Rendering a "sequence" in the DAW not working

    Scheduled Pinned Locked Moved Bug Reports
    39 Posts 3 Posters 1.6k 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 @d.healey
      last edited by

      @d-healey he's using Reaper and Logic Pro

      I have asked him to send me the Reaper project.

      HISE Development for hire.
      www.channelrobot.com

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

        Okay i spent some more time on this and reviewed the code...

        At least part (if not all) the problem is the sequencer has variable step lengths....each made up of a number of segments.

        So I start out by getting the segment lengths like this:

        		switch(LengthSelection.getValue())
        		{
        			case 1:
        				// a 1 bar pattern...
        				segmentLength = Engine.getMilliSecondsForQuarterBeats(0.125); 		
        				break;
        			case 2:
        				// a 2 bar pattern
        				segmentLength = Engine.getMilliSecondsForQuarterBeats(0.25);		
        				break;
        			case 3:
        				// a 4 bar pattern
        				segmentLength = Engine.getMilliSecondsForQuarterBeats(0.5); 		
        				break;
        			case 4:
        				// an 8 bar pattern
        				segmentLength = Engine.getMilliSecondsForQuarterBeats(1); 		
        				break;
        		};
        

        Then in each sequencer step I read the number of segments in the step, calculate a millisecond period from that, play what needs to be played, and then tell the timer to wait this period before starting the next step....

        So in high-speed renders I'm assuming its getting the timing all wrong...as the number of milliseconds in a segment is now incorrect...or does HISE manage to compensate for this?

        What is Engine.getMilliSecondsForQuarterBeats(n) returning when its a high speed render?

        I've also rerendered with a midi file used for playback and it renders perfectly at high speed - so its not a hardware issue...

        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 I'm not much help here because I haven't used any of these functions or done this kind of thing.

          What is Engine.getMilliSecondsForQuarterBeats(n) returning when its a high speed render?

          Debugging through Visual Studio might be the way to gain some more insight 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

            Okay well heres a trivially simple project that displays the milliseconds for a quarter beat ever time it gets a note...

            compile this and run it across a midi file (with a note) in it in reaper and it displays 500.0 at 120bpm.

            reset it to zero and do an off-line render ---and it again displays 500.0 -- which is making me think :

            Engine.getMilliSecondsForQuarterBeats(1);

            ISNT playing nicely with off-line rendering.. so all my timings are screwed up...

            HiseSnippet 770.3ocsUssaSCDDc2jrPSfJQk3IdxpOkJUprgRAIDhPtghnWBjREuUs0dc7pZuq050sMBgDex7G.yZ6F6TRqPQT+PTlKmwmLyYlLVIcYIIREB273YwLD9wjIyD5fdATt.MpOB+LRDOLjmvbkBui782mKXZVh11A0cVLMIg4gv35ezjOtYCT1yudeWZHU3xJcgPmH4tr84Qbco2wc9DT8gTO1w7nJYuamQv6qmLTlBbqNwFEScOmNkcH0jVMBB+fAdbsTMQSA5fvM5J8lMIPdoHO+S3I7yBYFCGzDnP4tGJC8LL13E0KfG5M95dPBBpx3xNR87NxSIGv83y8W1YdRV.qRDU6G3ZKRu5KPOmpzytB8VBkvUnTibJsAYhqhGqKiX3yiHiDZlxmBs8pTIOWTscwjdRHCgdmH54rgJvXNh16YausE7wVusUKn0mnstfpr1mdFKzw5cVWibJS2SFEKEfQ6MyCuoASK+TgqlKEVRwgRM6HQ6sZ88VMySYmDFjtlckdyssFHlBhHSoNvHsljIsRFJUeNkp.9zkQ0Isc1BJ6OZYcy556mW3aDyPPkLLjoVZXi7RcW.aKRiNio1F9YGlxlmHzyWbPRt8AYUclad+pRhRwHAWeTLSbapOTQSF91WG0mpoloegOHuXlRyMT.2mcArJkqEZR5yRNWKiyxsXxfvOTmEc8BkR1T.wA8vZj7IB5p4aa+zuyrRiS5bI2SGL2QGYm.FeZft51oYRhvsH1EOvl7eoRg8CoWZHUu3Ri4RQQ.X.rfR0nFEIb8rpWR9usI8uRwMHi4Z2fkywZKgivX59fiE2eVmLv2m4pKIXCxvuc+brA8EYplKld.Uq3f.gbXZzD3DrKCd6BAKzr.fqYjp411FaSGXBS3kY7a3oHniwFWDz45fnHpqRdpa9Zm4B2ZYd.NIxNt2jbfw1xAksJB3H16Xihfism55Z94+bX6Y4XdwJf4kq.lcWALuZEvr2Jf40q.l2bmXL+O2GR0xn70Avw3AY2mv3ABJnrxTgn+rea6PA
            

            HISE Development for hire.
            www.channelrobot.com

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

              @Christoph-Hart -- OK I have my t-shirt on, is there any way you can help with this one???

              HISE Development for hire.
              www.channelrobot.com

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

                Ok so more testing in this one , and clearly I dont understand timers AT ALL...or they are broken badly...

                heres a simple snippet that waits for MIDI note 60 then uses a timer to play a quarter note evey 1/2 bar until the MIDI note 60 off...- this works fine in HISE, but as soon as I compile it and run it in Reaper it fails (it just plays the held note...)

                HiseSnippet 1110.3oc2W89aaSDF9bSMBmwPLzDhOZj.oTotn3xnfDZZsMMYJhklPc1fuMc090IG09Ny4yAhP4+Q9SY+G.u24jZ6RVUHhgXjOT468G2879bu2yccrTD.YYBIwxYxhTfX8A19K3pYcmQYbxfyIV22dBKAjSfLUmiHmsHklkAgDKqFOSGhky9DyuW+zynwTd.TZhPdofE.OmkvTkVGex2whi6SCA8DWZ+wmLHPv6JhE4HbZX2gjRCtlNEtfpCaOah060KjoDReEUAYDq8OSDtvel3W3Ew+RVF6pXPOvi3iSTg49h3PMh0VIcmwhCGutryHDK6wkjPiBR3g1CYgrarWRFejwgaYFU4Cq8pCuF0fmWU30oB71.jrp.o8KfzCr8CjrTUoGMdtm8.tBjQTj1qBkhXI68EMr6JvH3p1Izqg9RbvMYz53NcNzE+yAeaylyoR2jEWHTvfyceh6i7Pa31QlxsvyXPxDgnmd7oLNzdJnFhaiLe.iJLquP984TINymATUVKuCtU9llnxzCjXXlF.4nq9IHP0RmvpvZmAJyGcowwWgMAshx4AJlf25feqoSSmzX5hgFvpSyo4RcxqiwspWLbVTqxBSWYGzzAM6ToZMs7s04Yx53NG5cjlUbVBwYfN3hH3n2QQQmsn2bjRGDdyDqi04VzmyRGMztAVBt18HrFZhy3PbSD6saylxERvLesTxbPWIZHu1Oxy5ztHO4JP15.cEbbmUUvsnAmanOEtSX9r05MNieDRMW1z81HJJp.Ra4pVagDoEqiY9YQtkT8m8DCSaRYqnukajCqQf5dYoHNVufZDeqpYET1fmUI1haJnCwdxXjpWGHdHq9IW627I2pBKAEGspDnfOfyTiRA9aRtgr57H90KFbNUQ0G2WYCiKEjJlFBVmCyQsyhC+N1mCYWijMpd9WTFPMIQXdLUUWnRqNuxAxA0TGzJ.7LlZQU06+wTu1VH9.6wLUvrMiw81.FQl5sAFWo4ee6dQQnPTI.22t+O91Qfu5x+gEK+8r8QcQy4Dyh+Ilwt+.cN39LfCRM44cG2+96a68uoa88uiBT3xOQR4YohrZSrOjvlH3ZVnz3KxvaXfe9R8tYU6cET4Fc85m1GKxMliOUkKMsEmlHx4pZsAMtq2A3siuCX++y8Nf2ANrW6oJNqwnOKIMF5wmCwnhlAieLJgEQyiUqsVuWdnfKRmI3rfpazWBJIa5TPVE6arfNUov2ITZ4gmbIDCzpMse9IOGa1nRjmfcjK79a+rsMte8o1Ev0Ue.z8cWQ5F++Vj9RQthwmNjhMg+J9n.70P9n1X.fqNmiuLDsYsmVeqXbG83BwQdnYvef+V4zSO1ZkSu0N+WYMRnARwqBJdBjtO88MVv5la9OqbrGpG65QLOKByytS6NjDTg6UAAZJ9Qnf4ly4ncHmubGx4w6PNe0Njyw6PNe8Njy2bm4nub4zbkHo3HGZXbOyaEsr5woX2qoSm7mfWyiji
                

                Can anyone else test this is the behaviour they are seeing(hearing) too?

                And any pointers about timers would be a great help...

                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 I get the same thing. I didn't bother testing as a plugin, I just built a standalone and the note plays continuously. I'll see if I can find a solution.

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

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

                    @Lindon I solved it. You're only getting the period in on init but you need to get it in on note. I'm not 100% sure why this is but I can see it would be good practice to get the tempo at the time you need it as it might change after the plugin has initialised.

                    function onNoteOn()
                    {
                    	local myPeriod = Engine.getMilliSecondsForQuarterBeats(1);
                    
                    	Message.ignoreEvent(true);
                    
                    	if (Message.getNoteNumber() == 60)
                    	{
                    		playMyNote();
                    		myTimer.startTimer(myPeriod);
                    	}
                    }
                    

                    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 thankd - slightly odd though - why would setting the time period have any effect on the playback?

                      HISE Development for hire.
                      www.channelrobot.com

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

                        @Lindon

                        All will be revealed.

                        const myPeriod = Engine.getMilliSecondsForQuarterBeats(1);
                        
                        Engine.showMessageBox("time", myPeriod, 0);
                        

                        Basically the timer never runs.

                        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 sadly it still never runs in the compiled VST3... no matter where Im setting the timer....so its still broken.

                          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 I shall investigate

                            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

                              so:

                              function onNoteOn()
                              {
                              	Message.ignoreEvent(true);
                              	local myP= Engine.getMilliSecondsForQuarterBeats(1);
                              	
                              	
                              	if(Message.getNoteNumber() == 60)
                              	{
                              		playMyNote();
                              		Engine.showMessageBox("time", myP, 0);
                              		myTimer.startTimer(myP);
                              		
                              	}
                              }
                              

                              gives this output:

                              067cfafe-adde-4639-a17a-e86fdeeeae52-image.png

                              HISE Development for hire.
                              www.channelrobot.com

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

                                It's working here. I added a visual indicator so we can see that the timer is running.

                                HiseSnippet 1250.3oc2W80aaaCDmJNZnxcYXcnXXOpUrGjARMrx5xVPwPchicgwpS7hS61SqfQh1lKTjpTzoynH.6q2daeT52fsijRVxYNAYFqCqynnP73c79c+g+3kgRQDIKSHQNdmNOkfb9P2Qy4poclhobT+CQNa4dJMgHOkjoZsC5f4o3rLRLxwo1S0p33sIx76sO4.LCyiHkhPnWHnQjmQSnpRoCa+cTFqGNlnO3R4Opc+HAuifIlAvolaKTJN5b7DxQXsZa3hb9ftwTkPNRgUjLjylGHhmOZp30bq9uflQOiQzKBQifCxJtmfEqQrVJpyTJKdXQXmgPNtCKSB0rIg66NfFSWHuLY7wlM7KsnZ9vYikgWskfWXU30pB7VAjbp.oMsP5dtihjzTU4NZ7bW29bEQNFCo8pPwpKZieqlaGAnAW0LAeNomDVrvhfca0Zae3+Z7350kjI9IyORnH8Oz+a8e3d6ABg5QlBDa5..oc4SnbRyHIAhPiviO6mIQp.8IjqVyLhx7QGLicFTACFOiGonBdPi5uwqtWJCOefwSZy7Fh4DVXSIIERxlS5R8oQ4LvU9E15W0JywPG6GTBXChaT26M087pDFld4lZaMVtKDug6niWuKq6QXYDqEV03fJGOd7Ay6dAjv5Gu33056c0jCbBWVjgt.K8swAraQBeBQ0QjjJ3vhfGX29A5PKOhg7zPcHehXlBB0xzzDH.q6Mo4X3Zx9LVv.L.NIlGCUtfvV1ea6uW9WsZXyYKRUBtFoGax208XhHLCpgCIRpHtrHBva.3.5HBDCwY8DxueFVBsFG.E2rfPMR8F.sZvMvlzIbgjXxKAJ4LhYScEnPA3zzN8nYImQjAMzEjcakWOtRA2aQihB7m4yfB303wdd1Lq+UCmwiswysxq5SoheDoV2XbO7uk5c97hdmaSev0zHTAr5xuTvXZ2ow6UhkbfrhcxMLfahlsglJFjnKTDHBVlcw85YWpR9EY6Fqnnf2mSUGmR3WGkHJuEF9548ODqvZJobYfdoDohpgfygjK.9cKAkm6gjrygTsQ279dfxVY1cqB5KcuOhBjT2w0dO.8KkOAD2dd0EulFqltPvu9p1SIzISq7TxO0F8WYJANZQ7LFVsLws90p7Mf78RrkZFQdFUMu5qY+iwleag38bGRUQSWMF2XEXDpJuKvX9afa41c7XfauDfa516Ge27fWU2+QV2eW2Q.Kk4Bow4epYs+Ofuf3+TBmH0IuvaXdje+1NOR5sddjiiTf6OEnhyREYKcviHIzSgV9rpBedF7hK4UmnqlUk2Qfkqbq29jdPPtRaFgUyjl1h8SDy3pkZCpcSyEEtlyEs4+4lK58fK6KM5lWAFGQSRYjt7KHLf8zfwOAnKGimwTERWtWdffKRmJ3znpE5SHJIcxDhrJ1WY.suRAidUJ49sOgvH3pMseQ6mAMaXIjmHqYtH7u8Xrqrd8YtV35qu.5+9KIcs+eSRaGTcBLNpjBOZ6BicMB3FiHf24vS45gRb1PyuYW2Ru1RNxiMK9C3W9lg50N4aFVr4+J9HAGIEuLxNtktO8NFIPbyM+kldtCzq8CQlQv.6ba0rEJAX3dYTjNE+Pfvb01ryZXyWtF17n0vluZMrY20vludMr4atQazOtr+LkHwdkCDLrqYtTGmtbLz8Z5zQ+IXoWQx.
                                

                                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

                                  thanks and so now we get to the ACTUAL problem....

                                  Load this into a track in reaper, and render the track....this is what you get:

                                  28d661e2-516b-4bb9-96e4-290f07dbafdc-image.png

                                  So the timer DOES NOT WORK in off-line renders....and this is very very bad because some DAWs(I'm looking at you Logic) are really bad at real-time rendering... and some (I'm looking at you Reaper) do not offer out-of-the-box real-time rendering for tracks....

                                  Can you please go confirm this is correct...(that this is what is happening for you too..)

                                  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 I get the same result with offline render. Realtime render works as expected though.

                                    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 -- so yes, same as my results - so this is a BIG problem...

                                      @Christoph-Hart !!!!!!

                                      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

                                        so this is a BIG problem...

                                        Yes I think so too. I also tested using a fixed interval of 500ms and the result is the same, so it's not related specifically to the tempo functions but is a problem with the timer in an offline render.

                                        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 yeah this all started with a plugin I wrote that uses fixed time rendering -in truth there's more than one of them, and they are ALL failing in this way...

                                          HISE Development for hire.
                                          www.channelrobot.com

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

                                            @d-healey -- I'd imagine this breaks your legato scripting badly....

                                            HISE Development for hire.
                                            www.channelrobot.com

                                            d.healeyD 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            19

                                            Online

                                            1.8k

                                            Users

                                            12.0k

                                            Topics

                                            104.8k

                                            Posts