HERE's a topic near and dear to my heart
> I chose to make a note insertion program
You chose a VERY tough task for your first gui program.
I would recommend something simpler like editing text, or pixels.
The GUI and file editing a music app has to do is NOT for beginners.
I'd recommend starting with piano roll format.
Sheet music format is EXTREMELY difficult.
> What are the most important features a note writing program should have?
load midi files, display on screen in either piano roll or sheet music format (or both),
play the notes out midi, record notes from midi, save back to a midi file.
Playing the notes out midi involves using a high resolution timer and
converting the milliseconds to music time by current tempo.
> Would you want it to be able to make XML files or read from XML files?
no. midi is the standard file format for music.
the midi format allows for extensions, but they're non-standard.
Such as storing fingering - there's no standard way to do that, but you CAN
stick the info in a midi file.
But if you're asking specifically about your project, then YES.
xml files are a breeze to load. midi files are VERY difficult.
> Is it important to be able to save to or read from MIDI files?
(just answered that)
> Do you prefer to insert notes by clicking icons with the mouse or would you rather like to use keyboard shortcuts?
Both. And you'll need to be more specific. Clicking what? which button? which screen location?
pressing a key during what conditions?
And you have a full midi keyboard with 88 velocity sensitive buttons and tons of sliders and pedals at your disposal.
This is also the input device that's CLOSER to your user than the keyboard or mouse.
> Is it important to insert directly into a music sheet?
> (Other possibilities might include typing the note as a few fields, like pitch name,
> which octave and note length. As an example a quarter note middle C would be C - 4 - 4, C note, octave 4 and length 4.)
As I mentioned, sheet music format is EXTREMELY difficult to do right.
Read a book called "Behind Bars" - it's pretty dang thick.
It's something you can hope to do in about 3 years
Google "piano roll" to see a grid format for music that's much easier to do.
Similar to Synthesia bar notes, but not moving, and more compressed so you can
see more of the whole song.
In addition to note,octave,duration, there are other things to track per note:
time (bar, beat, "ticks"), noteDown velocity, noteUp velocity, track.
And for a given track, there's sound, balance, volume, device, holdpedals (and more...)
There's also overall time, tempo, time signature, key signature, chord symbols, dynamics markings, lyrics.
And that list ain't complete
> Would you like to be able to hit a note on a virtual keyboard and let it be mapped to it's right place on a music sheet?[/*]
Yes. That's the most basic part of a note editor. Even your simple app will HAVE to do this.
(And it's much easier than reading/writing .mid files or displaying/editing notes.)
> With thanks in advance.
I wish you good luck. That's the path I started down a loooong time ago.
It's a WONDERFUL path. But a long one.
Start with something extremely simple.
Figure out how to open a midiin device and record note info to memory.
Get it DONE, then add:
Display it in piano roll format, maybe just the first bar or something.
Get it DONE, then add:
Save/Load it in your own custom XML format.
(Get it... you get the idea...)
Allow some sort of "pick a note, update a note" capability.
The computer friendly route, not the user friendly route
If you keep AT it for long enough, you'll end up with something
similar to Synthesia or Sibelius or PianoCheater or MuseScore.
Although, probably with your own peculiarities.
All of these programs are a little bit different focusing in SOME
areas and not in others.
Music software is AWESOME !!
At least start on it. It's been my hobby for many many years, and it's a great one.
When I was a high school kid, I thought hmmm, do I wanna go down the
music app route? Or the graphics app route?
Graphics is destined for 3d and tons of math.
Music, eh, not so much math - I'll go that route.
That was a rather simplistic decision way back then, but it turned out to be the RIGHT one
Also, I think Nicholas has some public domain midi i/o code from an earlier
version of Synthesia... I'm sure he'll chime in if he hasn't beat me to the reply already