24 #include "ossoutput.h" 29 static QString DEFAULT_PUBLIC_NAME(QLatin1String(
"MIDI Out"));
31 class OSSOutput::OSSOutputPrivate
37 QString m_currentOutput;
38 QStringList m_outputDevices;
39 QStringList m_excludedNames;
44 m_publicName(DEFAULT_PUBLIC_NAME)
54 void reloadDeviceList(
bool advanced =
false)
58 m_advanced = advanced;
59 filters <<
"dmmidi*" <<
"admmidi*";
61 filters <<
"midi*" <<
"amidi*";
63 dir.setNameFilters(filters);
64 dir.setFilter(QDir::System);
65 dir.setSorting(QDir::Name);
66 m_outputDevices.clear();
67 QFileInfoList listInfo = dir.entryInfoList();
68 foreach(
const QFileInfo &info, listInfo) {
69 m_outputDevices << info.absoluteFilePath();
73 void open(QString portName)
76 m_device =
new QFile(portName);
77 m_device->open(QIODevice::WriteOnly | QIODevice::Unbuffered);
78 m_currentOutput = portName;
88 m_currentOutput.clear();
91 void sendMessage(
int m0)
99 void sendMessage(
int m0,
int m1)
108 void sendMessage(
int m0,
int m1,
int m2)
118 void sendMessage(
const QByteArray& message )
121 qDebug() <<
"qfile is null";
124 m_device->write(message);
129 OSSOutput::OSSOutput(
QObject *parent) : MIDIOutput(parent),
130 d(new OSSOutputPrivate)
133 OSSOutput::~OSSOutput()
138 void OSSOutput::initialize(QSettings *settings)
143 QString OSSOutput::backendName()
145 return QLatin1String(
"OSS");
148 QString OSSOutput::publicName()
150 return d->m_publicName;
153 void OSSOutput::setPublicName(QString name)
155 d->m_publicName = name;
158 QStringList OSSOutput::connections(
bool advanced)
160 d->reloadDeviceList(advanced);
161 return d->m_outputDevices;
164 void OSSOutput::setExcludedConnections(QStringList conns)
169 void OSSOutput::open(QString name)
174 void OSSOutput::close()
179 QString OSSOutput::currentConnection()
181 return d->m_currentOutput;
184 void OSSOutput::sendNoteOff(
int chan,
int note,
int vel)
186 d->sendMessage(MIDI_STATUS_NOTEOFF + chan, note, vel);}
188 void OSSOutput::sendNoteOn(
int chan,
int note,
int vel)
190 d->sendMessage(MIDI_STATUS_NOTEON + chan, note, vel);
193 void OSSOutput::sendKeyPressure(
int chan,
int note,
int value)
195 d->sendMessage(MIDI_STATUS_KEYPRESURE + chan, note, value);
198 void OSSOutput::sendController(
int chan,
int control,
int value)
200 d->sendMessage(MIDI_STATUS_CONTROLCHANGE + chan, control, value);
203 void OSSOutput::sendProgram(
int chan,
int program)
205 d->sendMessage(MIDI_STATUS_PROGRAMCHANGE + chan, program);
208 void OSSOutput::sendChannelPressure(
int chan,
int value)
210 d->sendMessage(MIDI_STATUS_CHANNELPRESSURE + chan, value);
213 void OSSOutput::sendPitchBend(
int chan,
int value)
215 d->sendMessage(MIDI_STATUS_PITCHBEND + chan, MIDI_LSB(value), MIDI_MSB(value));
218 void OSSOutput::sendSysex(
const QByteArray &data)
220 d->sendMessage(data);
223 void OSSOutput::sendSystemMsg(
const int status)
225 d->sendMessage(status);
The QObject class is the base class of all Qt objects.