#include "buildsmf.h"
#include "cmdlineargs.h"
#include <QApplication>
#include <QDebug>
#include <QTextCodec>
QSMFBuilder::QSMFBuilder() :
QObject()
{
m_engine = new QSmf(this);
m_engine->setTextCodec(QTextCodec::codecForName("UTF-8"));
connect(m_engine, SIGNAL(signalSMFError(const QString&)),
this, SLOT(errorHandler(const QString&)));
connect(m_engine, SIGNAL(signalSMFWriteTrack(int)),
this, SLOT(trackHandler(int)));
}
void QSMFBuilder::errorHandler(const QString& errorStr)
{
qWarning() << errorStr;
exit(1);
}
void QSMFBuilder::trackHandler(int )
{
unsigned int i;
QString::fromUtf8("Copyright (C) 2006-2010 Pedro López-Cabanillas"));
m_engine->writeBpmTempo(0, 100);
m_engine->writeTimeSignature(0, 3, 2, 36, 8);
static char gsreset[] = { '\xf0', '\x41', '\x10', '\x42', '\x12',
'\x40', '\x00', '\x7f', '\x00', '\x41', '\xf7' };
static char notes[] = { 60, 62, 64, 65, 67, 69, 71, 72 };
for(i = 0; i < sizeof(notes); ++i)
{
m_engine->writeMidiEvent(0,
note_on, 0, notes[i], 120);
m_engine->writeMidiEvent(60,
note_off, 0, notes[i], 0);
}
}
void QSMFBuilder::run(QString fileName)
{
m_engine->setDivision(120);
m_engine->setFileFormat(0);
m_engine->setTracks(1);
m_engine->writeToFile(fileName);
}
int main(int argc, char **argv)
{
QSMFBuilder builder;
CmdLineArgs args;
args.setUsage("file");
args.addRequiredArgument("file", "Output SMF name");
args.parse(argc, argv);
QVariant file = args.getArgument("file");
if (!file.isNull())
builder.run(file.toString());
return 0;
}