ADJUSTABLE LOOP POINTS: 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?

Adjustable loop points can now be set, which serves multiple functions. Firstly, it allows the user to focus in on any specific section of their song, enabling recording over just that area without needing to listen to the entire song through. Essentially this means you can now comp weak points in your recording. If you're unfamiliar, "comping" is producer jargon for "compensating". To comp a portion of a recording is to do multiple do-over takes of that small area, find the best new recording and substitute it in.

Another possible use for this new functionality is to set a desirable portion to loop, much like an ordinary looper, giving yourself an unchanging backing track to work on top of as you record things in other tracks.

Once a recording has begun, a button appears which is initially labeled "jam". When clicked, it toggles to "comp" and a dark bar appears at the top of the track listings. This span can be adjusted to take any position at least one beat long with the mouse. As long as you're in "comp" mode, the song will loop within this specified span.

  • 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. Read the comments there to get an idea of how the code works. I'll try to keep my description here about the process of writing that code.

These are the primary commits involved:

An rslider was created and placed above the tracks between the time labels which show the length of the song. This seemed to be the ideal location, intuitively.


the section of code handling the new slider in GUI.maxpat

At first I was thinking I would be able to have this slider always be present, but when using the system normally it would simply extend from beginning to end of song. This proved to be impractical for multiple reasons, it was decided that a button was necessary to engage the functionality.

It became necessary for not only the slider but the button to appear in a neutral state at the appropriate time and not before, as automatically starting a song in "comp" mode would clearly cause issues.


the code handling the new button in Amanuensis.maxpat

The ramp that denotes the current position in the song is generated in progression.gendsp. I adopted the practice long ago of using single (or very few) samples in buffer~s to convey various variables in and out of gen~. Two more were created for this functionality: comping and loop_points. They're used to substitute the loop points in for the endpoints of the song when "comp" mode is engaged.


the adjustments needed to handle the meat of the functionality took place in the codebox in gen~ progression

Cleanup and commenting

GitHub Account

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

Sort:  

Thanks for the contribution, @to-the-sun! The adjustable loops sound like a nice quality of life improvement - great work!


Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.


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

Thank you for your review, @amosbastian!

So far this week you've reviewed 9 contributions. Keep up the good work!

Hi @to-the-sun!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your post is eligible for our upvote, thanks to our collaboration with @utopian-io!
Feel free to join our @steem-ua Discord server

Hey, @to-the-sun!

Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Get higher incentives and support Utopian.io!
Simply set @utopian.pay as a 5% (or higher) payout beneficiary on your contribution post (via SteemPlus or Steeditor).

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

Vote for Utopian Witness!

Coin Marketplace

STEEM 0.32
TRX 0.11
JST 0.034
BTC 66791.24
ETH 3239.69
USDT 1.00
SBD 4.22