has something happened here?
-
@Christoph-Hart said in has something happened here?:
@MikeB I would recommend using a MIDI player instead of the arpeggiator for the drum machine, this gives you
But unfortunately the following is not possible - is it?
- Multiple instruments 4 each with its own player.
I would need four midifiles for each preset?! - Random function for each player and each function
Note on/off, velocity, pitch etc. - The user can set each step individually.
- drag and drop of MIDI to DAW (otherwise you have to create the MIDI data yourself from the arp which is not trivial)
No need to urgently drag and drop midi data, but midi out would be good.
- perfect synchronisation to the DAW position if you sync it to the external clock
I expect the same from an arp
- the ability to seek to the previous position when a preset loads.
- much better control over the loop range.
If the arp runs independently of a Note-on command, I don't have to search for a position. A preset change should not stop the arp but become active from the next bar.
I think all the arp really needs is its own start/stop button that runs the arp independently of NoteOn/Off - either with internal clock or DAW sync.
Every drum-based product I've build so far used the MIDI player.
Unfortunately, all drum-based products that are not yours do not use a midi player.
But I'm open - but I'd have to see if the midiplayer concept is really a replacement. Do you have a snippet or example that can be used as a guide?
YOU have an arp in Hise that is unique - none of the 23 drum plug-ins I have have these possibilities* - but unfortunately it is not being developed further and is languishing.
*(except one from Blinksonic called Substance for NI Reaktor).
- Multiple instruments 4 each with its own player.
-
@Matt_SF said in has something happened here?:
@MikeB 1. Could be done with a user Preset Handler callback maybe?
Do you have an example - because as long as the Arp receives a note-off command with every preset change, it will stop.
-
@Christoph-Hart said in has something happened here?:
@Lindon Write a CC lane to the MIDI player and use that to control whatever you want. This way it will also stay consistent when you drop the MIDI in the DAW
Do you have examples or a detailed description?
-
@MikeB said in has something happened here?:
@Christoph-Hart said in has something happened here?:
@MikeB I would recommend using a MIDI player instead of the arpeggiator for the drum machine, this gives you
But unfortunately the following is not possible - is it?
- Multiple instruments 4 each with its own player.
I would need four midifiles for each preset?!
..er no, I think you'd only need one midi file player, and each "instrument" would respond to only a single midi channel...
- Multiple instruments 4 each with its own player.
-
@MikeB this is an example using a midi player instead of an arpeggiator, maybe it will give you an idea of how to accomplish what you're trying to do
(Changed the snippet to a better version)2022-09-09)
HiseSnippet 3129.3oc4Z81bZbbF+vxmS.m+OIS6K2xzoyIK5I.gIJMIiAAnXpP.VfjshG2jSbKvFerG4tCjIc7LoeyxGg9QnusuyeCZed18NXODhf0T2jNUilC1m8Ye1eO+c2aWZ641i5665okHY2YioZIdG8Ny3ACqLzhw0pWUKwGp2k5Gv3CHWRrlXyb0NX1XKeepsVhDa8UHaIRdaMweu5AGX4Xw6QWPRS6LWVOZC1HVvBpsKcDyw4PKaZW1HEtKTpdOWdEWG2I.j1ROq1XqdO2Z.soEx1sz0RbmZ1r.WuNAVATesD29.W6YcF5dIWx+YLe1ENTrQNsNffjjOz0wFQLRUqxPlic6HU2WSKgd6EFhsjFhOV+XlMaN8EFjOPzAYwHTsGItUb3sUL3kSEdYUf2JfzsTfzaE4aDPxwZF0S.kj5GG1RECUl34Q4Acne+DZLewqdPXWc8.qpJ8Fttiqws.jYqRFE9E.qcFSi2Qhs1X0L2ZUSMTiNj4PQUNQTCfaT8.2cUq.KsDEz269l7tEOZ+JCO7QULMO9Q095uqroo4SLMKa11bD6jNcqm+qAJlUMmtyDSSMTPKBaRfAZcXC3VAS7.Z5MmL5.K.BJZUS2QLneQ1PHwGVpJkuJxnECzdu.0PcoYLlkRSwMpKciendmddrwAK5AU16pWmGP85aAdLUuIfyNNLapWavQ.vUOws.AKkf1s9muudEWXb7.yQVOmdnGzXtbLJlMaFB7X6OOUJHuxOfL0xiDFyP9RhHU2b.MXQbkQ5vtSCCZwXZ5FPOyxYBswENv.ilSXnUbGM1kCMLRqxz0L7i3W7yObfIb3o1c2jclLX.V9wkS564NhTYnGyOvc7Pp2eB5m3eIKn2PYeo8sFMFhjRSBbIoCXf4JMxCqOIXHym.+G3MglAZQIGWuZcxXog3RnVDzkE2uuq2HQ2APzhe.HOehaeAEFuGFGLPNR5T.xDKOOqY3TX4SFMwm0yBjCNuDiI9SrbblQxs6mULKJCKx2OABWfoiC541ljtHlFBizhzmB0VsmZwCfRcvLNE3BDGLYRUBmhonkAD7HWOJAfFjdQtbHkS5MzhO.4MfBlRPM4B7Vs7iI1S7vNnPtp3yfdaalZ26kJzEa5SCN0WTBVnq04cQvafVIz963hJzEz..0yYBbegJRaXxtWTzD5KEitM06Qx9MPYHLT3DMW.FKIPfq6saJo2tQ8p0Noc4JG0IL3oSaeXBe50DvzrS6zamIUxjIutPpy9Y4nAxwyBi1515jZj1mTqSmZUIGU67No7nCHi8nX13yoyDfIFyMa0sFodyCaQN7jVGST0.bn9icf3UkQg7eV4FmViznUqiNsMoa4CZTKRcadFTB44mBUVDNNXXoysatzYHvG4qF9Y5LofOJD0rq7yBRx6GRtPH48kjyULj99gzyUT1wdQhMWwvd1KbBJFMC6EMEEKD0S2zOadIkHLCEpP.CRJCYucKjAB8ymI0d6tO9s8vGEvl4JheU7Xer8d4wulS9rHRonbrhm6IDQt7BgTP7rnPL4ueQDBBGQstg1cR4iacZytoXbGFmR5Og2ST5vkOuJpOTbAiD7bcL5EEFjQlcscp+ZpjPI.hgHKBh81Fhb7wnWiz9hgWdj6DdP5nA74P+oRB8i0t7w.9WBf5ZhzTgP5sQoFBjJPkBbYViUiysC0yxUqJC2N7zlU5VuUyqnmV11HPLvXtLhBCbpSFQAG9jQWP8.bSgrZVvrLDnVACGUFhCkOHXHp8D3OrdM5IqgUUnl87nvZ7GCY.PsoGhaiRjXibNRjWCqoYLxDm2Vb0NPJMEypwB.nxvYgPwHBSpcVQBdiPkH1LNuRRHDA6bGYo+CciJ9b.fZeiHcb6vwOWAc2HEzctB5JUv98U6YcZn60qDt2PkfrSjmRUaPes43I9CMFERdAEWLfbobDQsIYEqtsDKl0tQ4yqcxUBlVDUioExBYl8bnVBySRH3z20gZNFpTgoGgbiKbmTtvAGBslJhyDgXyoCqW+kjbKXaJzToHxSU2G.ZVDe2.qQGNBYpHVKFRQeZ1mgLsHwwXABjlKfOXNtWzvVLwQ6qCXHRj2ir279sopbjirqTLHCoRB1ztOrNXH6PPaKXJa0rw4.WGT9jLXZJoZs10ZVsVytPOx7VQc+NQh+BKgJjSHNQUGFzL6mSXjuXNVIrc1AJBANfjSC02bB8UprBSS4.ClnRDntg7jek7.fWnAEPlwsJDZXXQzf+E.gik+TV0CKChPHImGynekIXGB5lSlLpPjLpAKEkY4vAAheoXReYnAs1ws6dNoxombBZ05T6QmVqYkZoRprcEbS8Fog5uxcx02xwWTEVL9JmTqLXlaV6wqXvxzbi4tzLp92LBugTPQCnuCjBEVVnAnEgJSXM9kVL+nlsNXUK6nDJu1UcTWBIo59nkK9DPeAtnS7sG7Twve15WzI1dpul0btJHiVxYQICeRkxMZb.7sUnlPDwFqcHVkqwNdwhr9iWMzVHXAhVxx1hKqMA.s9gDv42fT6LHzoCwPcObf7gWAv32E5KMY9k8BX8Y8XVNFaGlcMuyAbXC10vcsFsO3j3DbX8FMhsQP3EOFFQPYEVeL0ZAax5vQBePr0L1Nb6Cwc9HADtye2Lf61RAdDHPisIeITzXdFYTzJ9pLFYiRpf+oPlQXgCX8NY1txd0id091gKtHmajUtXebKRxWZqOy4iY+BTjV.J8fdrw0otGL3sUqjntQJAd8WQcC6Wr.2uL0x4OvhtR275sJegznLuVA7RhR6wl38U8XdzQvKfsVeVLG1xXNLf0A4Fg8RciK7u5dhRgluUs44OHiZItc7ybQeyNykdx5BJL5xqyYAsFS4W24goEVLAOYrPTASef3zK9nvSuXwgRnwr0RbGc7swzDXFOjh2Gjhs3vadpdwBluY9SBzMCcmoht6dEzc5AkMM8pW0zrsaan8Hrs8eFZOkisoX6FODZaxf182Aa+Drc+wX+82Ad7PQ+WfsycP4WGz0XMny4bmy24h84S+zYYYGLoENae1S.p6WwcZ1YsDlho1c269yfGuPz+N+.6fGWnxia8mmJ6+SezfuuXE3KbQ6cTscaIQ26ECcBj895wdgjHHFc7VYKsIB48zUWgYYY7GJocZcww7okHQXbGDKNlBYoXXdhpzordT4QmkTuJ0+4PpMXzluJGPdSBMeg5wLOSswkL6fgyI7i+sRCorACUNYuyKMR8Xt2+mFYoHs8K4GPG2g8CwNpUME7c2MI37ZvWou80Feu5Ap36m9lR1z9VSbjajV8P3WEtW.t5ba5KhJQrPYd6MIV95L17MQYVMbWIzxqsB67FDHeM36mtbI7o8WtB9pWB2MFFKFJOs0X7091UZjGwrscnQq8p5RTUm2RpNuan5zv5BpyxYTvVDUTlRemhxPVVY9wythxTHTYtiNd5KanwboDZkomtNaIDIeUaYLiU9WKiU5qIP4iC0o2Q.ShrW0yg+1xhIef9wt1Sbv8+qd6N3UZE1ANcpmEOdx5b.FyhcWH+m5Je1TH9g5swC8d0X7Vq.i3sI8F.igWT16pWqeeZufE.715G9j2L2Jl5z+Ixo+t5O1ZJUruPwj+Ih1hCx+qnbpGZ6xsl6r7uuo2Y43M9NKa0K.fPW7BEf8DSyoJ4k5KuZeUoAS3wYWRJFWn5cHndJ781khHlWkXaKdLgAsiIoiYJ4d+iGHu.vNTPara42CT13W50qdP6IvKU7XLoNm5.WPNuJ4GZ4YC9kdwBD2ZcWeata302dme0c8s+OP4lX2vbxHL1ggmAYMNdlr.EDieDroKQc1Hp4igxic4tiG5xYwbzmPC7XCFPiE+rREpbPPrai9iKcB0gZ4qjh86K0fwoVdfchdCsEq+ZnSjXC8W+VcIbIXM.xu3KSD9CCHkdzYoGVBLpIYtJj6mGg3UAZIfvB2Xcvk6End4+XModLXmHwcFuVqwj6M+5fa8+MqCt9xKPMdxup2MyuQGVqIOQ3JI+x3KOwcBd+3GaAkrdg7mFRGXw7dzv6uY9u5hv1Yw1HD5P41hF+K3uvNygsSD1YtnN+uxbLxpmm62zS9F4XUs2VPAzat32ASR8iw1jbyOpA8rlYgWewl8M85gwq+QX40UOl72fwr2MXLEtAi492fwT7FLlO8FLl8W6XvshTdRf6HYLOPncM4O4oDy+4XkXKs+MPJFgsU
-
@ulrik -- thats pretty slick I think, well done.
-
@Lindon thank you!
-
Yes, nice one.
BTW, I would recommend switching to ticks as unit when doing this kind of MIDI editing:
// switch from "samples" to "ticks" // if this is true, the MIDI player will transform the timestamps of the incoming MIDI event array // as musical ticks (usually 1/960 of a quarter note). This has a few advantages over using sample // values (more stable when changing tempos in the DAW during editing etc). MPlayer.setUseTimestampInTicks(true); local betterTimestamp = quarterPos * MPlayer.getTicksPerQuarter(); event.setTimestamp(betterTimestamp);
-
@Christoph-Hart thank you, I'll try that!
-
@ulrik what a Legend
That code was just amzing