Welcome @slingaya, and thank you to everyone else who has contributed to this thread. I’m far behind all of you in my adoption of these tools. Our current system is taken directly from the Flintstones. On the surface it looks automated but inside the machine is a tiny dinosaur (actually a human named Jessé) who creates most of our graphics using a font that we created (called the IFR font).
Standardizing on the IFR font was a step forward. Having a library of templates and recycled illustrations certainly helps too. But whenever we need to write out a whole new song in tonal numbers, this is still a painfully slow, inefficient manual process.
My own needs for a solution align with what @DavidW and @hender99 described. But in my case, I don’t need the translation from traditional sheet music or from audio recordings. So we don’t need a tool of harmonic analysis. Honestly it would be a huge step forward for us to simply have a tool of harmonic dictation. In other words, even in cases where we already know the tonal numbers to a song, it would be wonderful to have a tool that allows us to input this data without having to use clumsy image editing tools like Illustrator.
What we’re doing today is the musical equivalent of type setting from the early days of newspaper publishing. Every time we wish to publish a song, someone needs to drag and drop every tonal number into its place in an image. Surely this can be updated!
It’s easy to fantasize about very sophisticated solutions which would make use of voice recognition and pitch recognition to automate this entire process for us. But at this point, even just having a simple program to automate the placement of the numbers on the page would be a step forward.
So for example, imagine that I already know the tonal numbers to a song, and I merely want to dictate these tonal numbers to the program. For this purpose, I don’t even need to sing the pitches because I can just type the numbers. I only need the program’s help with two things:
- placing each number vertically based on its value relative to the other numbers
- placing each number horizontally based on its rhythm (which measure, which beat)
That’s really all we need. And for this purpose, the data entry tool could be the keyboard. The natural notes 1 though 7 could just be the keyboard keys 1 through 7. And whenever we need to express an outside note like b3, this could just be the letter key directly below keys 2 and 3 on a standard computer keyboard. (I’m talking about the letter W if you want to look at your keyboard to see what I’m picturing.)
When I type this letter W, by default the program could place the note b3 on the page. Then after the entire song has been entered, there should be some easy way to mouse over that note b3 and convert it to #2 if I prefer to express it that way. (And of course there needs to be an easy way to select and manually correct any of the entered notes, because mistakes will happen.)
The scheme above solves the problem of how to tell the computer which tonal numbers we want written. The next question is the vertical placement of these notes based on their pitch. This is a bit more complex because the program will have to make some judgments about this only AFTER all notes have been entered. But I think there must already be algorithms created to distribute objects vertically within a given region based on their values. If not, it should be a straightforward thing to code.
The only remaining problem is the distribution of the notes horizontally based on their rhythm. For this, we just need the input process to be a live recording. There should be a parameter to let the user specify a tempo, and the program should provide a metronome beat. There should be a record button. When you press record, the program should start with two measures of count-in. Any keys pressed during these two measure of count-in should also be recorded, and should be understood as pickup notes that are played before measure 1 officially begins. And until the record button is pressed again to stop the recording, the user should be able to type notes on the keyboard, and these notes should be displayed on the page at the exact moment in which they are typed. So for example, if I press the number 3 on my keyboard roughly on the first beat of measure 2, then a number 3 should be printed on the page as the first beat of measure 2.
In existing music dictation programs, much of the complexity comes from the notation of rhythm. For example, if somebody types a note just a millisecond too late, you don’t want the program to interpret that as a “64th rest” followed by a tie of 63 separate 64th notes making up the rest of the beat. But for IFR, I would propose that we simply sidestep all of that complexity by avoiding any rhythmic notation whatsoever. All we want from the computer is help with the initial dropping of the numbers on the page. If we can just get each number into the right place both vertically and horizontally, any errors in horizontal placement can be fixed very quickly with a simple drag and drop of the mouse.
As you can see, I’m not looking for a program that “understands” the music in any way. We just need a program that allows us to enter data in time through the mechanism of a “record” button, and that spaces out this data horizontally according to the time in which each keystroke was entered. And then we want that program to also distribute these objects vertically based on the values entered. As for the question of multiple octaves, this could either be solved at the moment of data entry using different keys (which I personally don’t like) or it could be solved after all of the data is entered. To fix the octaves after the recording is finished, there just needs to be an easy way to select a bunch of notes with the mouse and choose to raise or lower them by one octave.
And again, remembering that this is only a data input tool, the program should then turn control back over to the user to make any manual adjustments or additions. If this program could somehow interface to Adobe products like Photoshop and Illustrator, that would be incredible. But does that even exist?
I don’t mean to hijack the conversation. I just wanted to add one more set of requirements, just to give another vision of how a tool like this might be useful. But I appreciate that other people have other requirements, and perhaps we’re talking about different tools altogether.