Snippet for Y'all — Capturing and Storing Incoming MIDI Notes
-
As promised, here is a snippet to capture incoming MIDI notes. Looking across past forum posts, this subject has come up a bunch, but I'm not aware of a solution that's been posted. Every line is commented and all functionality is explained.
This solution is relatively low-level to provide maximum flexibility regarding what you want to do with the note information. The MIDI Player's Record method can capture incoming events, but there appear to be significant limitations to this, some users have reported possible bugs, and I'm not clear if this functionality is designed for this task (e.g., as opposed to capturing events within the context of loops).
I'm capturing the notes in the audio thread for maximum timing accuracy. It may not be necessary to use the audio thread, or there may be some deferred callback scheme that should be used. (Please correct if so.)
Note: If the incoming events are not coming from a host, then all timestamps will be zero.
As always, please let me know of any corrections and/or improvements.
HiseSnippet 2375.3oc4Y8taiabDmx9XRjtlfb.8C4iKNDzSF1mhjs5cWqaRkrrrCa8eDrjuzhf.g0jqjVbj6xRtzxpAGvk9Rz2f9bzGkh9Dz2f1YVRJRIQ6S13xmpfwcj6Nyr+lYmY1YV1KPZyBCkAFkJOXlOynzuvr+LgZRmITtvv5PiRelYGpuJJfQN05PKiCl4SCCYNFkJs4wHMkJ+HC8u+yu+.pKUXyxFxv30RtM6DtGWkMZuV+Qtq6QTG1.tWNpa1xxVJ5HckQ.d1zrtgO09MzwrynHYaXZT5i55vUxf9JphEZT5QGHcl0ehbpHl9WyC4W4xvWZXzGDT7vGIccPDiiZzYB20oWpdGZ.RoWlUXyXqvuz7TtCe93YViOWOAIii71iRarH71bA30HO7pmCdE.oMyAoONciQCIW5LVfFJKLPdXzIJHfIT8Y+kH1RaGISMH.Lr424NQJ86Jn.3bxOLJ7q.R66yVbhRat1ZZi6TSMPc3HtKCeNmR+nXk9Il8sC39prYPM+wlVBEKXDETt7JdLsFa72qX9Uq9ib14C5R5zt2fKunKo+YV850c.o.B+pJ5+HClvCIgBtuOSQriCBBIbgsziKFqCGHBoh8bof3AnC7TwoQVCXT2mq.u6cfAHpILBMxgKgmfYbpQrTDGIPMvdpjQ1hk1nQg6PBkD9HfdpBjvHYfGUwg0APD2yWFnnBEQIIyjQ6fbBKgfbEiDhApv3TGmXlGEIrQNotb0rZUpzQBlNgplG8MriBfWlaJq9h502grW85asekJEYVHctnaavDd7ImeP6SHut8EVsO3jt8uKaXGPeULDdgLx0z.N5ig1jickWQcCQ8DlbFXEz3mZi6yLGxn.oGAkvUR0DsELhSnBGsoEsrI1xvZUh2qXoFRGsYLjLERxnMIfeJL3DV.qVkjks1X8+OLkkyzb70ju+G1mnkW2.J.XpX1xRMTghMVl2s3pY6xnAU2JQheGiLgdMS7L8NdjBEIJ+XwNioxjlHx67QIYcSQV8DwzG7EQqgG8FtWjGAn8JV.QNJUqYZSYBRxjIPepnZTe2l5sXRGDgZwAIdCkt.8cRdHE7Z55gFcWI0NdqD718jAyl6ZGDPmsOtxNRT8ll3ahrXi69yIOj6vVMZ.WAqm4oCFhBwPKjDHViEbMxrZhDLUgDqD4Gx.SobJtDQvlDGbxkAfF346xtg3PUThBxd.AQn+hRhx2aFIR3vBBg.GGXI1g7GnWSiSXjEJBJXDf5Yq.8obvIjqpowIjuIxKFlP.VRzG4uxBxTYGMj5Ba2Jh0gZbfm0Aqtm+bGSjqP3nsr3BD1jprZiqg4MT6s6VndCzgKhsDxcG5K03edbcrzRW2cHPzBKXJODdTg4uf+fI0vQPiFOAbyvmqxAqwMw9UwO96HK6pjLy1auE4GAmux.LI48vAt6JFyEfyhNJ+z3bfeKdZq10obkx4ouVHSgo0qVXzB9umKPtVlG7+OS6lWsdQy+ZFn7P1shmEN6VHXtEO47Mk3oqT9tBn+ds43G.0N+v6W4s2R5xdWXc1fzCbNL97B7LnaIgItGeLDcSAW+QPxJ3nazEG8RtJRojhZUvnTE5tPtRIFdXjmeZsYeMIMw9XPkgPAo.do5SWhtmlDPeAaLODx6q8LcXifMw3z.fuBdfel6E5rLEObICGnOkefNMcsJKs.ZKNfj.oamDYUUJFBTkingIT.fgKbw0d9xcqzV0NUo1AL.tQLvoD7IwTGiJFa+628OpTFNCsZNxQ5wZcHxqYwI9VN+Y5VaMf32WfxJ4oWLhAbmzKXu.HVlvn1SHLLivyBW3H8j83zDuHSoO6ibVs7S0X62RdJo71j0vCE8AxEzrEYa.LkIjx3umRHWybueBadD1xhxFBttehJMbDjzBXhnBueBJKzcKBdFa4xusB72a2OuyTbRkpaU4Ggci2VYkoFMpv4R74bQiWASiKcvcwX0XupTO0TBgxZWrrYy0qrY63P6bDJEVBt5bel315pwHIe.zLwFInBHUoqp9yRpp9.cHiAGJd9El9TXaY3Is+ycuXn0Y8tbvvdm26xdCAgNNf50m4xrAnOriqLjcf7lgGeokgV+x2fgwZrVOwbojFEHlKsNDNGG.eoD8.fgOKPwQyVoCYWCsUF2hPYyCYguQI80JZRNBiReR7x+ooMPfZmd0at1Z52ANaxoCaew.iax.2W1ZV1KVslv3vgpyG4e51ZJ2QMY9.j+Vqqy21GKsKK7EnWsaEwmPuJAw6s1Hd.W4xVBvuaTd.aXrDfM9lk.rAukhcCPvWXtaxgVut8IWBcL08jtcFb9EPW4XOj4P9CxjZjS.O9CseYl5+peJu5+EKueYzbY0uYh5ugoAO7ToG.PZvr3vrOLZNWw7hukicwt3ataiWsWiW0r4KxMCNQiW13Uu7kun4dMWvX8w2lm856mbD7B6Ncr+lUbrGujg5c+TqOLlCLD+8G1t6ZK5SYhnkbBVT29xk0sVrkzs+06VU2dHVWrr7oo0AEh2dTGWN7D4WQ9VrBjE1W+n6QByLUqkeNUq0vDm2GahTGeicq3Eu12yREyKRZ1tvqY427Hya6r1BpFtc+9VGel0YGSrNqy4mhOnuPlCaOnMonxgSpsaZVeyAXMTPuUP7QA8+FvfNjbRaTeGM+5qEwGUJcEcX0f2dS1q1ADIqpwjKxfRvFsbyZYSFWY7DF0GqjSew.Z.hk5EyZth8vp6t+sQUNABI05qKaEYDa0Ek3CoIq6pKqDDrbYjEx17RCywTV4hExRZIf43XdUgqKC5VqsbtEFxpMLGK4JXLuQU5OSaQyWRt9xmvAWZyNtT8XFisuwW9AoJ1yQjGPzr7dDag6N2Y8rq3EtZ6koH0R.9GXf76suka0Ee6s2WWi7+eVH7CpnxBRV94lmJchbopE+v.3WCIYBvFrPFS7NVEgPDwB2g9GpuVv5BwmX1iqrmTLF2n.Lh8N7y.FS9FKepY2QifSLy.3iLO5O8yyGTw3BYjhKFeJUEvgCOMgbZ8grz1rjbKnOXoMPuk32qiuiVf9Lgi9k+K7KYxF36kRlrQ5jFdT6.4P6XOe7q37I5Q.LIze.qxlmhuSZj1uioY8Z0M73N7g11n5+bvAtXd18AvydO.dZ9.34W+.34EO.dd4CfmWcm7fe7o1QJYbZe7qQ0qqNEQoRy+ZXk1z3+ADOv5ZI```