HISE Logo Forum
    • Categories
    • Register
    • Login

    Recording MIDI internal notes

    Scheduled Pinned Locked Moved General Questions
    11 Posts 4 Posters 227 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.
    • VirtualVirginV
      VirtualVirgin @hisefilo
      last edited by VirtualVirgin

      @hisefilo
      So, I was expecting to fix the problem by putting the MIDI Player in a subsequent container, as from my experience that new container should "see" the generated MIDI notes as incoming MIDI,
      but this isn't the case here.

      When moved, the MIDI Player simply ignores any MIDI, so it doesn't record anything. I wonder why that is because it would certainly be useful to be able to record MIDI that is generated through scripting.

      Screenshot 2025-02-25 at 5.45.56 PM.png

      You can listen to my orchestral mockups here:
      https://www.virtualvirgin.net/

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

        313afc89-7e05-4cf1-84d5-40535c93bfa0-image.png

        But here's a secret doc that might help (the original link to this in the documentation is broken) - https://github.com/christophhart/hise_documentation/blob/298ec85a9a731fda2b2fe588a1a03c7e832a239b/tutorials/recipes/event-processing/create-midi-sequence.md

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

        hisefiloH 2 Replies Last reply Reply Quote 0
        • hisefiloH
          hisefilo @d.healey
          last edited by

          @d-healey Hi mate! MidiPlayer.record() is already working but only for incoming midi messages I guess. The snippet I posted uses that function. is already implemented...??

          Content.makeFrontInterface(600, 600);
          
          
          // Get a reference to the MIDI player.
          const var MIDIPlayer1 = Synth.getMidiPlayer("MIDI Player1");
          
          // If the MIDI player doesn't have any content loaded, we
          // need to create a empty sequence first
          if(MIDIPlayer1.isEmpty())
          {
              // Create one bar with 4/4 time signature
              MIDIPlayer1.create(4, 4, 4);
          }
          
          MIDIPlayer1.record(0);
          
          1 Reply Last reply Reply Quote 0
          • hisefiloH
            hisefilo @d.healey
            last edited by

            @d-healey

            I also found this doc you sent here on the forum posted by @ustk some time ago. But cannot get timestamps to work. (My poor approach was with Engine.getUptime)

            HiseSnippet 1832.3oc6XEtbaabDFPRnoDs0SRal19ya7jYJjCKnnDMk83oikDEkCarjkEocxjNsdNAbj7hAtC4vAoxoSeG6iPeD7aP6t.fDGjnTn0jzIosb3evt2t62t2d6t2cpRFvRSkJKa2QyRXV1+bmgyD5o8lR4BqAGZY+abBnI5LE6Dolk9lrT8aeyV96XcvrDZZJKzx1d8mgK1twFV4+d2SOfFQEArJRVVuVxCXOmGy0UTOcuOmGEcDMjMhGar5N6MHPJ5IijY.vV2YKqDZvaoSXmPwksli0mQSmZY+.msdXWFa2cFGFR2Ymvtc693G83NOtMc7Vcnm2t6i6rcmc29Q6N1x9mzOjqkpgZJ3EV1abfLb1voxKEEF307T94QL7i1VCAKWP9HYTH5hHUqdS4QgmNOhkZYY6bZU7a8h32G6bLOjufdUb7CyYPpjvL.ZuVc3sdM301DdaY.uk.o0LfzGLeKMGRQzYLUNTtmywCNb.ofR6Z.oWlRwD5gruIiUaG7cOsj0HErWXR+4RYReAEfWnIYT6mCKcXBqNC60WYes8s5qVnacDOhg9s87OfUi9HjjbHUSsr63ryC8Ei594Op2zidYOe+ieY+u5q2222+K8822+T+X9YCGMX6uBn3en+EeZluuEpnEIa11X54P9DAEOG.4RmjEe.EfvBu5C26DYLG3ig8JhGxDKiLFw.uWoMOfTDFqEoFwhSjUD9K6YYr4tQwl6G4LLPwSzUbPu+WURsJcq117ZEbsV6O553pXSHZzAQD8DWWWtHhKXjwYh.MWJHRwAYZsTrcOoPqjQdAR.WBHWnI4BZTFaS2+laiEpf7GH8ES.M3OgoeUBR2aym392AUiJ.DCYzatN7teo1u+l9oH8baziFEgYOdW03ahHj3t.bzvPrvzKDdQ7T.PASoBAKpIQ.TEYwmyT.JYQx.tdVSRhLkixgPl.+tfpHwUHNPwfjxigHFTs4yvC+JD63JiQzgwbuX+BKZx.obRt07pLr4BdcID7liESl8J.sWI3qYQH7kpowIdUA0gvmPV+QR0Kyf.NSc.f5TuE9Vo7KbP4J4fxENnrvAGO1jys4gxa1Ij2Qmf7ojHlXhdZMuA2i8SxRm5EWRtUqJZRLMy854FiG++SN9efjCyTg4oGWK4vsUKxno7TxkvnGjofSRfoLxSHHokc87cw.SDDX9S+YrbStPOioIThhMlov0PzRhdJij2IMIuSpuKL0RpNOphjK6uBpIejJzupZD6ceydv2GKqAFYv3qpTRnjkJ9cZxT5ELBULiDTTDkDIgAmBaRtjgRJftrHlJ1CAjB8NzyV3RjwbUp1kO1y.Y97z93p71bdFOnndEJ.pMSNGbjK45ojNs5j2hfjNuIX9pMUUgc85zjf+Kh0sZYtBEKPpB81Bc0apES6asECftSjWBNL4qgwPIX6r7vEtIuj8CHZEB4IZBWWFVxUAkjnjIrh8Hi.jRFCqz2sgInGGA4NkmHdNXFunUnUV6auUVayVYFgfx9X4tJfhBi5CQboh0+BT+ZEDIdhaCildMIyW3jpSYaBToPFmBh.C.45tUSR2c2r1ZWTyAHe890jee0LAMIsQi51.vcpLh4mn3fRutPEqpUqqV.98q5ay4msgTHxUCOPo773iYo8aLDTQ0n9DvX6cZR7tcedyENM3POvswpUorwxKS13VqQ13FJP136jpiMdPqqDGKy9hPHmmpUmMZvkyY9YyEacKNXhKDlHs9b8Nq1b8kkyLVnTLPv0uHgItoKdYUd5CuuSIpfkpyGH9dki9VbVyhiST6TdvyJGxliXa8dH91KQ7WMH+VFvL0kP5z7ZKZNFArOjcAbq2hA0a3bHK8sZYRNlKqX.AsU.0+0JSNZuYUe7I6Y8doosMzz+L4JZ55Ws.twpLLKBu8h40XwK6Wx.xKpc6wAXH.RBmU69deWc21UEhejyobcvzkiw0VBFwznuGvX4KB7Kb5OdLKPWAvMbN5K+945+ll+dEl+m4LDJajOARtw+04eS9BbbhmwDLEF7ZeKOmy+XUeNmjU94bdQfFL+Hn8TJTzplhGxh4ifL5TShuJkcjh8Mmg6llz6IgaguLVu6oGAN4RkYHN+RdZw9wxLQs6fe0mlXiUqD12xqDswO3dkneDbX211.iMliwgbryWeAN0.PAw3uDpqNllEomSsdt7wRgLYpTvCL2nOioU7ISXJSruTGZest16c8w6cFKhQMSZ+j8dNjrQUPbhcGiEsW8Xwsse8acJfKAO.R9waQ50+u6hzmIyzbwDXDcEG5H6.SENDpMFvJGBDGdxdMr9Vw2ageWTbTDl+w+B9UxrM9scIy1yY9eDaDSCTx2DTLAElm9Syo.9sH+sSa3bL9M4ZycYYECU4dSPPcUcMA29tJ3N2UA6bWE7g2UA6dWEb26pfO5aWPrIz9YZYbwQSKqiOsewyoau3o9sW25eC3+GRZH
            
            d.healeyD 1 Reply Last reply Reply Quote 0
            • d.healeyD
              d.healey @hisefilo
              last edited by

              @hisefilo said in Recording MIDI internal notes:

              I also found this doc you sent here on the forum posted by @ustk

              Did you see his piano roll? Perhaps that will help?

              Link Preview Image
              Piano Roll UI Component?

              Alright so here's a prototype of a MIDI editor using child panels. The notes are created in an array of MessageHolders Updating the notes doesn't work yet b...

              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
              • ulrikU
                ulrik @hisefilo
                last edited by

                @hisefilo Try this snippet

                HiseSnippet 2144.3oc4Y80baabDGPRvIjIQIYZm97E9DThJLo9upmNVh+QQxVRVQTR1JYZy.BdjDg.2Ac3fpY73m62f9QoO2oeB5i8ig+Fzt6c.jflzxbnSZimvwVRX2au629a2au8.OSv8nwwbggYwKFDQML+XqlCXxd0545yLNptg4uw5bpGWzlbheaexobIM1n5fH23XZaCSyE+ZbflEVxP84UOrpafKyiNRjgwUbeO5w9g9xQROauG6GDbfaa5E9g4F8F6cjGmUiGvS.PsnUYiHWu9tcom5hCaAKiCci6YX9kVq0ok2Zc1d8cprakc2dicqTYycZsQ407Zu4tqu9Vq2tyZ63t0NfQ2qQaeIWzT5hf2bop71CZ1i+WX5E3J+X+VAT7gJFMgUVK9.dPazEQoF054Gz9rL1J1vvz5rQb2hZt62ZgbzP4i3vOSofLxh7Dn4B2E7p71gW4oAuEyAuOHKzpfWf6.pPAqksN4n5GQzRpLFnpkHDTlrI8lD5XQyW8vTUWHf3Rd4Gy4QMXt.TamWLN6sfg1LhNtByEeG86oEVLPW7.+.JxAlYO.iF8WH4otqz0v7uZs61NrK15w6Tq2yZ7XGmdO6rFTmM22wo4Obcv023UkEKFHtrlysN+3Y85c4NWud0Ce1UNGlz5q7tsQusOn2fxW6bS+Jk2e8e7Qt2dyVWswSOp0wd0+19O5V9M6e0inaVs0i5W8T20dRTe55geSsAO24viBEOm9zaE0cbLPrMLu1zD2IzzuKyUlHvz1SSBq5BdUNR6TdnOnGipYBKsWcJaRwe1dX.AHWgL+dQcTZr.wEzvH9HA+48Lxk6rjN24ysZ5I7ijizfD5GYcDSREcbgLj7YO5wZX9OspwgAvjNgt8oGHfGFZf8VkKuJA9wJOnXwNILOoOmQ3LrBySX1qT7EEKT7kEIutpNclpNbgD7f.pXppQpUbWFZyRBaQEqRt0MHgNbf.ALdVp0rkk5o86bCjyNh4KeRDk8FycSIK3ut7HUhJvkoxfwEQEReDBl0o2BET0AlBV0ow8k7HiYNpULshNULsf1B2qfEf9XIIst+ejjEDca2tZhTxY1kz5JsJoRY7+XLzmE3yn4oV8fxHXONjlwf4IOGOTnSLUZWRRetrTpdxCIkZBNVJN7YcKQ9CjrUFVwBEK32gXmNYEfYq.VrAmoqPY1cbCho3.0x854x5RaaiRdYQsweQl0E.qFUdDGyKAeRuX3Ll5E0bCBvpY1ul2gDfl0vIX5bFpAYrMuCJCGy6JgonI0hgdZlJrTeZkdmH321kWAFWdowfs1Ht.xIiHmzsygPzEJJncIRrvEVoAb7xOPIRjEz.Qe2eBF38uO4qoRhKnoCUfGpPjbhrGUgARjBDNojXNXA1q5Hwo6XAnR4O5pjBIuNaBTOVwvNvOFnPL5ynAqRXfrga1oAbOe4fUIQ7XezJjjIvGPta.IDV8Frtvz53InPEfSfsQPyHGhGBoxRvwFhLEtiyNzQW9JuBTxop0ydzRme.WkBB6LzjWYMMrsSg+XqHv5wR2vH6THBLTS3Q3vuC3hSf1q7aBQAV6X6Lui7kPlGTxMcZx4o7YxS4C8TtSZ037ZtKWk+l8l6e+BXdP.k0U1iv6nxJvIfX6yHwZWZkUI8f7FE9CiIUHwJeaUHL+CIPJCjLM.5YjD32Gx5hy4Zoy6P+6MSSJtIumN+LL4qRW2wnZHSzIJItmcXp3QR35MdSjE+Z0kvZ.pBWC2f4jtNPMLAE5bfopLN1FapD6zvtDToPJRn5ehEGzDjLVuuELqCWProDf1GN+3DiqH0wOd3IvnvBJ6TjxHhRWWVOu2zBzehKr20i5GjiC+lDnVAUTExyPhLkRskwqrxDfWmMZeSqUIa.0Mmb.cB.5KMa8XfNsGg7Gj5P8mvgfJXw7.pSjvmIs66zNAwNZvHd0Kf5pOInn9yanKEU3HE..GsObLcGeOe2.EM8hT56KROKoa1oSJN7EJdLW4yQjzkQnbEgVnvnChzFmE.GpI+gavoaE.RpvPL0kwEzF2BmZLxPcHhwxBQBWVan4LnsLnqrsUCA9WVMzgrxpjrYs6nsyvdSFCOTCrcRGf76Gc.wJO.mXcA8z4FnwJ4rur934ek14m4BonBFpT0C2xo8vo6hvvG5U6CSafyPg37c2aLCVeOKbmyTrcdZ5DwaZCI.g81Q7yAdzrHrXCx9CiYZBRAsx7+1XlOYWuvss4sSBvqCk+J33KpHUAD+Gq0W7RILn98fwte5reu7xy98SmQ394Vm4K85Mc7tvTvKl57yLdSeKGehUiNcndxQfcIqCd179JMlOnrrFJejUSnVipZhBH+N0yjm5dKEZ1jQEHoV4NdcU+qY80UEMyutpm3Igk+BnbZLzSvXu4jlzP+KfT837q1kwvEio2bNFkyKuFGt5+zT8pGd.3jS0ll3aNPktreHOgM1E++Y40sXtz+GdKX+zua6cu3vhyFbmBCZlCiepFief09GVu44oEBT+MbrJd6fH53YymvY7ndbluW9P84TovuaWpHOhmparuTB2pqVh31w1ATm5AWx60kpG7jRNlBPKuX7NCSLcCE7u+660DZXer8gW+ONmBcaEO1NqFdbHjPmSZuxcS6VyXpwmXocRhZe+urOzX4LrpiH+xFrerkJs38Ad8SsRSXeufXW1Jcuz6CT6c1myh+5rOmy4IR3lVvsxD9XCumlD1DZuvildcK7tHlKfsHnetL9r53eJqs5g+C7IUYE7YyTkUxT9+j0Hz0Sv+dO8MRvZtenRB32L024QAqSvmIUl7tHgPiBeum23S0DFt17Z35yqgaLuFt47Z3VyqgaOuFtya2PrOt8Sj7P8VVCiSNqg9aVyb32.n4hF+WnTM9YA
                

                I had to use message holders to be able to record the random notes, I couldn't get the MIDIPlayer to "only" see the randomized notes

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

                hisefiloH 1 Reply Last reply Reply Quote 0
                • hisefiloH
                  hisefilo @ulrik
                  last edited by

                  @ulrik Yes!!!! it records the random notes! thanks mate. The only thing I cannot figure out of your snippet is why the track is about 100 bars long. when it's created with just one bar.

                  By the way, were you able to pass them to the MessageHolder? there's not setEventId method in the API

                   local m = Engine.createMessageHolder();
                      m.setType(m.NoteOn);
                      m.setNoteNumber(notenumber);
                      m.setVelocity(velocity);
                      m.setChannel(channel);
                      m.setTimestamp(Engine.getSamplesForMilliSeconds(position * 1000));
                  
                  ulrikU 1 Reply Last reply Reply Quote 0
                  • ulrikU
                    ulrik @hisefilo
                    last edited by

                    @hisefilo said in Recording MIDI internal notes:

                    @ulrik Yes!!!! it records the random notes! thanks mate. The only thing I cannot figure out of your snippet is why the track is about 100 bars long. when it's created with just one bar.

                    Have you looked in the script processor "Recorder"?
                    I've set it to record as soon as you press a key, but you have stop the recording your self

                    Skärmavbild 2025-02-26 kl. 15.40.01.png

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

                    hisefiloH 1 Reply Last reply Reply Quote 0
                    • hisefiloH
                      hisefilo @ulrik
                      last edited by

                      @ulrik yes I did. I stoped it manually.

                      hisefiloH 1 Reply Last reply Reply Quote 0
                      • hisefiloH
                        hisefilo @hisefilo
                        last edited by

                        Engine.getUptime was the problem. This one below works.

                        HiseSnippet 2144.3oc4Y80baabDGPRHIjIQIYlL8k9xE8DTrJLokLkT8zwRhTJR0V+IBRJJSmVMPfG.QD3cvGNHaZO9qQ+nzm6zOA8w9wveCZ28N.R.QZYNJMcTa4XKIr+41c+s6s2dfGI39zzTtvvr9ICRnFlelk6.lrW6ddQLi85XX9qs78RjYB5AbIM8hrT4UWvnu7hFNMM1ZPhWZJsqgo4reGpfYs4LTed2S2xK1i4SGQxv3LdjO84Q8ijindzFOKJNdGutzSh5WR5U1XOeNqMOlmAN2rVMLR77uxKjdfGJ1LVF65k1yv7asZ73VT5pKGzsq2xK2sUqVqu15qrdSufFq3cYyVquxiVY0Gs1pAFlez1cijbgqzChDCy41h2cfaO9KYZCbVTZzkwT7glFtfk0j2gG2ECQjpQ6dQwcOp.0RMLLsNZDFNqFC+Zq8i5FMj9Hr7KULHiznL.ZNSU2a1JtWyxtWiRt2DboYK4RebQZU4RwdCnBkqLu0960YOhlR0LY6LgfxjtzWjQqjAe2SyYch.xEko+bNOYalG3dcKSFW8KAQcSnUYXN6TGqMu0X0.CqchhoXbaV7.HMFiPQRGOomg4arVaMG1Isd1Zs6c5Z643z6TQmKctLriSu0dvCV+jSZ8ia9SmGt+flO9zffC+8thceF0k17jCudyiW87v04u9kWsdnfdkeauf3ya88mEF+CsNL9X2K4qDJV4zlu90x1as9yNe2PmfyWc4WQOd2vsbbLP+YXMqoIVk6FEx7vsTPI4AY82xChjRfyA79Q.eL6UP7q2nCkMN4ubCD3APTHKuOSmMp.3mP6mvGQ3OsgQoZj4z0HekkquHJQNhCBhep0dLIUD3AUBkqRzxZX92rZyAAXRm9dWQ2Q.OLTA6VMZrDA9whOod8fLluLhyHbF1J4Pl8h0eS8Z0eacxMYEDLQdngD73XpXhrQnUbaJZyx5eIUrD4Zu3L5PAA.nZ0n0zUM5qi6RBxY6whjGlPYuu1EF4fE7Wmtmp3DvxbZfbITgLBcAyNzqglk5DSMqNzzqj7DioNqU25XpOWzkJlTRaFqZVf2mJIZoH+NRQRzqa2sxjRNydAMuEVhzrA9eLGFwhiXzxPqVnB.1mCkYLXcJiwCI5jRk1KHouRtPNexSIK3BAVteDwBWf7aIEVFrXMIteAKvAebaVHXcmPp7zDjtMJP8ZQAD6bqUCLWMrqCZpyPZ1AdwoTTPMc+ddrPZWkpustV4uoP6ZfVi5Shx7VHn0dCth4gYau3Xrsl8MBeDgzvJt.SFTQNHj93aASQY94hnJbTYLLRKXg87ya46j.+1twhfbkolB5Zi9E.NE.43gcIODCg5BZHoblpwSTjDEYUfze3OBB9vGR9Npj3AbBnB7zEhjSj8nJefjnbBmbPrjaA5qFKAy8kRPKT9LrETdxMQS.5wVJ1wQo.DhYeFMdIBCnMra.Ml6GIGrDIgmFgZgfLA9.z8hI8GU54KnPKh8g8YvjH6hCFnpRPY6iHEtkztuit+VYFHkCT1ydjoKKvY4Ngcg2TlYasaam69UrHf5oRu9I1i1c3BOBmHtCWrOLaUjKjEXcSsKhNx2BUdPO47koTjxmpHkOLR4N4sqKy41BU96OZd3Cqg0AwTVnrGgGnpJvEfXGwHo5PZwkH8f5Fk+2Okzjjphskfz7OASlhESCfAFIwQWAUcokBs70sbSj2CLovlxQ5cGgIOH2tUfZnRzIIKsmc+bxinv0a7FqJ9F8kvd.pFWC2f4jaGnGlfBiVvTcFqrwlJwQQrW.5THEYT8OwlCZ.Rlp22BpEvEDaJAf8gqOtvnEoNQoCOhFIVSomBTFAT59x508EWB722C165SihKggeeFzqfJ1BpyPfLGRskoKt3XNutZz9EWtDYEnu43BDDCvWd05yA3zdjm+j7.5pwBHnCVJOl5jHhXR6qb5lg9NpvHb0Ol5oOInt9y6YLFU5H2A.LZS3b7fH+HuXEL8lb36axOKIr3zIEF9l5HPN5XFMqhzyPNkO5BN6pF.A0FZwPFWP29Z3LgQJpS.LVQBP3w5BylASkACkspRD3eEcHGFyKQJV0vQaVgcdLFdjEn63mCS9MiZ+u3SvEV2tNesAPpYI8anO78+SG7yblbuBDUpFga97Q3zyHXDAip8I4yuYn73xC2aLEZ+QV39hBcsLU5cWl2D807QM.v5C6suBsVcvXCJ9CioZAxcXk5+4JpO9.uvkn4cyhwaBU9l036eHmAj6qL0KdeDFzYdPkqf9uqqaOst3WYcTjzu2j8wYlfOhkJ+B3i4ujhO2Z6f.pubjCNm0Nm+Kyajnr4mWa9O0xE5gn5RnL9uR8L4G7tlBiHxnBD7ts2vzeeZeCSIS8aX5PeIX9Sf1jovI4UdwGtz9Qm.kwoks1oov8cou3XLaVldaNbi9Iw5cOcGHHmnNt3KDPUVrYedFqx84u4aKYtoqM0G3EWM28tWb0+ErY2zrjO9EZe7is1b2NtGmuIW82vQj3b7IzpUv6yY7jdbVje4z6wToHJLjJJ6wSLL1TJg6e0NSbckp9NTe35X2jpV3wo7bJ3ZkIiS2O1xMjv+3urgKLZck8d+3e8XJLWTZkcSa6ygTB8NB629q4qxaY81JM9bKcPRT60u+cHv7E9mNKb+yA+LKU5+9J98EV4Ei2aAv4sx2abeEBu04Pl8+smC4XdlDtgCbaHQDNr4AY8cgi+8o4WyAuCf4L3Q35maTL8rKk0U8v+D9jyrI9rYNylEL+OhM564K3W3quI.1e7STTf3lo9pFpYsO9Lo432enObP9E99UWpwT7Q2UEW9tp3J2UEe7cUwV2UEW8tp3ZeXEw4r1LSx6q2ZZXr+Qaq+RrLG9ErYNqw+BzCBbcE
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        36

                        Online

                        1.8k

                        Users

                        12.1k

                        Topics

                        105.0k

                        Posts