Using Aubio with HISE

  • as far as i know, HISE has no beatslice capabilities yet, so i thought about, how this could be achived.
    my question: would it b a big deal to get HISE communicate with external software like "aubio" in order to build a kind of beatslicer, based on the AudioLoopPlayer module?
    in detail, i'd like to setup an interface in HISE, where you can adjust the settings for the aubio onset detection, run aubio with these settings and analyze the wav file loaded into the AudioLoopPlayer. finally the timestamps created by aubio must be fetched into HISE, so i can generate loop ranges based on these timestamps.

    PS: to produce the command within HISE to call aubioonset would not be such a hard task (although, i haveno clue how to pass the filepath of the loaded audioloop)... take a look at that snippet:

    HiseSnippet 1438.3oc4Ws0aaaCElJNpnwsYqcqOrGIL5CNnMw1osKCqnnNW27ZbhQsavvv.BXjnsHhDo.EUZbWKv9oseB6Wwvdb+C1NjRxRx0IMw6FvlBPrH44x24b34h5IENznHgDYszfwgTj0ss6Olq711iv3nN6n2Xy3SXhiGPiTnsFGRhhntHKqJeklBqkVDYd9smuEwmvcn4agPGIXNz8YALU9t8Z+Blu+dDW5.VPApeb6NNB91BeQLflJ1MQgDmSIinGPzjsfMx5F65xTBYeEQQiPVKtkvcbeOwq4IzeDKhchOUunEpOHnjs2S36pQr9cz1dLe2dYVcDBYY2K2GTIwGbO6tLW1j8y8E2wb.Nmih9CqEtL30ZNgmUA3sXB7tqceGIKTkehFa2xtCWQkCIPHnHrRnEs.th81BfBtZs.xoz8jvhIbT+wMa9P75MatxSWtJDFhT3yHR7lwtLw9BQXOexXprE9YXysi0FQUly5SBB8oS.R8ZlcwZVvo7TqrHG3IoQdfMCxJCOfz1VDDJ3vh50lPwTbtCUQcTLAuqvkdgbWhpoj.PV.gewZN87o3ZHCrPhxCXqVC23ffwMBgkMThF5iV60jypsb0j+FFyMJGK3GHTzC40Wo5OTcopuqJd5iFNblmoQlT36Sky7XcNi7xXrNON3Dp7g.z8io.gKWECOrg3zSvO6YEBBu8s37sK46VIgwT90OZmgyDWXssOra2MOXmu764XhtBA3vnJ7pLbM7CxcZO.mKfZ3UU3ZOHW8Z++QZbVekoI7PiXJCIM4cTzfAzyUZNJwv.bj4xXTsmNY6z.5Z.vpWSAbU6gYVvJIT8tDYn8kP9U4D3ab0RfcRtKUfPAuCmoNLjltNOEu0LRwQoWFgj8ERCh.oJSp9cRS0AC4DwVhyQLPLercIuBxDoKT1sMZZw7QohouOykJMB4V1ShBSKfe84nW0YGhhnK+jBN.vgToho8KV6POCpqmTLZI.LQmpDgPkzIoRfu6Zf+yAVstOn3w4XnS6.hY+EfELHlGo6DQ4T4nwU8F5n8ZSqrOfUd9DoiG1tjphTi8Ms99Zgj8FvfI9HOJajWg1VsaWTiUSz3xoZbexITeiBWxN8NWA08iaVPc+z2090LWkm11dhE58zSm156oHqWXmkeUcpzqKnFjN2p4Za7DcpC3fJjPfFBlTRWTczZHI1WgH9rQ7.iwbaaG3WI0c.DE0z1m8lBWGpWxxsuHK+l1l2aUvvQaUzO+nTKa5v+0Q5qWP5sKEEWOU5Ei3n2u2IzAW3F6STkaqqmkI8..Vk5ep6QxiXpwEm04Zzqu4L60OyBAWQ3dW6dLki2rw6By.u5JK+Mi2zImV1d2gCgXaNXWzduucdGSZ9fxmlAkISuPSlP5d1u+zIWxDs+7Uch1vq7DsvvSNl67EtJYhkCjvrtL9nhpRCyc4DvW3Vb6WJDJ8.DEmnNYLLviJUf3KQM8LpLprD1CpXjTN3U1M7DATnLx4BNyogw+zHQZQMfhJMzfHpwNx3fj+i43s.+k48i4Gqee0teyAqebqMZt55szEhPAZunskVUoEwG8KVHePRFDlcluw9byVZUYtFetblaA5mwrzK9uvn9+0m9+muZUkqFb+.eMxRYXrOSeeYW9YTeHWyfwOIqOS1tkSz5J3hPO8Utx2UUR1nQTYQrOSCZSkBxWx24dseI0mRhJjTb+16y3Thb5zsqgun0U2WbYwqOyNAtXc0A7+M5xT4+mcYdoHVAUo6RfKp5BaGDGzGJt6PAjv4T+nrIVSW2Lq3VeJ20r32gmzCaoWakdXqrC+GQGADGo3XmjuRPeW9llc.6lmNlXW8ZbqrOMv1t4ZMgB6tricbzt6UagPylm0mCddzbvyimCddxbvymOG7rwbvyWbo7naFsYrRDjjJBazaWymnYYMYFAqJn+.ighRH.�

    but how to execute it then and get the timestamps back into HISE?

  • As long as it's not trying to work in real-time I think it should be okay. I've been using Aubio as a VAMP plugin in ardour and it works great.

    The only other issue is licensing, aubio is GPL so it could only be included if it's source code is only used in HISE and isn't included in exported plugins.

  • @d-healey

    so it could only be included if it's source code is only used in HISE and isn't included in exported plugins.

    i have to confess, i don' really know much about licensing, but for my purposes, it doesn't need to be included in a binary.
    it would do the trick, if i could communicate with the commandline (to execute aubio and zenity as file browser) from within HISE, but also from within a compiled VST plugin.
    is something like this possible? and if so, how to do that?

  • @toxonic A VST plugin is a binary, so that would be a no no unless you had a proprietary license from the Aubio developer.

  • @d-healey said in Using Aubio with HISE:

    A VST plugin is a binary...

    this is clear to me, but why do i need a license, if i don't want to embed the aubio source code into my vst plugin? i just want to call an external program (aubioonset), transfer some parameters to it and fetch the output (i.e. timestamps) back into my plugin. that's all? i would need a license for that? anyway, i don't want to distribute the plugin.
    however, do you know, if there's an option in HISE to communicate with a shell?

  • @toxonic

    i just want to call an external program (aubioonset)

    That should be fine from a licensing point of view but I don't think you can do that from a VST plugin or HISE.

  • @d-healey said in Using Aubio with HISE:

    That should be fine from a licensing point of view but I don't think you can do that from a VST plugin or HISE.

    😕 such a pity! an interface to the commandline would be a really great extension to HISE, i think... @Christoph-Hart could this be a feature for a future release of hise?

  • @toxonic - if you have a plug-in that does this the likelihood of it making it past the apple code signing/notorizing is probably very very low.

  • mhhh... 😕 maybe i'm too naive regarding these coding subjects. i thought that it might only be an question of implementing standard streams somehow. 😉
    i had some success writing a shell script, which calculates aubio-onset-timestamps and filepath of a selected file and saves these into a JSON file, which can be loaded by pressing a button in my hise instrument interface. then i was able to map the corresponding loop ranges to single midi-notes.
    Peek 2019-11-26 11-19.gif
    but nevertheless, i now found out, that the loop ranges don't work in polyphonic mode, so you can't play 2 different ranges at once. 😕 this is somehow quite unsatisfying, so it seems, that i have to discard my idea of building a loop slicer in hise for the moment.

Log in to reply