I found a great library: CFugue. That's exactly what I need, but I cannot use it on linux. They wrote that it works on ubuntu, but I did not succeed:
g++ said that "vfw.h" doesn't exist. As far as I understand it stands for "video for windows". Is it possible to use CFugue on linux?
I don't know if this will help you because I still haven't been able to get cfugue running on linux either. I emailed the developer and asked him how to do it, he sent these instructions:
You should see the line 'Linking CXX executable ../Bin/StaticLibTestAppdu'
If you enter the command '../Bin/StaticLibTestAppdu' it should run.
But it still didn't work for me. These are the last few lines of output from make, I think it means there is a problem with ALSA, but I'm no expert.
/home/tom/Workspace/cfuge/CFugue_src_22Jan12/MusicNote/src/MusicNoteLib/MIDIDrivers/AlsaDriver.cpp:167:29: note: mismatched types ‘const std::fpos<_StateT>’ and ‘std::future_status’
make[2]: *** [CMakeFiles/MusicNoteLib.dir/src/MusicNoteLib/MIDIDrivers/AlsaDriver.cpp.o] Error 1
make[1]: *** [CMakeFiles/MusicNoteLib.dir/all] Error 2
make: *** [all] Error 2
I would not be surprised if ALSA is the issue. I remember trying to get FreeTTS to run in java under linux with no luck because the ALSA driver was bad. I first put ubuntu on my laptop in 2008, sound wouldn't work at all. Newer versions work, I think since they made pulseaudio the default. But it still seems like sound drivers for linux are troublesome.