A NEW PROJECTS MENU: 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?

Although The Amanuensis is designed to streamline the songwriting process, you will not always finish a song all in one sitting so the ability to load up past projects and begin again where you left off is desirable. Previously the only function to do this was by choosing the project at random. Now the "cue up a random project" button has been replaced and a whole new pop-up Projects window has been created, which features a drop-down menu populated by all of your past projects so they may be chosen deliberately. And yes, since I'm always a fan of randomization, "a project at random" is still an option on the menu.

In addition, the Projects window includes an option to choose an audio file from anywhere on your computer to use as a backing track for a new project. This allows the user to begin with any arbitrary amount of groundwork already laid. In particular, it becomes possible to use the final recordings of past projects as the basis for new ones. This means particularly good works can be set as "save points" that can always be begun from again if you decide you want to take them in some new direction, whereas when reloading whole projects you mustn't look back. You're committing them to a process of evolution and to the changes you make to them.

  • 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:

  • Commit #1 - This commit was ill-named as "god mode" but most of the work done in it was actually the creation of the new Projects window/menu itself (Amanuensis.maxpat). The only changes in it that pertain to god mode where some commenting and cleanup and I forgot I had left my work from the previous night uncommitted. Sorry for being such a noob! I'm still learning…


the patching view of p projects

The r startFeed vein already existed (choosing of a random project in machine.maxpat) and r ---cue_projectwas inserted just after to convey deliberate project choices to the same destination.

  • Commit #2 - The functionality for importing backing tracks was partially intact but had never been completed and needed some revamping to be brought in line with the current state of the project. Upon playtesting it was revealed that when the first span was captured with a backing track on the song length would shrink from the length of the backing track (which should have been maintained) to the length of that captured span (the behavior expected without a backing track).


the necessary changes made in p grow_song? of organism.maxpat

  • Commit #3 - A trickier-to-diagnose issue also arose from the fact that, with a backing track, the progression ramp cannot run until a steady beat has been determined, but logically you would expect that the song should be moving forward. This differs from the ordinary scenario where a song does not begin until the moment tempo has been determined.

This resulted in two places where the correct moment of "lock", or tempo determination, was incorrectly seen as beat 1, these being the start point of the first span and the absolute position of the first audio cue. After much deliberation, I decided that there was no way to get it to see this moment correctly in real time without reordering a huge amount of fundamental code, which would probably break more important things, and so created a subpatcher to alter these errant measurements after-the-fact, as in both cases they were not used immediately anyway.


p backing_playing?, used in both organism.maxpat and polypalette~.maxpat

The backing_lock_beatreferenced in those patchers was created in progression.gendsp to be determined at the appropriate time.


the solitary sample of the buffer is set in the highlighted line

GitHub Account

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

Sort:  

Hi @to-the-sun, thanks for the contribution!

You did a good job presenting the work done with the images - it really helped when reviewing, so thanks for that.

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]

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.19
TRX 0.13
JST 0.029
BTC 64130.23
ETH 3169.82
USDT 1.00
SBD 2.47