It would be cool to have a MIDI out feature in Theorytab to go along with the MIDI in in Hookpad. I have a MIDI controller that lights up the notes when it recieves a MIDI input, and this feature would help me learn music much faster. This would be a huge step in making Hooktheory not only a learning platform for theory, but also for performance, or more generally, playing skill.
Right now, I am working around it by exporting it to my DAW, then setting up MIDI routing. It would be really nice to not have to do this, especially because for some reason my DAW’s MIDI doesnt work after opening hookpad until I restart chrome (I’ll make a bug report after I figure out when exactly this happens).
We’ve thought about this before, but are not quite sure how to make this happen. Having Hookpad send MIDI messages during playback is pretty straightforward, but the step that pipes these messages to your DAW is the part that isn’t so clear. The DAW would have to effectively emulate a MIDI out port for the browser to talk to.
If there are any developers out there that could demonstrate a proof-of-principle page that uses the Web MIDI API to talk directly to a DAW, I’d be more than happy to look into plugging Hookpad’s playback engine into it.
If I’m understanding the obstacles and capabilities correctly, I think it would be enough to have Hooktheory send messages to a MIDI out port. For my particular application, I’m pretty sure my controller makes a MIDI out port from which it can receive messages. For Padbury’s application, there is software out there that can emulate a MIDI port and route messages around (Tobias Erichsen’s loopMIDI, for example).
I’m really sorry I missed your previous post here. For your application, yes, we could just send MIDI messages to the MIDI out port. And thank you for the info on loopMIDI, I wasn’t aware of this. It looks like for macs, OSX natively allows you to set up a virtual MIDI port.
@PadburyMusicIan, is the idea here that you would essentially hit record in Ableton and then play on Hookpad to have Hookpad send notes directly to Ableton?
One issue that will be important for both of your applications is that I need to look into how accurately we can control the timing of the MIDI messages. The Web Audio API - what we use to schedule playback in Hookpad - runs in the browser as a high-priority thread to ensure that the rendering of the audio is perfectly timed. I’ll need to take a look at the accuracy of the sendMessage timing to make sure it is reasonably accurate.
One question for both of you: are you interested in the outputted MIDI messages replacing Hookpad playback, or would you ideally like these to both be happening?
To answer your question with regard to my personal use of any MIDI out from hookpad, for the record I am on the Mac platform, yes it would be a case of hit record and once captured manipulate the MIDI normally within the DAW. This includes the editing of tempo, start and end points in the DAW.
I realize that with a lot of research and effort and super MIDI feed could probably eventuate in HookPad, with tempo matching and as you ask audio only from the DAW.
However I would be happy just to be able to record midi only, as in my experience tempo matching and, transport control and latency all serve to over complicate things when trying to bring together separate sound sources.
Ableton can do all the tempo and transport work and association with virtual instruments, after the recording event.
So we just implemented this on our Hookpad 2 development page, and it’s a pretty cool feature. There’s some setup involved if you want to send MIDI directly to a DAW because you need to set up a virtual MIDI port, but the results are pretty exciting. I currently have Hookpad’s playback engine talking directly to Logic, with each Hookpad mix track connected to a different Logic channel strip. This essentially allows Hookpad to borrow the instruments and effects of an external DAW.
Since integrating MIDI out relies pretty heavily on the revamped playback engine we’ve built for Hookpad 2, we will probably just include this feature with our rollout of Hookpad 2. Thanks for the suggestion!
@NOS, this feature ended up creating a lot of issues with MIDI input so we never officially added the feature to main Hookpad build, but it’s possible that those bugs have been worked out, so we can look into reintegrating this.