diff --git a/Tests/TVLSoundOut.cpp b/Tests/TVLSoundOut.cpp index 54c41db..6cd11eb 100644 --- a/Tests/TVLSoundOut.cpp +++ b/Tests/TVLSoundOut.cpp @@ -10,18 +10,46 @@ #include "VLSoundOut.h" #include +#include -int main(int, char *const []) +int main(int argc, char *const argv[]) { - std::string chordName; - VLSoundOut * soundOut = VLSoundOut::Instance(); - - while (std::cin >> chordName) { - VLChord chord(chordName); + VLSoundOut * soundOut = NULL; - soundOut->PlayNote(chord); - usleep(250*1000); - soundOut->PlayChord(chord); + if (argc > 2) { + CFStringRef outFile = + CFStringCreateWithCString(NULL, argv[2], kCFStringEncodingUTF8); + CFURLRef outURL = + CFURLCreateWithFileSystemPath(NULL, outFile, kCFURLPOSIXPathStyle, false); + soundOut = VLSoundOut::FileWriter(outURL, 0); + CFRelease(outURL); + CFRelease(outFile); + } else { + soundOut = VLSoundOut::Instance(); + } + + if (argc > 1) { + CFStringRef inFile = + CFStringCreateWithCString(NULL, argv[1], kCFStringEncodingUTF8); + CFURLRef inURL = + CFURLCreateWithFileSystemPath(NULL, inFile, kCFURLPOSIXPathStyle, false); + CFDataRef inData; + CFURLCreateDataAndPropertiesFromResource(NULL, inURL, &inData, + NULL, NULL, NULL); + soundOut->PlayFile(inData); + CFRelease(inData); + CFRelease(inURL); + CFRelease(inFile); + } else { + std::string chordName; + + while (std::cin >> chordName) { + VLChord chord(chordName); + + soundOut->PlayNote(chord); + usleep(250*1000); + soundOut->PlayChord(chord); + } } exit(0);