April 27, 2020

FINAL BLOG POST.

This week, I worked on finalizing my project at this point, and creating a presentation that can be viewed at the link below:

https://docs.google.com/presentation/d/1HT_L_AkMzWoMLKyK6YdDZd7V1PmnLJ2rMUZEwEnMNwg/edit?usp=sharing

Here is the final Pd Patch that I concluded with at the end of this project.

April 20, 2020


Here is my current Pd patch. This patch has the conversion from frequency number to pitch note correct, and correctly outputs it to a txt file, which is then automatically sent over to Lilypond for transcription to happen. There are 2 more things that I have been working on this last week that still need to be fixed. The counter on the right side of the patch works, however, the starting and stopping of the counter is what still needs to be worked on. In addition, the last thing that needs to be improved is the idea of keeping track of the current octave, since Lilypond works in relative octaves. So, if the first output is a c3, the second is a c4, and the third is a c4, right now it will output “c c’ c”… however this will only raise the second c’ to a c5 instead because it is relative to the previous note.

At the bottom, I tried to start keeping track of the current octave, but I think it is just redundant of what is already in the patch.

Week of April 13, 2020

I started off looking into the Pd patch and trying to refine this. I started off looking into refining the Sigmund parameters. I added the notes parameter to be able to record the frequencies when it detects a new note, rather than constantly. I also added another sigmund object to gather the amplitude data and print that out as well. This is all shown in the patch below.

This sends the pitch frequency to the txt file, however it does not send the amplitude values, because if I send it there, it will just show double numbers instead of what they are denoted as.

I also looking into the other parameters such as Stabletime, Minpower, and Growth.

Stabletime won’t work because I am already doing that with the notes input, measuring the output pitch at the beginning of each not. I am just struggling with the duration of each note.

Minipower is just used to find how frequently to detect the pitch; aka the minimum power from the audio input.

Growth is also just how frequently to detect the pitch using the root mean square approach.

After I hit somewhat of a dead end on this end, I decided to take a look at the automation end, and how to make the process flow better. I started taking a look into applescript and how to read the txt file and input it into the excel sheet, and also how to get this converted and inputted into Lilypond to be transcribed. Below are a few of the scripts I have written.

This script doesn’t work fully… it prints out a blank excel sheet

This patch doesn’t work fully…. It prints out the numbers in one cell, and then I have to run another script in the excel program to separate the numbers into separate cells. But this is a better grasp on it. This then prints out the correct note descriptions.
In the process of exporting the excel sheet to Lilypond. It works, however it spits out the notes as one word instead of spaced out… shown below

This writes directly from the text file to Lilypond correctly, however I need it to be in letters and not number that the text file spits out

Current output to Lilypond

What I currently have is that after the txt file is created from Pd, the values are sent to the excel sheet. However, right now all of the values are sent into one cell, and it is very difficult to separate into their own rows. The code below is put in place on the excel sheet to separate into individual cells.

Things to work on:

  • Work on the code to input into excel correctly
  • Work on the code to export from excel and input into Lilypond
  • Refine the Pd patch more and figure out how to get duration of notes

Week of 4/6/2020

Here’s an update on my project:

My original idea has changed a little from the beginning until now. My idea was to start with Pd and take the audio input and convert it to frequency values. Once I had the frequency values, I wanted them to automatically translate into note values, to then be transcribed onto sheet music. The end goal is for all of this to be done in real time as the audio input is coming in.

Last week I was still struggling on getting the frequency values to be written into a text file. In addition, I took a look at the transcription end to understand Lilypond when I got to that point in the project. I now have an understanding of how to create a musical score with this software.

This week I worked on solidifying my Pd patch to be able to collect the data that I want, and to put it in a format that is easy to manipulate. Below is my current Pd patch.

This patch enables the frequency values to be sent to the text file “music-notes” to be analyzed. Below is an example of the data that is sent to this text file.

Below is part of the spreadsheet that I use to reference the frequency values to translate them to the proper notation.

This is the code for the numerical – to – notation conversion in the excel spreadsheet.

Here is an example of the transcription. In the code, I have the note values as a range, to accommodate for frequency fluctuations as well as the fact that I am currently using Apple headphones as my microphone.

Once I am able to copy/paste the notation values, I place it in the Lilypond code below to be transcribed by this software shown below as well.

A few road blocks I am currently facing/next steps I am going to look into are:

  • How to export the text file from Pd without Copy/Paste
  • Automatic translation from numerical value to alphabetical value without using excel potentially
  • Getting the duration of notes in Lilypond rather than just quarter-notes
  • Automatic final product

Week of 3/30/2020

So this week has been interesting with switching over into online classes altogether. I have been chugging away at this project and have been hitting a bunch of roadblocks this week. I have figured out that this project is more of just inputting text into pd, manipulating this text, and outputting it in a different format. Right now, I am at the point that I am able to collect the input data in real-time, but I am having trouble outputting this into a text file that I can then send to Lilypond for musical transcription. Below is the current patch I have in pd after going through a lot of help files and online forums, but it seems to not be sending the output microphone data to the text file.

On the other spectrum of this project, I began looking into what I was going to do once I had this numerical data, and how to turn it into sheet music. Looking into Lilypond, the input data is alphabetical instead of numerical. So once I get the numerical data from pd, I will have to figure out how to change this to alphabetical in order to run it through the Lilypond software. An easier platform I have discovered is Frescobaldi, which basically takes the Lilypond text files, and allows you to edit and create them while seeing the real-time sheet music being created rather than having to send it to the Lilypond command line.

Below is a little image of the script coding that I was practicing with to get a better understanding of how Lilypong and Frescobaldi work. The next step in the second half process of my project is to how to manipulate the alphabetical data that I can hopefully get from pd, into the format of this software.

Week of 3/2/2020

Notes on presentation and where to go from here:

This is project is more of a text manipulation problem than I originally thought.

Next steps to work on through Spring break:

  • Read the pd book for the first few chapters to get a better understanding of pd
  • Keep a lot of data instead of trying to take data over a certain period of time
    • Want to get the exact duration of the notes when they change pitch
  • Look into using the “Text” object to export data into a text file to be analyzed easily