diff options
author | Taybin Rutkin <taybin@taybin.com> | 2005-05-13 20:47:18 +0000 |
---|---|---|
committer | Taybin Rutkin <taybin@taybin.com> | 2005-05-13 20:47:18 +0000 |
commit | d09f6b3016bacbc2871a8946cbb24ad705076509 (patch) | |
tree | f27312839c2a772cb2ce068a4f28b2449ad869df /libs/midi++2/mmctest.cc |
Initial revision
git-svn-id: svn://localhost/trunk/ardour2@4 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/midi++2/mmctest.cc')
-rw-r--r-- | libs/midi++2/mmctest.cc | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/libs/midi++2/mmctest.cc b/libs/midi++2/mmctest.cc new file mode 100644 index 0000000000..25ea964ded --- /dev/null +++ b/libs/midi++2/mmctest.cc @@ -0,0 +1,112 @@ +#include <cstdio> +#include <fcntl.h> + +#include <pbd/error.h> +#include <pbd/textreceiver.h> + +Transmitter error (Transmitter::Error); +Transmitter info (Transmitter::Info); +Transmitter warning (Transmitter::Warning); +Transmitter fatal (Transmitter::Fatal); +TextReceiver text_receiver ("mmctest"); + +#include "midi++/port.h" +#include "midi++/port_request.h" +#include "midi++/manager.h" +#include "midi++/mmc.h" + +using namespace MIDI; + +Port *port; +PortRequest midi_device; +Parser *parser; +MachineControl *mmc; +MachineControl::CommandSignature cs; +MachineControl::ResponseSignature rs; + +int +setup_midi () + +{ + midi_device.devname = "/dev/snd/midiC0D0"; + midi_device.tagname = "trident"; + midi_device.mode = O_RDWR; + midi_device.type = Port::ALSA_RawMidi; + + if ((port = MIDI::Manager::instance()->add_port (midi_device)) == 0) { + info << "MIDI port is not valid" << endmsg; + return -1; + } + + mmc = new MachineControl (*port, 0.0, cs, rs); + + return 0; +} + +void +do_deferred_play (MachineControl &mmc) + +{ + cout << "Deferred Play" << endl; +} + +void +do_stop (MachineControl &mmc) + +{ + cout << "Stop" << endl; +} + +void +do_ffwd (MachineControl &mmc) + +{ + cout << "Fast Forward" << endl; +} + +void +do_rewind (MachineControl &mmc) + +{ + cout << "Rewind" << endl; +} + +void +do_record_status (MachineControl &mmc, size_t track, bool enabled) + +{ + cout << "Track " << track + 1 << (enabled ? " enabled" : " disabled") + << endl; +} + +main (int argc, char *argv[]) + +{ + byte buf[1]; + + text_receiver.listen_to (error); + text_receiver.listen_to (info); + text_receiver.listen_to (fatal); + text_receiver.listen_to (warning); + + if (setup_midi ()) { + exit (1); + } + + + mmc->DeferredPlay.connect (mem_fun (do_deferred_play)); + mmc->FastForward.connect (mem_fun (do_ffwd)); + mmc->Rewind.connect (mem_fun (do_rewind)); + mmc->Stop.connect (mem_fun (do_stop)); + mmc->TrackRecordStatusChange.connect (mem_fun (do_record_status)); + + while (1) { + if (port->read (buf, 1) < 0) { + error << "cannot read byte" + << endmsg; + break; + } + } +} + + |