MULTICHANNEL EXTERNAL MIDI SOURCES EXPOSED TO HOTKEYS: a new feature for the open-source project The Amanuensis: Automated Songwriting and Recording

in #utopian-io6 years ago

Repository

https://github.com/to-the-sun/amanuensis

The Amanuensis is an automated songwriting and recording system aimed at ridding the process of anything left-brained, so one need never leave a creative, spontaneous and improvisational state of mind, from the inception of the song until its final master. The program will construct a cohesive song structure, using the best of what you give it, looping around you and growing in real-time as you play. All you have to do is jam and fully written songs will flow out behind you wherever you go.

If you're interested in trying it out, please get a hold of me! Playtesters wanted!

New Features

  • What feature(s) did you add?

External MIDI sources, such as keyboards, MPCs and virtual sources like LoopBe, can now have their track associations moved, whereas prior they were static; you would have to set up your tracks to accommodate them where they were coming in at the onset, which was purely a matter of the order they loaded in. Now they have been exposed to the hotkeys like every other MIDI source, so they may be moved by pressing + or - or a number key designating a specific track.

In addition, if an external MIDI source is sending MIDI on more than one channel it will no longer be combined into a single channel upon reaching The Amanuensis, but each will be labeled as its own "instrument" and so can be treated as such, moved to any track you wish, etc.

  • How did you implement it/them?

If you're not familiar, Max is a visual language and textual representations like those shown for each commit on Github aren't particularly comprehensible to humans. You won't find any of the commenting there either. Therefore, I will do my best to present the work done in images instead.

These are the primary commits involved:

These commits involved completely reworking the midicontrollerssubpatcher of midiports.maxpat (it was replaced with a patcher called mpc). The previous iteration was far more complex and relied upon a poly~ named polymidiin.maxpat, so now there is one less file to contend with (!)


the now obsolete polymidiin.maxpat; I didn't get a screenshot of p midicontrollers before I did away with it, but it was more of this chaos

Whereas the previous version designated a new poly~ voice for each MIDI controller it found and then set out on managing their busy states in assigning them channels, mpcutilizes dynamic scripting to create new midiinobjects as necessary and connects them all up to the same point in code: p append_channel.


p mpcand its subpatcher append_channel

This version of append_channelis different from the others used throughout the program and was custom-built for this use case. It differs in that, if the specified instrument name is not already associated with a channel, the original unaltered MIDI channel will be used. This allows for a more predictable user experience; if you are expecting your midi to come in on channel 10 (the default percussion channel, for example) it will, but can be changed after the fact. The other implementations of append_channelwill query a valueand find the next unused channel when they find some new source, but in this case it can be assured there will always be a default channel to fall back on since we are dealing with actual MIDI inputs here.

As you can see in the screenshot of mpc, the dynamically created objects at the top are connected to a combine which assigns a label to be passed on based on the MIDI's original channel. This is a new feature and allows for midi from the same external controller to be used on separate tracks. The label will stick with it wherever it goes and ensure that the user always understands which original MIDI channel they are using.

The use of s controlleris also something that was lacking previously. It designates the active instrument and is used by the system's hotkeys, so they are now applicable to external MIDI sources as well. Hotkeys always pertain to the track which has most recently received MIDI and these sources have been ignored up to this point, which most consequentially means they could not actually have had their tracks reassigned.

GitHub Account

https://github.com/to-the-sun

Sort:  

Thanks for the contribution, @to-the-sun!


Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

Hey @to-the-sun
Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Contributing on Utopian
Learn how to contribute on our website or by watching this tutorial on Youtube.

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.033
BTC 64999.89
ETH 3101.81
USDT 1.00
SBD 3.87