Forum
    • Categories
    • Register
    • Login

    Optimal Midi Architecture

    Scheduled Pinned Locked Moved General Questions
    25 Posts 5 Posters 54 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.
    • B
      Bart @David Healey
      last edited by

      @David-Healey

      Oh my goodness I feel so dumb,,, you know what..... I've never seen that Interface tab in the popup module for script processors, because I only ever click the open in workspace icon, or jump straight to the midi callback tabs..

      You're right, they're the exact same thing! 👈

      Hise is AWESOME!

      But I still don't know the answers to questions at the top of this thread..
      Do you think @ulrik may know some things about midi and automation sample accurate playback and optimal data management. (without using the Midi Player Module)

      HISEnbergH 1 Reply Last reply Reply Quote 0
      • B
        Bart @Christoph Hart
        last edited by Bart

        @Christoph-Hart

        Don't know if MIDI Players can be dynamically added and removed via the final exported plugin
        Don't think it handles parameter automations
        Don't think they can playback and display more than one Sequence and or Track at a time
        Couldn't get them to output MIDI to anything other than MIDI channel 1,
        Using the MIDI Channel Setter Module would be fine, but couldn't get it working with stuck notes
        MIDI Player doesn't seem to immediately update it's Sequence and Track when changing them

        Would be great if a single MIDI Player could manage everything:

        Sample accurate playback for MIDI events (already does) and automations (doesn't do)
        MIDI 2.0 per note parameter modulation (Hise Events may already be capable??)
        Manage parameter automations with sample rate accuracy and MIDI 2.0 resolution
        Playback more than one Sequence and or Track together from the single MIDI Player

        So basically a single MIDI Player Module that handles it all, and then you can utilize the Floating Tiles and custom Piano Roll Panels to view any of the content within the one MIDI Player Module.
        So Floating Tile 1 might display Sequence 5 Track 2, while scripted Panel displays piano roll for Sequence 10 Tracks 1 2 3 4 all from the one MIDI Player.

        Having the option to use a single MIDI Player would then help declutter plugins when many MIDI tracks are needed, but not necessarily wanted clogging up the module tree.

        More things I'm sure 😁

        A single MIDI Player that can handle it all optimally and accurately, something like that 👈

        1 Reply Last reply Reply Quote 0
        • HISEnbergH
          HISEnberg @Bart
          last edited by HISEnberg

          @Bart Sounds to me like the Midi Player is exactly what you need here as Christoph suggests. The only aspect really missing is CC control, but you can manage that with other custom MIDI processors.

          I had a project a few years back attempting to create a full MIDI browser and piano roll (credits go to @ustk here). It is A LOT of scripting. You can in fact display many MIDI tracks (including those not used) at any time in a panel. HISE doesn't support MIDI 2.0 yet (as far as I am aware, @Christoph-Hart is that on your radar btw?)

          You're welcome to poke around the project. Apologies it is quite a mess as the project was abandoned early on. The tools you mention, isn't that the purpose of using a DAW?

          HiseSnippet 20417.3oc681EbibjsdffRBiDfjZ0Zl4d26t1w5R7NiLP2ffnv+noZ0DjDraNM+AhfcK0WFz8TDn.P0rPUPUUf+zZ3czMr8ZuQb209QOuMO4m8i1OY4vwtQru4M76NlG7aaDdmW1m1H16lmLqexr9CE.A5grEolAMPUYdxSdxSdxu7jmLSwyMDU5H14k5JRCGJZDK1BuaSM01h55pZwVH4AWLTL1BeT7VWnXze89BRJw1ZiXK7gwaJInntuprbr0tXnfttXmXKrv69XHAKj38hg+6O9n0DjETZK57nXwdtpTawskFHY37zlq9TIY4ME5Hdfz.pTWb0sZqprtpr5HDy7twyEanP6SD5Itq.jr2IdrmHn2O1B2KtP6B74xUrbmBGKHbbm70J1UrP4xE4KzsVthB0DJmqV4bE4isvOoQGICUsVFBFh5wV38VSsyEs5qdlBo.dtjtzwxhvO3i0BUxjGuopbGnJBOM158kj6XKkzQxr6PIydWhL6mGeGoNR1O2Q1cW7K3bxAs.bg2gk8dWF1iml8xQwd9vRKPwRuGgk9z3sZqIMzv4Mj1xsTLD05JfZmnYERZi8N6mH95pnTnXjcfvIhapg9gcNRwmiOWFtJ4xkdkjIShUSx1Qrqn15BxxGiZszSYnMRD8VDQzUkEy1VVTPKEjbIk1xi5HlZwMDQOTSvPBkjruReQ3kKur8qaJnHJiDfJn+w581urgxohxpCEsdAU9LyBN6dxmrPWu4XOi9hZs5KY38U6LR1PpMghtoUSrJ4oR8DPMcteIzZull5Y5h99pmJdwwpBZcrp2ND0pGl0aRPyNaKz8ktyJpuhtA2oBZbCUjeIP7MjzGJKbgN2C4rZC6IZTWVdc0ACUUP+VO0htRrIWHKoHx0cjRanUgafy6atepdZBC6K0VOCWaK5jgCdmn1VHqImmN42kjC8mU5x1E08FUpoxcdNy+PEBjB7GxpsEjwEQSLMPb6N1+P+PJBezJzYPVBUceHUFgJ2tpFh6K11PPomLxNitQpCQJn4nXUHUesTGi9oR65oOQTpWeiToOhl6j5xkhpHjzaLXnwEoRy8vGxki6y+bBejUVTomQetujKWZb1HR.5pmBvZH9kOekUb+RgyMeYNmWY+ktpZboTf2KoPJsz1uyoXbnFjzcGM.QM3aGxezJLIxgS1Q.0aE8yTlOJiUVS6JG1rGIGBmmx7Q9kiK8VCb3q8QsKLDhOiM4Wxh0R6V9LD5BSZcP4021L2YQ3TAIYAjsxVnwLfRjlFKSjmDl49b7dxM7V6xylWKlwMYuGWtrkSOCZyT0j5IoHH+hfZ0r3KsABxRuVrSSUnWcJm74H8PUO6ZmeDQSbf.Zv9Njxhlf2iKEsXZIJ4fKUBleX2OWWzfLZMpm9lalK+lUxW1UFYrIru5H.8gc+0TGhq64NJiCSRTwNL+QYn3FzO3ylyiR2ktMpLDKkXsP.eCFYBUgk.iantx2yWqCqjLfJG4ezydFZjBQ2IqilvYaiLdlBU1Y3vejKat.rzXUMtLYRrFiD1D.mD2W3wFtoEFzKu+8sLvpI1inWC52tR+gRGQYECmprcDLDxRYOEkMIOIBUOah.qXfZbLf5g0f.o541xlqQExvYzWRm7omhxTLcIsoUZq7RGkEM9kBRS3.U7H1DMQyj6JkHVbewg.StmhUyHLZeOQKzFHAZR6QuTw8K1C0RijaIPuiy8q51022ACZpgFBVTy2WCnU0BKioTFM3XQsLnAkkQrkUBQHxXg4EOXXdznPaSFCmJgpJaoHYr2PQkfvlFybfeDjvmaxUnjZfAD9SMADJ144RhmMTUyHlDB62GG+zguzBuULLqSifOlMY9IDx7mYRl5i5Ho90BmJhTkGfozch203kVOg2Ko.kjXKrR7keFBcj9xhZJh5FKugn9IFpCWFSOtVBCFJKpub0bU4.3P3u8To1mj8LgSioAM5HwHh0WH9B.MwOogRGqeGycs9Nlr6ZiLLTUv74GF+XCkWtyHCQ9vpuii.PK0jPfVxRcD0LIvIJG+RX9SrD36+c+2y+CQg.IwD.0ywCC7y8l+6ZleDLviUWS8byFq1CN9kjd887Pk+3il1187A0tWaBa20UDzDmKs54ups54ups54c0p+6JOYs5dX.tooU2a0X0osUuPPs5e4D1p2WvXo1xpnYkNWZ5KbUa5KbUa5YIve3u6u6e3j0z6lA9gmMMM8dpFevT2zWLnl9uXJZ5QSsWYtzvW7p1vW7p1vWzce9IzRuGFnxzzv6gJ2cpa3KETCe0Irgusrvv4RidoqZidoqZiNKAVsa2kmrF8RgMvbjaz8Pke9T2nWdV0nOTTq8boQu7UsQu7UsQmk.+9u+28u6e+D0n6gA9Klld5doxT2nWInF8JSXitg5f4RadkqZadkqZa9TR.617nj+w2l6gJ+8m517pA0l+fIEGeegSD0lKM6UupM6UupM6UuhM6UmIM6dnB2T2rWaV0UWSZ9zUu1UsMu1UsMu1UrMu1LoM2CUVbRZy+DFW0jaVMm8iUU5oNCa1+HGO0ja5Z2+HGW0ja5Z29HGe0j6pn5.NqI2z1z+ILdqwCY9ESRa+ciy7rqwNpKQbxOrYwIOq4m9rVX5yZwH.a2GEkeNVQogxo0MLDZeB3vYWsN+k+1+aQhR+YrTZawSEkmReUdGKR8DU4Ntow+7+yqFEZ7IVzXCw1BWvRje++w+C+yhDQ9TKhzZjtgGWm9q69udseXhHy9hxhB5d7A7+0+UqNER30GocpKR8G9p+s+WlrlcrzwGJMgixsCsvI5JueJwTIteMrfESAItKlD1wx.+DzMfhJ2gPEYgKfEBZ55JQzZerlTmVRuVLL7QAyG+bh.QVZHPmFJvBAeUpQ.U1U7bioqs0gFM0DOc5nwGaKYE03u5jH+Uol.sssPiAMcz3O2lFlQay5fSi8gVOaqMfQyhsvBlKMVSM0ghZFRvJwsvFhmJ0VjDvTIhaNBWrE9.6HlI1BuOgG9XSdXqAB8DwrvGDG+c9XmSWfWP+iyfkV19A+K+WrZe7JAa+j+v+zU6JIaFfa+Ew+tl6u2upw5G7xM2a6MZr+kG2K6Pkdf7vlaRvxM30N0jafkDdsdWMtw.odZEAdIiyWtRkJ44KESxPb.4w4A.Q4KwWtT07Eyki5MtdQjX5ODyz0GoIDrT7Eqxx2+9+Wcy249aV0ECVLekp70xkqpaFrPtREJVpPAdjpKcv0AZG1raRV1cagiskw3uSyq+gWuJEudfKd86O0MuhRRWjdH1nj8y9BrbO1B+8hat95blqGKGXGlaHnwMTPCwbTbIsrCHIQIJQbMwdijEzXZ.9jIXEfOmNhLCocnom1gumtcfzLfDz7EpVoTri64iZkdaX41WSP6f9HfiHPlntj+j34ykMWLAYodJCvL+GD+XUT+9AwDFYn9DjEdRSFSSdh3777UKVkOV.ZvmhpvVwNvK.N9U09+6+s0++8+6GYqF3n7wnL7QAo69yvxePrAFVPC4hF4I.c36dwOvJ6927+hO5vdZgYaWhRWSV4B429J4kUaehUDttvGRUlePPU26XWcUX6Afl7wEz+fsl9C+sd5A7Mdqo9IKEjkUOyNtRAVZcYjVhN2dJxnBLIsfZBiLAGle0Wwx7Cshkhsvn42VEFqf2amOWRCW8565SudmlkBPWC9J774qTNWAdpFnDwKUpFx5YoXQyNLXlqP0hEymOl6Nd0JVqbk70JwXF3CiTHQDPS62W2USKx7f6pYwUGmjhXn6ciui6QN3KjqbE9JEJ6sRhpKnJewZTRJyGmiGIBmnpHInMBR6c2YYUrkqpHe0pEqTqX47E7VEQuIeQzacUEqTMe9hH8Dlp3mFovJgpJtAcU7KcWE2vSUb2wVEcqsYOZKot+Shi2Z.CT6XBqpsDLD5.5sKvK9gABLlK0MDGRMr3u+286928H8Qc6JgRU73bcVCk+NcjEsrh6j27+fjdS4Q8jTZJngFEzPTiXYaH6CIiP9AXlaId+FfL7Hs4b59yugEowiiXASIp42CQZ9hUcIMwyTwRZ9tw2NPYYLFwRfiF7Si6J.DYjNWD1HB+geqOVGiReJerGRyq2wvbmXP30MkUE.mkc.BesyX.XNFMA.Z1826hcMmmvAlPlfrr2ohZPXOhq+LCnxiLXi5W6SymGCyVc0KWfuT4x4igmWxB6FGhvxEa5LvyhOfaQmHfjewLv6wQUI5M4v+ZSUXvwuVU6DcHvjQOuqfrtXxKcMRzp9IqcIK8VCJv77w0z3i0WuHmuSb4ii.5gX1FP.OIRCB7mDWVrqQL20luzGzz4bCB+vwpdMN7yANAlOwFDNDUlLUr+Qg0I.0LL4cBBGQDy7Y7oQIJQAHEvneMK6iMuDegjdlF42+Uq5sQAzkPLXw37KkOYgkJlrzRkSVYopIqsDetj77KwmOIegk3KljuzR7kSxWYI9pI4qsTdK6cuS7wp3MRWb8Q5nIFzTc3ngVQD6jBkMef3cN75OT17SJT17iQpl+OcPYqVCg1oVYeLkVqR4ZnhXhgxledBkM+0Bnr4mmPYyO2gx9IQJVYmiPYyesCJ6DhJM+7DUZ9a5nRyOOQkleliJM+MFTo4udiJM+TfJM+XQk99waA6Ig2TvRyOVXoePzfkledBKM+L.3Y9aR.OyOi.dVHH8MDPtq8.OKLo.OKLFoZg2l.dVXdB7rv0BfmElm.OKbs.3Yg4IvyB2zAdVXdB7rvMcfmElm.OKLyAdV3FCvyBWuAdVXJ.dVXr.OuSbbzszg6IR8ELdSg+rvrB+Yg4I9yBy.7mEtIg+rvLB+YwfT6905W+weVbRweNtNtEeaB+Yw4I9yhWKveVbdh+r30B7mEmm3OKdSG+Yw4I9yh2zweVbdh+r3LG+YwaL3OKd8F+Ywo.+Ywwh+7ihCv3dyh9r3rB8Yw4I5yhy.zmEuIg9r3LB8YofT5Pc+eCg9LwTi9rzjh9rzXjpkdaB8Yo4I5yRWKPeVZdh9rz0BzmklmnOKcSG8Yo4I5yR2zQeVZdh9rTTPeFMjOkhPfHttrvv2TXdJMqv7TZdh4ozL.ySoaRXdJMVLOIhDlmxAotg5E7lAyC6dda5A.UdRA.UdLh3xuMA.p77D.T4qE.fJOOA.U9ZA.nxyS.PkuoC.p77D.T4a5.fJOOA.Ud1A.pbD..0TTq8aJ.PkmU.fJOOA.UdF..p7MI.PkmQ.fpDj51c+GeCC.TkIE.TkwHhq71D.nJyS.PUtV..px7D.TkqE.fpLOA.U4lN.nJyS.PUtoC.px7D.TkYG.nJiE.T73G.G8HuYv+TYVg+ox7D+SkY.9mJ2jv+TYFg+oZPZa49e5FF9mpSJ9mpiQDW8sI7OUmm3epds.+S04I9mpWKv+Tcdh+o5Mc7OUmm3epdSG+S04I9mpyN7OUGK9mOHdK7A39aJHPUmUPfpNOg.UcF.Ap5MIHPUmQPfpEjBWy+mugAAp1jBAp1XDw0daBBTs4IDnZWKf.UadBAp10BHP0lmPfpcSGBTs4IDnZ2zg.UadBAp1rCBTsH3Bn8kdi4BnZyJ7O0lm3epMCv+T6lD9mZSO9mOg4XKKWPpaC+au9C.x80FSDQ.kz5fzMmWoraoyMdLPL2YMyVPPtkU+oCEDy0pyrEFTPUx273fXt4els.gbWIuYhDh9hMZ1BEZBkOWyvB8y7b53laFCFxuNISKZnOg4rYMWDNFr1QRuc14HfH20toFQzcYOdVyMigD4lOmJLQtuZutdCJxcUdp2MXerMgp2oCUkN22ReTX8aiFfGWMdWrpaDP+OXh.JC2STOUTi6y41PSnWOjD2iR6VqFRuFG9+u.yFvskDbGcXyJLGAv0npJ+vW6VEyy8mw+o+lUmoWxCi6ps3CC29kyMAkJa0J6ODx0JiuUKOMhAJ8nE.Qth5Q7rv6ErJnyE3yOMtzfdLUyHe443asz4p74W54p7AURzED9d8I.UaV49DLfCHF86RtX3Yz60fQqFox00kEz26t9tpXPJq9oiMA2FgQ99KxOVJp2eG9IvboZwyW100GTh37kpTKWg7wz6qd11HEVcuF7RF9XQ9Zn36OkctASQCz2+234134aW0cmGO8SBpE7mDoIA3b8LFXal6A6EV0q4VMAT6+i0TggObfiMPEOzhFpsDNEAZpJo.CP9DAkNlOE0caftAhmH8nW3uu26OKCkFJm5eeMOMG5sEjE2TnMXFvlO9COJ1DIJnOIKQU1IUTLdtbVIr9ezOgUSIi18whqYhvf9XU56+1qwBi+A9IL1TR1PTa1IMX1l+u9Zrz3umuRiyipjHvKLqjXFF0gL52+N9LYn+QQPR3F82mDutrLmyC7EDAssPlaPIWdWnPsR0JVtH5SOyJsZwRExmOenGBbNxiO0lsQxjmpbLyUuVV5QD5Fg573FbDMq2oc3.eEWL2Qh2cxtRaCZ3BtUsh4.RpMmQ+OINjsXzyg+e9+4PmCe73bn49Dvr3W8egWwo21BWcIetmgWe9pzNWhG6mP9Bk7KzcyWfuZtJdtEEqVpXU31HrbDudm7+R88bZV5BZSFVSWGmPuNOZ14snHHNc4Olw5SnMlSR26F064XJw5Iq5iN5OINjteTpgd2HeOOeN8gJnOBw2ONNg21OeLWz0A4SHK4Xh3lI85bu7qEZndu8uo5n+c9KaMS5OJ0RuyDdAnGznQ+hUCRw5OP448eooL9OO9tnojKHiDncf8eJhU.noVFMvkUrIVr8FbXl6LYW16Au3.+nRpkXLW7xLyt9PZDxa514pc7YJTDAwciS7iBm4EGdLuqQQwUmXWykbL94FUFGnN7Jb4bipuyTmCy3hzDiKh9bOJzP1Ys4c0GbcvG9q861MlVvXApBJI+lI622dUeD29vveJYkosanBty0tq5e4PXkO1RMAHRrwv8hJBGKKBK321hBZJDwtGQfWoTrH0FbWbUpojfh59pxrW+3eOaMJRR4OJNlVb.whBWN9liOHPd+NDdWV3BP5DXaQQaT0sLP7YDXpwTSi4MrVB7nH8ignZ4.UUCYCogAdqr7O0kNM2eqOQy.ygU5chiHJPS2GToIhWnb0hEywtMG9v3UqjuHeIjIyvmZ9GEuPwB0JjuFxtarM8X8J0pvylx0JEZk7tVHS3EAeNuWD71KXuOWg0luYg2IJ1SIK.ocmgHaQ82+OY1vkA3IFJ4Fycqd7nH5+yXqSdk+uHr0pNmGW+G6uNn0p1QtMNejMAGomOU7hiUEz5D4KEdu3WQb73XnwViBY7AOSy+wZRcv8ZB5TH8u1zfzGFGRJGNsDTVeX7CDQkSqKTZyN6p79NIff.vs3pSTEJXKr+bx.dxRCANsAdjHpp0ObL65oO1VhujsluMRadxj82IJlaifNCiszjwsyAaLcUsXkx0J3Zk59v3EKkuVUDFSdei.NhiccuVy3S.52o4Bji.ZT480frZwGvUnTVxA8rY37rWaCgSE2czfiE0rNrmwuea0yPYC8nxjz+DIxOqVD+SRjR7XMgg8kZqyjyMD6JLR1n9vgH.DBJNGhz32tlLpK.hT6ijjpvwNc1x3mefZudHbGH8RljCFiLCQCzy4wO6Y5hOWD7aOUwanMRz5kaJKXzx3BYWTpYCK4t6m2xPPyvoTxa87FJcnJ6xdNDr8Y0Mhf4p.CslDg6dcPTXAz2QU6O9OY0PFp3GzdSMTwBeXzGd.eFjKXXHpo.cLCrii6gm+9u0csg6rfb4.szZRFf38GeivykDOyU3wvv1+0iks8CdqW1NZPpIvRA43tfwtfb16AtmV4t9f4yB4JlRR56nBwDmf1EDD.yAVtol3oAhNahXYLktprbvyE6isA+GRK+220MGuUfbLvc9sLmqGEMi.MgDsJ.ysn4tScEH+bnBLtoeADoEZDqnCP6qBDV.ZFZBA6FofzQBlC+ys4Py7gupqBrG4DvouO4VyZJYUuNg5mgiSVHaaZFnW7AF0yGDk1SKA5IRHHVicPxhqFItjr2lZJzSbKktpAsCMPhMRo+Iwgjxwyo1kqXV2Nsvmvf8Wr5rRd9ems7zLasPPeZ2OPY5uX7gIwWZu.xlzJJ7p8c8QrEduCLiSWDjJzLmQCQifxHoDaqMfGBwfu4K.n7qcwPAccXldK7taAPUQP7ufF5+BuCYXdDRICbnhslZmKZ0W8LEhkrmS2eF1KEV8r6KI2wlqziEYV7SiiifG+4w2wGdLVr4BO9tGX1j2naWDlSGF78hu42vH2lKE+Oyp3wQVHIF.wEuS.ARyC3sVgsH4+ziVSPF.fSKkdtpTawskFHQoqMb0mJIKuoPGQ75AQ0Ocq1pJzyq.lp3Nj0kyV2.2PcfFBIEDCxTu.3Pxj35PyA6qpZrqpAEMVcUhCJw3vQjmI0hmJpoyRgMsiN0UhuLBvul9xHnjh5FKugn9IFpCWFKt3HTUe4p4ph8PH9aOEYhJ6YBmRVgu3K.DzLbzguJiXZLeP+.zDAr94BuKay76EbyLOUy7lpxcr7jh2l7EdOupb+b78Cj8yo68BufyIGyEsvEVfhkdeBK8Qwct8fvrxGS8.VMw0GoAlqZI9siDYz.+iOx7UXMlwptfTuPTGfo2ZnH6Kb2R7tQqkvmNbVCDhq1V+.kZnJ9NwMuNk9+LNeo7YUNn7SqtNegrG735Yexvu54Epq0XsSyWpLZt6418UO4YO84c1RIWo941K2ye9KJe9AOu6f8W+48yu19UZyWYa9WOTBoe80Ba7Uau21mrV6seF+Eke0qun0S0Ome+m95cFp85Rm9MEq7Wskd0dmsYVsJ0unkR201O6Fx670UFr9AMW6YYW6U827j1q+Mmt0VuPoXoGW4qWe+re8qe9W0buN+pxO4UekRA9y2ZWgcJV1Xa4CpHjs+dupJ+NG2riVgmWoUVptQK4IN41YmlK0Xml4WZMU0AqILrvR0Jc7vAYG.C2s.XlnkTOEAiQZv5Hu6HTZPhR6Vm6t5tpn9WBLAW2cWcCQE+d71N84b5jusU+NmVbr2pfG7aG9u4YuyO70qdCX.Ol9QeBgGe+30exFs1GyZeX7FJmJJirky1AZGUE0g8UUjZyZMzPSpWOQMZd02J.0RYa93+vW8u8+xibVpVZxZFiZlO4u729e6QTwkEcBwAJDUrBPh4EyHv3+3+g+YqZE7FjG8q69udsevJlCrx1+0+Uq1nsp6QQl.Ad38lWHdDUJ9XyPyiCOn20OHP2wh+HsBW+XvOhDxSWWkeehUjDcsU.dGq3w45pHLTT3u6a0nvYra+AV3eZIAHJerUw+93wUBCCdrXaHJKvHg9Z14k9hU8Ak9VnwDzLZpJKn4V9NqP8vf4Lbk.nJwcsd5h+z3Xw70clD2ze8lIuKrmy+SDKZtyg2Q.AxAlPFBVYKzTOaKZtJL5vjvdGvGijemyZRYsDU5f+weG5OqczK76ELeIu0KeiTFSxD3y+1vD3aM0Sfu1DNAdcEAMwam99re564i1z2+4qd8d56wCZ566EuTIyYu2+om0Ha1c9pF+Uupd1rY+lrYqmsIZls625fsx+WkEdzwOoYye0Fun9ZOt6Z0OPpYV0lupwSNN6uZilYqb+mlkdxyeV.pvDU0HNg4+3ilqSX1ZCmEKHwy1wKUvT7reySPhmC1pYqC5s4K.wwlHwS1MNsnxq23YmquI5Im9qxlcquBKR1eilMVqQ16e+0.w3upUwsnjMYbIa1V5XMAsKVdcg18Q8qexVsZrrAhIuoHlleZQEijgPjXR5lkh07Shcqt0OVzsdaxKe4myd4ybNmi2Ke.5vn3kuX+BFu7gioHVu7Yxyrd4CQ8a8x2sd46Vu7cqW9tNuV6Sk6.dmvbGv6dkbGPg2FbGPyo1c.e4D5Nf9BFK0FBMpN25SfYuOAJ7VtOAdQ7xVS5878yglW6q9UgMo2l6r9Za9pFe0y6dZ8u4qx9rmbP1rpe0l0e88Gk8Tz6OXO4FkadhRkMnzn+GDfFMRy8lxDSdSHldaaxbyI+orbDESoxm9VOO8VkB0ahNg4iteBtFZ95sIuDT3VuDbqWBt0KA25kfa8RvMVuD7dg4kf3WIuDT7G2dI3KlBuDfDaJ25ifYuOBJFMeDD6ZtOBdmaWUtaWGyamgRzmgRwamgxsyP41Ynb6LTtcFJ2XmgxOIrYn79WoYnT5G2yPo5DNCk1xBCuc1Iy9YmTJhyNI105Ym7VEvwR2Bb7Vfi2Bb7Vfi2Bb7FKvwOHLfiItR.GK+1.vw0diAbDIwZeKvwYOvwx2Bb75Fvwx2Bb7Vfi2Bb7Vfi2Bb7FKvwjgAb7CuR.Gq71.vwcmZfiUlPfiFpCtE23rG2XkawMdcC2XkawMdKtwawMdKtwawMdiE23GEFtwO9Jgar5OtWo5GLoG.W8ENQT6VniydniUuE530MniUuE53sPGuE53sPGuE53MVni2ILniexUB5XsebCcbRc4nlzstbbNfar1s3Futgar1s3FuE23s3FuE23s3Fuwha7tgga7SmJbiIstz9x8iafiS5g9+wpJ8TuE53rA53cnuy9xcK1wqGXG+HmqAtb2Bd7Vvi2Bd7Vvi2Bd7FK3weZXfG+Yi6Ro5y7sLt6U5Rox7k4oyYdWur.cNK35kEoyYQWurDcNK45kkoyYYWurBcNq35kUoyYUWurFcNq4VHvHh38HiXERtkR7LhId2xIdFAEuaIEOinh2srhmQXwaKsPHZaqo9RD1cCMUYXDrO.+DjloBF1bh36.+liO1oBxiXF3FNyadY61rjxSFyOsYrvzlwhSaFKMsYr7zlwJSaFqN9LBXUqOxPc.w3IB7ZyFjCKoErAOuv6FSbvwhcPS4nUaMogFfFv62Ee.K8Nv+PJ0OEFrUVTCSI8ruROFnvfflG6cdZx3KuL2R99WRzad716sV8s4dd882p9Za2nUxvRMhp5FbcQzdewdHq9ZbOjqgROIEwrxpBc1D8h55oVz88FMjA8k2A9TTCwjKYl6rFFcWLC2hZjetX5URlLzxma8mTe2carcKtl0ebiPRJgQOEwfmN7kV1KQL65DwR1dhFqqNXnpB5GoVjJM.O3j4gJx32.YCMphnVfjvSJ8mPdYi5xx1jQ2gNnDhn.mOjndmNikKPoAKLcx8IJG+RXdNgW5Vohk4gm1THBYEkH1bdrgxK2YDZr1PypUp7lWXL3wmWHUr4sqwK+ZgSE6ppMH7rSkPVJHKz8kOUQ8Xpb2VSDAaXa01BxnI3dRckNaJJJmxS1VajggpRjxX3J6M184M1dulMhTmSllK8Whl33XatPowkVp.Rs6wZpiFNdkTOYVT4TyrxgxbqKTL5alUarinrZMgV2ZXpGaWtGdz3DLGrWSt02a2Cpu0tM1ORxDrJFbq7FXWG6T3iVH12S.zwvyNU57RjlRBJpfmqBmFNIyGRHKbA1iQgR.yDAYOTgHXAMZJTPyMT2fZls8M9PMB4M4dsGBbIAOdnjxIYKN1dL6r2FOKpcSbb3EVoyVg044oVjxoXKlNSxD3+3FSRyG8jVH5IsXzSZonmzxQOoUhdRqF8jVK5IkO2hoQlFLSr8+FtkhF6zbu8qu+K3db88WKpXFnFUHX0b5D4U4t9HMgv6hfSg+YbughJiOy3TwR.ruxGOqylLDIbKSC3eiEyCxy6X6hRVXmb2Gfc9Pu+AM.anIzqGfvkC6qSbOW0Q5hbBJc3fQc04VWPVF7UL2my0DY.wfiLaXwjAP0j.6nOTnsHmECk76RhFJhK3Fby2tc8McFgEUdjEIQOBY1QvuMh0v2i2OGP8iGALe1bq3JUqgpTsjdsnUhPopf2Tsojrr4D.33HoheEeJuwkFnzzoSjcZ7isLPycnMopiSZty2byFqmKW87atoeT9IpmJpYmdyLTN25k7lbg1FRmJRRKuE6l67ZkJyWN2FE7O4TzmmP80WeS7etSujhmB.ROeNZxGMUALhOLPDIkdQHKRJxnFBttiTZCy7hSWUy.o9gUgSkFmDhRH7mL..jSYz.ajNCEzzE2B0izBxVVT2pdF84VlqZ5UryHpWJWJXT+bqvIw8ENj.8y6e+z1oyonbJtdPBMAUQ+VLMeEgluBQypn+glVdoG7GlZYGNRuuMKenD283pxcetWcTZ1h3Rle4.wijeLonxAI0W5zXwJKmjVwGKqdLpp2DPy5x5wj2jZh0solm1SvPlngn1.H8D4rjRGwyS5SKvVvKPR6k3CtYkB8sodPnsuRc4RYzWBoG8P5rdnzQQpUzhijVwy6OFMekSBpsz4a.CPSJn1wVzZhFizTbnjKIyYnhGpAvnSXimonzGHIoOURdhnTu9FoRysDGu6zcJU5vVW8RJ0tc0EMPoiwJr6TIaYHGkPVi5tS4PgNcPVIPoqj6WcrJZFfCZZmf74bmBcYUfURcFpxjG0AxjXoQ878Psyc+fNG6otc7qb0G2zXCLnH7lEIqVD3rEXU5f+Eu7LvWLWHD3qlq3vhdHDzaeOsNXGfbXtLb4yvUHCWwLbk7Iov32OjpC+gNZIdR8POySto.qhvvrsQLkF8iX5BpIbFL2S7P9bsgEujJq5P..rq3YsFcLltlx4LHEqkraAWxUC1Rb4xVhp3ftI3Fr6wc5g4NBYqyLmNI4zC4Oh6KQ+Swi3dj8S6.tOHUe11X2EWZzqRwidJPizNDm6ASMcJRSGZI42NRnC3jv1Gnl5bjtVdphaYnQchXVmuW9nzTkXFtyyf3YJIHR+jX0+P7aNJsWU55npHsh84b2mRpm+H5pAzIEpAQuTXoVAf0yuxrV9ZVUvTC8wRPsJXo+Rz7CRxSxA5S6hoBRpNQxRJE0h9q.bUkbkNJRUnRGEZOLbkZR5Axvegjwi7yHAdbgNBFBYQjQrsAXbB8M2saBHqO.lLXHj0TGozQOEuejqW1iE6IorMd5oFZiDoRTurnYFIWWVNk0fQoV73dDfoKllIg5vLxfmSkTICwA9jXlQbolcPPHCvD+wZBcjPVUgzm5P+KiLb4H+uyykifsF+y92KakRtQyQpZDinYvBKZva9JmBuJlmoNBUMpI0j1UYiTyNitry3LPcXiKXzWEMqxigIBwTRzSMJHona3YkbgFyerUR.NHGMt9vrX3dDivv0rmRy8.Ould1Xo8BPyDkw4DEYDhOXTokLQ3DXxuvI47gkbLc2AIrypInzSL0wn9b1V1OyNifITmdh9vk3BjlNWPQm9APGOVc8RWu3YwplMjkkFpKl5Pfegxxg7ze+nwQQ+f55QwRV3XzbKNqunBGtIF3bbSs4B0lzMJcZ0gOiEoreSaSeT2tRmuh2t0d5PYHdtgO1Lry.rlborWgsLb74ckJKzrZBCf.wD0lgQMdnKt9H+xE7Z6FYvlYJL5uCsgK5gJGQgP2Ei3VLg5HU.00gHJPkxhbcVaQTmEpGLPeQ+XKRqyCopT2mawGfR+8Ib78CP9BVYpKK0SQryAHwZJLcxfA7hAGf92yPXeygFcaw1HaqZhcVCqrtXXSjcxluJwQX1t+5JOw0cZG4IthLTpK1gCkWi9XnzPvcRlaIQIN8OVlZ6UZ9oSwbS0EwqtZ9b4lQyxzerCS4r0grJdJLCMRGyO+y49LxuQcX5EtgL78vtNLWW9b4xkMmecWQCJsUmyCxXv.nCw2fH.oHCOcuvNcW3WIYzQk6gdADtxLXfeSChRc69MVVDENVOksK9PEMYf5z3A6LepYcJsOCJARcB49BKoXZOIxKef8MpsPGSfU7MQDot+cStzySDkQVkbXIj5yDxSPdskJlBCLLDWxhKPyj7K3XRIgSCL4o8s7FWUjoRYkPTadDnF+3DXWF93ZAqvqINDbWYJOCmvvseFUmwf584sPWheRKPeL.zVVp8InwH9M+FtwaAvS1hVenmpbL1LotOts1ZDSDVNXLJhulfNrziXgMyE.wip2oBxX.N+9OFV35+10JK2mC3jjbfCsqp1.AYoWK1IkeVC71izoE9TKokcYDli3Y9g9YPH75Ah53ZnZCgkbtGDXGcRqtdeotFandlhi5hFLD45f1f+8y9t.684eC1gkOB.45VB5V1fRFBzmiF62rLLha5UlhRqceXxLcREPluLPCMyl5atnUeyMapu7QqzvFlcJsWLkkVtwJcCmUmplFePDZqgy6uFd.bP9nIrxOAMMAWRiotFVsJej62Ni5iVIZBlJyFc1J+IuOZgnUeKLapuElCJ9ElHE+hQq9VbBrRDbIcET7KNQ0pRQqVU5p2ctzzTqt7p6vAbzNrNwgU1dbXJ7zfpBNLdPnOzMoVp1VAaTFNrbx+XgHP+G3uqJNquDBqBwgEsIAVnNF3m41dDlFLHhylLLzaQ2MDtiQBplODvMKBDgvl.Lsxj4Ce0Q3oPYIkhJHxw4diP5AD1LTb4afOyquA7gvyv.AXxVxX6E68gNwbbnKwL1AVrdRJjjKXfTmN1Ln0OLelBYJloTlxYpjoZlZ9SbemtBsNbcccodltUybm7vpidBQK6DRj3bRv5jVUdv1TcKNMkCOe3IGkgyzIrg3qUJ1ld9HmL14i3zpiIgsIxTTTjdw6wIxk0sIwTEkjiwMoVlqPF.T4ZHfrKfedDH5D4axuisl3z6GUuwQVjo+YSYYLLUufcfPncwohyHJosaQICCfcUrkfvgCvCFEYtve1.7ZrW1XJa37cbFncqtrrY3dJoPZDer8T2mrFwvLr+cIuBFz+t.BhMhQbxJxfqX1sCdGMzmEG3xj9DKsePbYgtLQQ6eyuHtqMWheaqkntwTXB62oH+PsOej2WKO7gAD8uq8rCNXuca8.tcd1AM39btV6s8dbAmCmsTSVMwdR5Hz.aZopuHrhMGn1qmrHIIKlgyomXFvQaoMCCXbjkR78VVXEjWw9ovXoBnIe57jKvOgm5ImgeRdpmzG+jBTOAbxV4U3RZ+.I88TLKQLHHXjQdmzCq1hY.z9PRZeDNsTKQN2Cb8DT1SjLADuzvVWGV1yjInWWPGZhZERPVXz8gElSry9hsMPlgkEwAQwE3kxpOZvBbJwzrvFbxf+YfXeMg2fHfvhIS.7+g4NOe9b3+vAywEjfHf9IHXw8QsFBnoUcD2CnxlUjFL9rAa.tIsRfFkPW+Bj0kgHTGckEw5BISf8aJTCRmLw2QXFnMnGjZxB2fZD5ycOtbYKtB489DFE9y9zOAw9TzzohXQx.pKnrwSxMOYM1ymglNV0vKIJW1SU86RFRLe3Gyx1nwJqMMMkLTF0sPOIS3VHdtQR2KUMn.6rH0lEC0RSuCxFCdWgRu3zPaCjo5jfx4vycDNPYSzKbubsVkTF6r5rNs38Nzk3MXp4XGn9O1aOQh8dIfo7XNyw9Cja1Li2ehQNyvXmV+ElAxmt6dqgLOZtWW41t9K16YGDtARXTz.LOtupgf1Esjk5Hp8mByi1OBF9vtqVwbNoEuL61uAVFSasJwtvD+fbxA0EXFd33zJEz+tXNtgRmi5LjloLn0Yv5KNELEC1FpWP+tyvc5KQ8Fn9AZaTLrqjnYsDen4klhoDRSRJpGbQppNt2C9vnxJiM2BmvJTDEmnFJcXRR9r4cmDPx5Pu6ykxNiKQ8BfQrG4wALOcOVjHTuuPG0y7zmM24EMMJa2ekIDaZCQ6mFprQloPhKx2KhrHPh1FMq.sgYeUzE1bN8LMQkL.iVLg7G03dnx4bqxJSPIh62fsGmG+e1439z4.BXO7ONJrZlcIEXMZeoAb8QM33AL8Q9YY50tT.02nUJHyfYyQUTlinAqKirvEiUvk67R1iH4mLidDqoWBg0dqUxt425mv23yVy9KzxLz7skZC6CXbv6YqTiiQ6MPVtfy2NjxMgX7Tp8hJc779ZEn5egIArt6sgdz3dOsU0IcLfNBLEwJrYCBY.rL.mMcTG5wkMD6DRYQwrLYIjxgIKHXLjc0jovxFhHnras9qOBucq1byZ0xkCARj7CxliJAKhPWzg.KDTFgnsLEQvkAWkxXJOv+B8YdrVHAUEUPuAishG+CG9IvxPp0AMjXWNEUCNlE50ZPbJ7UHPlgN.ODlUNYAa814mTVu6HoOD0YvbiYjzxKTVH..j1KhOMBbASxJQD73eg6k6mlrrw0lclfH+dwsoB6L5fHvjte4zR28cQ2vHxhquH8rx8ASXDKU3GzwC2kIcKlO.KRI0PpH..9IY4hQ5iLEFYZKPKwJSLdP5PULaNF6mzf8nXsfv6Y6rh.rjh5HnoBGETjdhKkKa0LbGRrIdDoihWyrIH1PKTxBHMk8vRb2mOGiIQxSrxDeot3+xPrc3NSLOIYhiblBWjGd5RVLp1m5G.LuDACQEFeFxs67Bm5GQNqQ.Ya8mswV6w800ediM2a+cBGRKi2JBZp+8GM3XEAI40DZeROrts+PbS3Z34M2zFdSBpn1m4EXY4DyI6ORNHb1IX4gx4XfHXg0F5ebdSUcIH2La6wD067pQ5jHeYnhrNJ4CMSmMEr2kakMAXu78bbXFDmmbM2c6VDqSIFB7SpEOGwtmaGO1oW4dKS0mCOLw434KlKi8zCvaYER2yoTLAdDN.wj24hvH4L2e1YETLj91Qhm0Gg.DZGWdYBG6cVqBj3g.0QAl1BLORtL34qfpzExfmmBLka.4Er21LmpHVxO40LvhzzLOKmH8L+Jfwp8FBYWPlaffVOvYOZnQaE6zSLoGSpVRDKQw3rnxNocXAzLGSG+c0gKgCSGt1pZJhZAX+0Yx1A3oYKotcH+aJ6o9c9ibB7eXqDFHsVDyPKZosM4MJvdGwmFENTqR.MKI70iJHyC42rR9xYvSIlTmxvwH+0GndhHo1QTsnrii2BK3MyD5KN8lb7MQzNuFBzXLSBQDzwZN8IhT5vrm6lDQwYEOfqU8cZtcCtFar0A6se310wdQ9J4qBD44yxsFrj9Cfi7115beN2wHDLlJqtaLyX6ehL9311MbMW99oYmm+F3wjKf6StunNZRzK2BI2DY8jfox9YKSlQ7Csz16eOrCEs367Y8LuaSbVsQ4wwjkmw4uWd7GT7FgDAs8YMecVTmKKvCPgv.mB3jV3jsoFDH4nLRxUFLCQoWKYzut7v9B1VZNVFMfaF7b9RCLFBzBYeR.ekYhxExx0ZjxIhJbZVmoBXtm7rGhKorhmOT.rYmh..pPNZiXALO2nxbjRB2a07qntrQfJ8zDAWllMOhFbNTAu4QveOOMEcdbgih7boI4fRXULK2diP8J3NV70lKlIdkBfeEfrJ+LRVkCUMwkCVRQ9VzDT1jfmhDH4A4q4onl8Cm.YDNCThnRY4pq0lUYRPq8A8QSKwt2Zt7qP+x8E5fOTPH9jHWI1Wh5zAujfsljZyNdV+f7uPWPquQY+33d.+fou+8DwI.5Hh9mTlEXFtkxCcYPeTI8JAOftsv1i6vPUxpoY5NiKObgkg66tLisTgxlAZNeDlMrMcuo+JpadPs.LJ.dJatB2C8064qSEI4SNnJZUrOEpGoZZJ6oU9a9MTS3L8i73sO2KNV9L79HQHrkGQhk9T4rTdm7yc7om9UnSEFGfUOBWlxCI6PswZ2BSbBn0DEmXuzQYq2dYtrLfflc7n111OxU5JY+vopB1ZwkC1.B4aQy.hMMfJrMMrVIMrEDKxY+vIvBBNCTBiigC76.DFUlMBCTWyLjxwzZ5oSt0zbknnA1x4o1lSO0wb5oi2bJsqmwYHioiFxUjpiPkrTNnsipgiMxbX6.lqIw8fEs.0Shm5QdVjBH8nrAqMAbTFHjKvUivFAz91VnQ5RTO+avO2iuVSeO.oQU3HSXepT+BRpc6lUuo9MhMHFW2.NXEbqZm8gARfOogIUMK25HUMzP+8zTUO0AcI4m9qtVnzrYr+hPWWb4P56R95D14kmlHP+Tx2ySSPmGOI8ew4fRVUKK211th1wax84rWBepg+MDvCt6LcMKuL2m3c49TCka3wMmjlee1SLOJBtSkIC95RTx7y267K5IpPu72QveotmOtA1Ont7.p6E715P6ZL9zCOEMhS87ILk9owaJzSbWgSk5A1JXBXo+Od23IS5M9foOXRCNDg+Na+36DtLtcfOMkHduxf3ukEaYnNbQKsD+hQLpC7ynD8uTIGhNLvYyoxEv97FuF.QlSgmtXHmuaWMFUGIG7kQubkjt4IuwtlOsTfL0+lT74kaXsmInNYsIxfSIWwBKZknU.1J.xScd5FZg3+AN6jWdNm8tis3bNTZCqXrkQAKqoEgoIMPTU6fymWYiYtcpDgz.6thZ5mG5+7oiO49pZMM0yzEY61++Ss3Nm+lTIBDW30O7gyx+vTb881o4d61X2C31uwlM1uwtqiO7NcNprmCEK7edOCiQyx.Mtsxi0j5L1CxXpzBV.7gZOWR7rwc5JSktEIKQK6AEMP9lZhmF5AEsUhbwGVuZWxZ9Ed9gD4S9MOudG64TsE+6WtyGgbm2SsW9XhzwT+qkHZFe8CjR9lZWbDjFX7tsT5pFJgrRjO425VICNJR3GK2XmRyZmlXOyyDUGK8V6AjbqPdu4Ve1IA.5bpwE7M+GYl4dnVx8QR.HrrndDBvA7nBlOxP0PPtkrJ97yxNK2yNorbBHMn3OcQHRLE6Xp+SumevuGivJ3WSU877tA3KWOwSQ8GVWncenT+tKWYtY2Ymms8AasTysq+hF6y05EsNnwNyiRxyIKKdiZefJ0Qi8PmVRmfZEPOQ8BtuD0F.GXGzOyODFoIY2jJveAoxQQoUbR8Tq.ZucYr+VPMndSYXZU9vXg8dJ8UukiOVuoO4DrS2ngcv9RiXHf4Ud5byBIbWUNShy0xrRsXZe4EOBZzLhQ3qZabfJdGvjx0.DoCqQBXh8IUj8TrVy40w6VGqi1tDDviItbt0i5w6u0Fba9rcW+fs1a2VuI5L0ClrLxpknrr4I8mDauHyytFUvMQjiFoeIscNmjngWAF7TA6JqppQHD2x1oNMSxaiJQqSWV+TpbNngnHgGJXGOUAPB6CJ2kssSyPCmUZ1JT2IeR1kdbGRovfj.2ihqcV8Vmz.hf6QyW9kHGR3bRuAQtBaJLI.SRHo3nUL0.8oobcmdvlBB3r2lsoDGYaV8+o6xeOpw0bIjHjxbW8Q+FbWGniL3eYcGBR0ux7RL.Rz1R5NVIHe5dBeTr.YhdtsESJ3AT1vnpP2G1InInivMmD9Et4VVy8tJFx1LiTuIaKPWuDuV7cMo0hOvMwOztfOJiOYDlhPnYJq9ni0Mfk1Ik2riYtfyJti2dcSs3kKl997Y3ldBjc..N2a9S6WcpGdSIhIAppYSN1TdIsQ3Kc9JNl8hVCgxHYYenxk9z+0Jig0kAFWsyNNCzlxLSdLABI7oh3Ez1W7.2mawWtHtKON+YojGLp7l6+FR.82Ik6w3OzpfNJsWseeG1BZCs35rVpjYv9RzbKsvL7KYmCC6LRn+XP8YaXkfT9O3q8YjAjFqCqebzdFTqXvUT.ViOJTXxqizkrKG+T6vToCJUXemxprME5ZSOWd3QWc1yOk3f4nfTqAGhRoQukBL7dpdZBC6K0VOikFZF7HMjg8cqsepzqIu.L5yNzD44VwQluuiOj2gizoh9+NRvmQMPmivfpSXmMHm0lg160SWNmrlkzjYozRNpyR3dC56orUTMD227PS1Wnmn4s4zs4.0cMSONLVz8V9YbDxgOlncAy5BT21FrSl4of68enSAf2zRd0v.4hapS0I1mgcUfZEbvukuhGaJCDN27szyc.WafBA75tcgErYBGg8tifslK7M7NrxU2TKNwNfkLeTFq7l1cVrYORVDNOk4i7MKW5mUOJMAXlAzzBMPqUIrjE64uoyoShnpI0SRQP9EAJSrXNqkTrI9BCLkSFc3KDdX6JguTQSbfvvgh3spgiVDteMaAbOtTNuG2+sX5UBpE0FttsTKOUu.H6KapPhkt2mimrIxJ6ljr+xxxFSLEWspcLE6eh8eachEsvBjYKAHZG3UuyoN.AHq+fP70hr6oC6xZ6UAGsceOf55Vx11hRxo7GvKRF6fxNsKj98DM2gCKhmS.fmIE8jDvMIHjNbpcwuzpbsHCk2+XlVuEkSux7b9yMquE3E78d1Aas67wu29MOyvN.LrZmoCrdqcdLqUeRfOaOSqflM2Ua1S3fzzd7VRw3d9+zp0TLE9XigvEnAXBDSnUp+LjUJ.ndfV0HGK.Vt3wg5z3lgwl8yyVq3GodBwwofeJf74ieTC0HBv7N7iOS5w0VVnLI7mcadwdOPYyPikTEK5ukJVbp9m2BEX0kBv.o+F6bzDxvUHbJD.jR+wRNFdgc2mDfUZmXBniXWgQx38Dumpo0dmyAqJCB0Ld.k5ArYtLrfSwGp4dXF2gXfktJLO9LTb.aLGDQo.Uu.xlYjnYg2LikKGj7w282ASKp+CQM1Y.w1.wyOqY.XLRxx43x+rAaHUvwPp.kgzbN6L6DVSYpG2.4PlVKCnb73nGRt3Obc5lmwyYY9Q9LkBOkfjdiACMtHUZ7rJfUa.yMgBsFzgY.VmIJHowzMbqqWSwPawZSLBZ66kYaXjdOu4YRrvoBRxvMaRK7pw+Plb6Ao4JdYQu3UqlwMUwmcAQ.neDZvFODeBic0.3i2MGTv68fmmVJsDkbHbKZ1MqPPjiLDGUfz9vcjsdgKBQNySbXb7Oi.AY+kPPGsCtRkuiW5vW1aI7nVRatYipv+EwRxRPFgxAeDiXEp1SfLibx5P24iRieYDdfiVIrJTgb9OtP.UHFNz5XcXBjd0v+4sv7cPHFommByOWsgMsnF3DufuAAMj05BlBlVpm6CiD9w3rnDEb1HonhKCG9ibYy4c3F6V9KSO+VA+FOGhZnmTe2M1tw9yo3Dx9FMF6ZL8.mBU3GgezmTUS5rjbeocXeDrKdtjg2wiCI.LBwM3VQFaP12i1T0BHySyT27xg3Pff0CtH.JVu6KdnGu6x501O+y8egjLu8IbQbdJhegKh6EItOyQ567uznliILOTelmo6+7u8TZE+yg4Q6ZBuGZrIB3m9Bxw8UJg+9d00UBgaMwnqy3CXhIUWYtpmLGzQBnKx37VQz7UwXTBCHZaBdk+7bHb6MTbhdlGKIi3RCRGVKdthPBMHcnm9a5IhKcOkO+hcnvtZVFW+xf5BeYHSCE151hWLtwmVWUQez.wNnj1TSTWWT25HP46V7DwKVWsCrh9kKjuPwKyfO1W0f3AYawtF9mr7zI6YCsjXtSVI5jsO9L1x2zUfNcvUVf2jwW3Rqig4FvFrw7fUIvprUU06nxjSL.mHsiroL02Ts8HcRPSE9JpMYCiiMmQduoO0.CYVcbB1QejOgiaK7QxTeHNZLSM2EhFlmxSbBFb47LoduED4r718Rw6CCkySUUA7XFSD23Nat4XRyHpoS+Ab3S5jAvVeBNTJHXXrOKqfyabjx6wpmm1oN.sFlM6.eiUJASsAwyfeIfR0QYEufhikqI2+3I7b1O4prKEVYSOrFPuzjyTNa87HxI2ORbR9PkBOzIV0.l3YCmPYgqvTKLFovDHRXXJmd1QVv3hs7pigUtFfxrotFY0pHZZY35np7OzfSVUnC2NaswVTqbrUg+YAW5P71ZMNrU5cCZarXusx3JjVEGliDQh3YtZNlL9DtM5fvrrDBRgG.w0yHjotKHUVp6QKzirraXVaBuElG275WkAegBvHU7IUgHfB.hieDw24qfpv6hZzMaggpnsbCbjD1YXfsDNAkNtaymZjOSLZmqR.O4FUyzgjwaDOGFhkfTzLAX3+drxZWmD7NrhNR1c1GfTVNvKIquNUlJAKszJyr32Nn021oFsKd+YNY0nfB2jqxxhO6VZbW.Cvx7uvgpKwwG7Dwnxy8uuKHoQsoXLgS+kdhK802a+8ar9An+ciF90TslydNZJaobtu7X1FF4RuRf5GNEZ9YagxaWnQYCdE7NAzU2QfpQYGeENAo5MDNAs2CX9SOuMYQgb4GO4xSQt4jSF2Z2sNXq5au0eUcXWMLOJjoYifLUa.DucCuLvsH5mh2hnnoPcrpfVGl8H5+6eZb1c6nUpBcqNZkHXkko+MY7LTiq5Y1WELvFoAtRQbd.ruVcJTrOW1B6ZnFJ8PcUMO7a.V1xLpUZvNzO0RXuuSQB7oc.hGvq5NbVAlAN1qKkgqRFtZY33g0txI0JiFXl17EoeNF3B3tbMLc7d3J.9Pmu5laVeSvQ4ER62QwEaZJllojGhmrdmnWFkiPYTEJijvpMKKnaPhJbvCwvSjzwtxdKEcI.MHIBrWwNw6Xc4LCo2y1uVReM3nn.QwTH7jl6nMxlb2IL5f6GJyWx8K43MOhGLCWXxBNhAJ7a9MbV+n.8OJS+ipz+.GgEHcZ25WAFeSeWR2Q2D0wFp8A1I97nW7h.W2VX0JIJHqPmdq8Gju2739d42XQE+txaLIp8jJL0HQiei9+T2fXVmq+Rb2ygoYesYqD9xJwa6k6zRbWTGq6ianKk8sQkclvyLnVM24kJnlXTqPX.cpKgbop6t1as.g4v2H.Vx3LTsNH4wQAbymaVYC5zWf9lbgbQtXUyeD0cah4Yzcd7erWEW9c8snk1cZ7c8EMqZjirzfCzFZFZyMKkC9OSFpPY3+bkab7EoNr0HstjHH3vhjSm67NBOjDqJq.r5QQhmcHLIPYX7dp2PSyNbxB+xwKnJLicPv85Of13K5A9bgKNoB6KCnB3o17Y1b1jTcXB2sHxqGlmzfQ29TjowC8qBG4sE3x.t2wmBkeVQetiL03Zf+a92EXdqKkystTtYhtTv0AVchJUXN7nGS.p4TdQnS2zplhrlf+yGwf23awGETd2JnEOJxBT5fTgOTYpmiU+wWsJg+alUsxOqqVW5+.WLnkL2vO9WocWgKi+yuwTHAmZcMIAYDZ6p9LvgJh2O000MfMmrryQbUvgY5hqCwXOgNY7Wj5wVFODyUKJK10XQ+N4i.P7tQ2EdnW3bZcKoXufxTqTbNWqNrKzZzKwKapufN0NgvmcqG1Tkh09Sy0sWgKP1vLzVwMXG5HajBtGUTOkC7.nFPGiTo7fJ05NZ9B.fpm2dOKHjoSmN..ST38+rGZSr.T8vEfNEvPWpGLSdvjVqLNMemqiYSHi.iXMmEzSr9pqK5VVNCNGsfnJLkYpceCphl+L909yyjYGgd2JALhpegBQ.WImytRZ.HIe1vwVkCqjnumluL7Kfj.lTnakkqZSw34M2tp9R+NSyrkyJzGEcdm8hBNNmAWCjjIROfDYqIqjgq0EJnNbNTMCW4hoC3.HytFpvNwWSB66rnLuR4n4Ry4S41tAgSfo6tW2tqcQCRhsxDkzz25AwIHVmgb93zm6D29.EiwiO+ekI9x2a42V+KYxDvpDws6dGXcv2iLX1bq56tG296s81ISTejQeUsGv8rVG7TvQi6Te2mUe6GjLwRbanN5XYQt0gd9vMgqPmNK2QTVzPjS.6WBHQfBgNbe2w0Q5TTOnNjqnAMQQv9sg9CR.C3wkXouDuVlISX+2.oNcPjGdCbcQ2Vx3Bp2RtcGfW1Yjl.Y0CWha8c1.QeX67RtT0GHfFQ1PRe.9kGr+13Bg7NrmSPrslnr.bp.rrvw5pxiPOz9BIAUeQRFtWz3.6y1Ey5NwehsD+1QhvE5kde0Qxc35Jozwg1GeAQWjaqMxvc7HCDR6yLkSbBJnmh+A2NHXpB8DehpbGQsGwgFLCYF.DXBiLTGfXs13U1DtQTPoGVwnjIV6YOtElOpy0dzfQjJ.GFnBDpDhZZnoxLP3D5pZGMotv0hJmNNbdQjTPm6LQR7IHAbmlzqgSdPnzRgueVzTQMvCPl.QTQvv4pdmzfhrJzF0dhXJHwZDbejayvLb5pbcDaKM.0++XQAiVRuVjhgPR3uAx3wv8dOb.x2AWs1Zml6u2yarSicOvr50grLlvsDqHdUMw2qqKw03bT2yN3EHmqOAREhb74qfqq53EAEyef5l.G393gpZFVz7IK+btWqB27Wpbh3i.Qq2fEUfIAT+fgfEATESVFAmwf6LbaLhkUjZi0b5CfDQsjp3a4D3IPMjr1rFpnNE1dGdSDqCx9CfpAndBMpPU9sYSKAemaDo+31nw5aWee7ZOz5JPmjrdr21LO4nuLTG26JsKxbaRiOAKkkFBqVTCEXakD5o8GaRYIE9JtB8NbujfHBchvKJfyoUoMeBmUkNjE5YCKRZfmT9IrRA4.uWS8rTGhuELPebDbWXjMu02g6i.7K3ImSxQIyUuJYF+87WkLW0+LSKgzv2EJgKibRyTIkhP1CSNwbvRh3qMLGsC6QykKlwYDQ3FkwZ.RNthKmJ+83yBm+5Eg6yE32Ki+sUZWNOZXId3cnONfIm714jGmSdW4rHNmEwevlST8vNu3JI4Y14Gm8p3rWE+g6rmmN+4sHPdaJfI.eYLE3KS9zMM3YHBuMU3sIClJEHBfB4Ie5lJ4JyPF3mYbdClPGsBlPkIxixEIedf0AdIZVlD3OIHKdF4gN6UmDOzOKRdWdELQrx9wqgl1KWhDrmykXKGIbNqJQICornS+H6ggodlNZfnSNP07Xe0bpMtNhXa03qdFbxzZcHhQ+t01t95O8k.5wVDOGULSkL0xfWBwDj+6pMFvSZrcyF66bx5wcEWR61xhBJq2WRtilnh2ncf40lG1CIvKUUa3g.Xh.ZwvYBul0jUgMMnMgyDZNaf8Jx0SDrx0oLi6AWE1J1xKD4NPBYa2PXvvsTHmRx59dFX4MYvtSZKkllmCfIHy.6XrtvC4LeGRqxRY.UnnxLg4JPZthxHBaRsMU09pQHX5hZX0oTXBYG1FVL6tj8O5whZnz2TU+E9xqdRUpKLYRyRm5DHL035WrD2EV6TRms3ncXzPNQeHHGI.5vkKfPyFeWv7H5koTrYVpnkl5.tAF5Ez3WbcXA6W+uD9bC7G3u1.9XS7G3e+X7G3uVG+A9qqsH6gxmetczgQHNdjJvcYYGycdJlyNjJWfiSOx1Wjqvb.UYkgYxQ6g07GaVGtv2WhCuxyblK8L2U8n6vsxv3N5NRPux1c6VLWw1kZmFGGpvcKAWpuFhBBxrERS5DfdEnPna0kW5g7qvI8Ed7t3xzZclamGbQl.7hAkIQHXVfCxc8TR+RTSG1j.NcttDMKXuYVA1ir.0Xa9loE6Vcw1jc7tO95T5dNbjO6GdpcXKzKIAzViqvtXitcIKsKIQT2bl9sI6YKS1eAiWiIxk1B19Bxc4NFMx0i3RFZ4RK4MGDyVFSySR2yEKsrYpAlIvW4610DgOIsocPBydVeUDXdfa8gWsWeHO7JJ8QmUQIN.NE+lvXzKSOiFb0UGVxl8b80lG8UG+dDMAkSuwNVB6WI6tVVaRc.8huClX4i9UrRsg9dJlo1mgIoQ97H6EAYIyAgFn1wZK0kwdrxzbOvJgLkR2tPwfKt6GPoYSB67AWeSIH2vslcFga4Pf5oPeApd12BD3w.xfKfLjxKCj8zVcwlY5CtKXtY44UbTqUz3VT37GgLhVN3svHmRnjsCb.8Yoh.+K0iszEf+k8w1Mdc6R8BbqC54n+EdJtqHK8MMXXFtyf6rdHE7IZPSHETK0.n3gkehF8kMEdgegW0RbovBp6iOO0Xg6Xl0yLi0pnT5c6RW7vgTLhyMqJJQNbDMSq8dpGHBdGw+hLDtIiaNkXWkAQfMUBbTbmN9BThF7k8i4VgMWVySPlDIB+tvBVP3iyIV73hl1UwMljchxifiY.HvNxVoTZqw97OreBfEr2w+jNxj.0v5Th0o3zgqocZT.3cGGbNf3JMvRyrHLmgEgH76ybwvvEUO086onBh28kBDOOrHUxOlbu1a8SxtFgv3Ir4nysD19xPOhKWPkmkW5gD4Zbs6kKKZPSTF897xkqXxAVszGdtemqODR3yo6CE6GtRPa+Z6gap9GPPrXxFAz3KP0J6K.pfudw5HncB4lXMBke.Q+hf4QhgEXEewuYgx09clg5fRGADflcTUTct+rMIg0MnM8Rr3yEykMeiu48rtVrgaZbxsGM0MEsqSRK1hww85l2T2sEI6mU+JU5IjwZBN834Aq3nfpSYfZ0LHysuiqs7xXFaGoB5cl86cqFllRyvdAqCoWoKy.NdIrtlHzIfxsggTnDMV1LChEuwxwR9cjKwVecHSFW7iSc6RJy4V3EsrjOFLdjZq6d.VADA9W1sVjfRBVukVFj6DWynLXPGXaTh527Yz.3d.sirvShJvEBDM3WegSkP8X3R0Z6sZtLbyMj1pLkzwkWcqUBztbMzjgBlPaXcD+1QBJFHQjN3TA7xPkhrzhVKmn7EfJ.r+FGZEHZTphTF0kzqSPHYGdMll4QE0PMjxdaCNgdvzHM35Jf2Pwfb2ZmeZt1bvBxMP3DX88vqFmIWfOabZC6EBy0Ezd8DSAKQltp4pUAiLAqjJjJAyMiok9I84KwWvkxslE9RbDMinzD+m5Qm2rOFQcyUrbDHAgQEBlf1iz3Pz.SqY+Me5c9YrG+K9lcvJLdbbFCItO8OnkTgOxHpM1mld+poZFOGeCuxX5kTeS3hYs0frhlJ1WacJi0jfR0RbmZwyMsO5eZeASZuH3zFXv9SORoiXCAMRSn2dJxWDAImi4YyDlvbW4aVYniGr.pw2myITp9F.PMsgkG4YBe3jwNoubVFZIBdS.drVJPMrTz0rAMgCiZ8M5YXZ9L5B69LyMvtDcpzu3gbAzZQWOegOyjE+bOHysKBqfXyFUuM2YVvQ3jVzGJ5Lqo.l2tI0sbrIaFwyaKnovaxfo8KWno0MlrgjWNZ23YsrnE+eIqopP6QynaxzWk0OtjuR1SZd6luDca2xDfd.RsJS.KQCrftyxYLmTi91Ow5hwgpG.iTU2QFglg2jJvYL3fJkyXpS3OXCmFbNBz9gc7+EnQPq0wxcNc4WISgjYb04yZzDIFyyNH2AijkW1cVujqpGZpuwFlG8aGrG0ByMacSCwKTJLdhAKWY2vgzgsDohqhgA5zEOEkSYnRf4koJY++Z9rCtXnH6CrziRQ4BGp2+byNfob7XSZFexnh0HGKK2s633YRJbwzjGh457LOwG1taWKNypEibc3nRpOtdHI0yH8km0bi5GzX9no3pqgk9xxKCm2RpxhYGpAcIVDjsO.ejyS6iN3jn+2v0BeL9bPKl2a5IU38MPXT89VTKK40Hk.l2QoDfjaG7jsZwg9edCgOKe2O.lEpkvgYUbFjkYvJxwBLspA973.Q3udu8e5V693LbsdxdOa6M3NX+5q+Tt0dgY2zs1fEiix3A3LHb0eSSOWZ562YidB95qqUiCN.UUZMS0RLuoeYB9ovOFARvFTB32.8HP+eujJjKWX+JRKOk6kKoitpwve8bhTK5Hx4PbZvtixJ5KdnU3ZbO6fz.dss+WCL9Obt.8rVCLhVseImdrGPHQWS7W73ScEBo6DwhIhT16zQrSKEwygiXC8Xwh8+ODagQrK
          

          ScreenRecording2026-05-17at7.56.19AM-ezgif.com-video-to-gif-converter.gif

          Sonic Architect && Software Mercenary

          Christoph HartC B 2 Replies Last reply Reply Quote 3
          • Christoph HartC
            Christoph Hart @HISEnberg
            last edited by

            HISE doesn't support MIDI 2.0

            I'm living under a rock here. How wide is the DAW industry adoption of this? All of the hosts I'm using don't care at all about MIDI 2.0.

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

              @HISEnberg

              Wow COOL! 🤟

              I think the MIDI Player is whats needed also... it just wants an upgrade into the MIDI 2.0 future 👑

              DAW's do in fact purpose Sequencers and Piano Rolls effectively, but I think they're a little lacking in realm of fun easy fast inspirational music composition, so I want to fill the void.

              Took a video but the files too large, next time 👾

              Screenshot (435).png

              1 Reply Last reply Reply Quote 0
              • HISEnbergH
                HISEnberg @Christoph Hart
                last edited by

                @Christoph-Hart Lol it's a fairly interesting yet comical story from what I know. Long story short - no one is using it. JUCE announced they will start supporting it soon and there is a handful of controllers on the market that use it.

                I think the MMA (not the wrestlers, the Midi Manufacturing Association) has been trying to make it industry standard for quite a number of years now. MIDI 1.0 was only ever adopted because the major music companies of the 80s (Yamaha, Roland, etc.) came together and standardized it. Companies don't want to collaborate like that anymore, so we are stuck in a limbo of MIDI 2.0 always coming soon and never arriving.

                So probably something to keep on your radar but not worth the time to investigate just yet. I'd be more interested to know if there are any plans for CLAP and ARA support in the distant future but that's another topic and is also not a huge deal immediately. All that being said is MIDI 2.0 sounds awesome and should be adopted....

                Sonic Architect && Software Mercenary

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

                  @Christoph-Hart said in Optimal Midi Architecture:

                  I'm living under a rock here. How wide is the DAW industry adoption of this? All of the hosts I'm using don't care at all about MIDI 2.0.

                  It's only just being rolled out across operating systems and will indeed take some time for DAW's to catch up, although predicting Bitwig will be all over it soon enough.

                  I guess for me it's always been a fantasy to have more control and resolution, particularly regarding per note automation, next level music... MPE has always been a limited workaround.

                  Internal synths could could make use of the upgrade 👏

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

                  Screenshot (436).png

                  David HealeyD 1 Reply Last reply Reply Quote 1
                  • 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 - Public HISE tutorials
                    My Patreon - 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 1 Reply 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
                            • First post
                              Last post

                            17

                            Online

                            2.3k

                            Users

                            13.7k

                            Topics

                            119.1k

                            Posts