ADD AN EVER-UPDATING VISUAL GRAPH TO A PYTHON SCRIPT: a task request for the open source project The Amanuensis: Automated Songwriting and Recording
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 want to try it out, please get a hold of me! Playtesters wanted!
Details
Playing the Amanuensis is a lot like playing a game: a much more open-ended and versatile game of Guitar Hero. If you could visualize the rhythmic analysis it's doing this would become quite apparent. There is a dictionary in consciousness.py that is constantly being updated, calculating the rhythmic peaks where beats are likely to fall. If this dictionary could be turned into a graph, these peaks moving towards the user (or towards the current moment) would be very much analogous to the targets that move down the Guitar Hero on-screen fretboard towards the player.
Therefore this task request is to do just that. It would also be highly useful for diagnostic purposes, to get a better idea of what's going on under the hood so to speak, so at this point in time I'm not too concerned with exactly what form the graph takes, just as long as the information can be visualized. So although this request does involve creating a GUI for a Python script that as of yet does not have one, I'm not asking for any more than the bare minimum in that regard. It does not have to adhere to any sort of design or formatting requirements just yet.
Components
In consciousness.py, the dictionary in question is called rhythm
and it is updated after the highlighted for
statement in the following screenshot, so this should be the moment the graph is updated as well.
I'm using the dictionary like a sparse array. The keys in it are integers which correspond to specific millisecond moments in time (the x-axis) and the elements at each key (the y-axis) are the number of beats that line up with that moment. The x-axis integers will be in the range of millions, but each time a new note comes in it's labeled with the current millisecond reading taken when it was played so this can be subtracted from the keys and only those that lie in the future need to be graphed (currently there is nothing that cleans up the dictionary to remove those that lie in the past).
The range of the graph will be dozens at most, but the domain would ideally be equal to the "wake" (stats['wake']
) which has a default of 8000, meaning that 8000 ms into the future would be graphed. This could be shortened if necessary or perhaps a grainier resolution (less than every millisecond graphed) could be used. We can discuss these technicalities when we get into it.
Deadline
For the right person (with the proper knowledge of how to put a GUI on a Python script) this hopefully won't be too difficult. So I would say something like two weeks would be a good deadline.
Communication
Reply to this post or contact me through Github for more details. I can also be found on discord @to_the_sun.
Thanks for the task request, @to-the-sun!
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 task request!
Want to chat? Join us on Discord https://discord.gg/h52nFrV.
Vote for Utopian Witness!