#1
i don't know if this would be the right place to put this, but me and some friends are going to making a recording program, and later would like to be able to convert the music we put in, into music notation, and maybe have it do some other cool things. Currently we have not picked a language, because we haven't found many with good audio commands or options. So far our choices are, C++,C#,Java, and Python. Does anyone here know which would be best, and maybe have some tips as to how to get started?
#3
I personally love python, I just dont know how youd go about doing something like that... (im not a good programmer by any stretch.)
Quote by MightyAl
A girl is a mythical creature, somewhat akin to a unicorn, or chimera.
They don't really exist, but it would be cool if they did.
#4
python +1
last.fm
"If I could prove by logic that you would die in five minutes, I should be sorry you were going to die, but my sorrow would be very much mitigated by pleasure in the proof."
G.H. Hardy
#5
Quote by Survivalism
Doesn't Guitar Pro do that?


maybe, but the whole idea is we do this as a school project, plus have some fun making it, so that later we can edit it how we want.

Also, we plan to start with something simple, record sound, play it back. Then we add other features of record and play back, such as multiple tracks ect. Once we finish we do a spectrum analyzer to match sounds with notes, and we then have an option to show your tracks in music notation. Other features will be added after that.
#6
Do you know those languages or are you going to be learning them from scratch because that'll take a loooooooong time if you dont know them already :/and if you did, i'd assume you'd know which one to use. But good luck, I hope they give you a long time to do it.

P.S Java/Python
Gear:
Squier Strat (modded)
Vintage SG
ESP-LTD Alexi 200
Epiphone Explorer Goth
Les Paul Build
Flying V Build
EH Metal Muff
Dunlop Cry Baby GCB95
Ashdown Fallen Angel 40
#7
i have C++ basics, I have a semester class of Java next semester, I have the resources to learn python, since i'm an intern next semester for the school, and since i'm not payed, and they don't have much for me to do i could learn it. C# also doesn't take long to get when i know C++, and will have time to learn it, with an excellent teacher who may be helping me. Also, I will not be the only one on this project, currently it's just me and a friend but we may recruit some others to help.

so far 1 java, and 3 for python.
#8
Quote by ^-^
Once we finish we do a spectrum analyzer to match sounds with notes, and we then have an option to show your tracks in music notation. Other features will be added after that.

I don't want to be a buzzkill, but there's no way you're going to be able to do that. You'd have to write a very sophisticated program for the spectrum analyzer to even recognize a single note.

Software for speech recognition is very expensive and not all that accurate; with notes, you're in even bigger trouble since you can't match the input to a pre-defined list of acceptable output like you can with words. Add in background noise, chords, bends, tempo changes, imperfect pitch and timing from the musician, and the task becomes impossible with the tools you're working with.

If you prove me wrong I'll be astonished. It's a great idea, and extremely useful from a musician's perspective, but I just don't think it's feasible.
#9
the second piece of the code is a push, something to take up a massive amount of time for class and over the summer, to see if we can make it work, the recording piece is the piece i need. Also, we're not planing on having it do anything complicated at first, just one instrument, probably a keyboard and be able to have it recognize relative pitch. If we can do that, then we can expand, but the first piece(record, play back) would be very do-able.
#10
Java has a nice audio class you can use, however i wouldn't use it for this, from my experience with java. Your two choices are really python or c++ imo, so i would choose which you are more comfortable with, and is more setup towards this kinda of program.
Just call me Bobby
Member of the official GB&C "Who to Listen to" list
Quote by mikeyElite
you build guitars worthy of sexual favors

Quote by Invader Jim
if this party gets any livelier a funeral is gonna break out.
#11
I've talked to my partner, and we're settling on python. Soon i will start learning basics, and start getting this program under way. I will continue to check this thread if anyone has comments, questions, or advice. I will see about giving an update once we have the first step done, which could be a few months.
#12
I would have gone with C++ though, combined with DirectSound or OpenAL for the recording part, basically because I know C++ well and I'm not sure about speed of Python code. At least for recording, I guess the speed of the code won't matter, since computers are very fast anyways, but for analyzing a spectrum or calculating the pitch of a sound, you'll need something fast, since you'll probably be doing a lot of FFTs.

Anyways, please update this thread, I'd like to see how you guys progress with this. =)
Was this intended to be something similar to Melodyne?

Greetings
Decryphe
#13
we're going to take a recorded pitch to do all the calculations our project. record first, then convert to music notation. That way the recording piece is nice and clean with no hick-ups due to any type of lag, and then we can run a slower, less efficent code to make the converstion, and speed it up as we go. so they'll probably start as to differn't pieces of code.
#14
I also would've personally gone with C++, but only if I thought this could happen...and I gotta say, I'm skeptical...

But hey, if you manage to do this, then I will shake your hand and possibly have your babies because it would be straight-up sexy.

*awaits updates*
#15
All depends on what OS. If its Windows, then go Visual C++ or something. They have a ton of libraries and api's for sound that you can use. You can also integrate ASIO into it. You want to add graphics and windows and menus and the like, its a million times easier in the Visual languages from Microsoft that it will be doing all that in something like Python. Plus, Python is more of a scripting language than a full out programming language. I'm not even sure of how to get a final 'executable' program from Python without running it from a web browser or something.

There is software that does this, but it's usually limited to monophonic sounds that are clear and distinct. If you expect to be able to play 3 or 4 instruments together and have it figure out what each instrument is and transcribe it, computers are still aways off with having the processing power that our brains can do.

If you want to be able to play a slow, very articulated guitar sound or flute or violin or piano or something that is clean sounding and figure out what the notes are, then you're just making a tuner program that writes the notes it hears. You're going to have to get into FFT based math and algorithms for this, so enjoy, especially if you haven't done a good 2 or 3 years of university math. lol.

For more info, look up wave-to-midi on google, you'll get an idea of what is possible.
Lefty Strat Copy w/ GFS Lil' killer rails + Crazy wiring
Lefty Kona Thinline Acoustic/Electric
Righty-to-Lefty Silvertone Bass
Righty-to-Lefty Memphis Short Scale Bass
Vox AD30VT-XL

Tascam US-428 USB Interface Mixer
Guitar Rig 3
Last edited by GeToChKn at Jan 9, 2010,
#16
I thank you for you critism, even if we can only get part of it done, it will be useful, and at the very least i have a program that records, and a lot more knowledge on the literal mechanics of sound. Also, it's for a class, and private use, so it won't be flashy but i'm not concerned about that.