summaryrefslogtreecommitdiff
path: root/libs/midi++2/midi++
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-08-07 22:21:36 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-08-07 22:21:36 -0400
commit83a0c30c24ce6bb6e3e718c267a82fbaffc33b4b (patch)
treea02c8bb4877932c876f784527831b57d6ef0e5cc /libs/midi++2/midi++
parent616f2a0370a10dcc7372a95f6bca9f5a45698980 (diff)
major redesign of MIDI port heirarchy and management
basic, very flaky functionality is back. program unstable at present
Diffstat (limited to 'libs/midi++2/midi++')
-rw-r--r--libs/midi++2/midi++/jack_midi_port.h104
-rw-r--r--libs/midi++2/midi++/manager.h107
2 files changed, 0 insertions, 211 deletions
diff --git a/libs/midi++2/midi++/jack_midi_port.h b/libs/midi++2/midi++/jack_midi_port.h
deleted file mode 100644
index 492756067c..0000000000
--- a/libs/midi++2/midi++/jack_midi_port.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- Copyright (C) 1998-2010 Paul Barton-Davis
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-#ifndef __libmidi_port_h__
-#define __libmidi_port_h__
-
-#include <string>
-#include <iostream>
-
-#include "pbd/xml++.h"
-#include "pbd/crossthread.h"
-#include "pbd/signals.h"
-#include "pbd/ringbuffer.h"
-
-#include "evoral/Event.hpp"
-#include "evoral/EventRingBuffer.hpp"
-
-#include "midi++/types.h"
-#include "midi++/parser.h"
-#include "midi++/port.h"
-
-#include "ardour/port_engine.h"
-
-namespace MIDI {
-
-class Channel;
-class PortRequest;
-
-class JackMIDIPort : public Port {
- public:
- JackMIDIPort (std::string const &, Port::Flags, ARDOUR::PortEngine&);
- JackMIDIPort (const XMLNode&, ARDOUR::PortEngine&);
- ~JackMIDIPort ();
-
- XMLNode& get_state () const;
- void set_state (const XMLNode&);
-
- void cycle_start (pframes_t nframes);
- void cycle_end ();
-
- void parse (framecnt_t timestamp);
- int write (const byte *msg, size_t msglen, timestamp_t timestamp);
- int read (byte *buf, size_t bufsize);
- void drain (int check_interval_usecs);
- int selectable () const { return xthread.selectable(); }
-
- pframes_t nframes_this_cycle() const { return _nframes_this_cycle; }
-
- void reestablish ();
- void reconnect ();
-
- static void set_process_thread (pthread_t);
- static pthread_t get_process_thread () { return _process_thread; }
- static bool is_process_thread();
-
- static PBD::Signal0<void> MakeConnections;
- static PBD::Signal0<void> EngineHalted;
-
-private:
- ARDOUR::PortEngine& _port_engine;
- ARDOUR::PortEngine::PortHandle _port_handle;
-
- bool _currently_in_cycle;
- pframes_t _nframes_this_cycle;
- timestamp_t _last_write_timestamp;
- RingBuffer< Evoral::Event<double> > output_fifo;
- Evoral::EventRingBuffer<timestamp_t> input_fifo;
- Glib::Threads::Mutex output_fifo_lock;
- CrossThreadChannel xthread;
-
- int create_port ();
-
- /** Channel used to signal to the MidiControlUI that input has arrived */
-
- std::string _connections;
- PBD::ScopedConnection connect_connection;
- PBD::ScopedConnection halt_connection;
- void flush (void* port_buffer);
- void engine_halted ();
- void make_connections ();
- void init (std::string const &, Flags);
-
- static pthread_t _process_thread;
-
-};
-
-} // namespace MIDI
-
-#endif // __libmidi_port_h__
diff --git a/libs/midi++2/midi++/manager.h b/libs/midi++2/midi++/manager.h
deleted file mode 100644
index 7f4df5c6c8..0000000000
--- a/libs/midi++2/midi++/manager.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- Copyright (C) 1998 Paul Barton-Davis
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-#ifndef __midi_manager_h__
-#define __midi_manager_h__
-
-#include <list>
-
-#include <string>
-
-#include "pbd/rcu.h"
-
-#include "midi++/types.h"
-#include "midi++/port.h"
-
-namespace ARDOUR {
- class PortEngine;
-}
-
-namespace MIDI {
-
-class MachineControl;
-
-class Manager {
- public:
- ~Manager ();
-
- /** Signal the start of an audio cycle.
- * This MUST be called before any reading/writing for this cycle.
- * Realtime safe.
- */
- void cycle_start (pframes_t nframes);
-
- /** Signal the end of an audio cycle.
- * This signifies that the cycle began with @ref cycle_start has ended.
- * This MUST be called at the end of each cycle.
- * Realtime safe.
- */
- void cycle_end ();
-
- MachineControl* mmc () const { return _mmc; }
- Port *mtc_input_port() const { return _mtc_input_port; }
- Port *mtc_output_port() const { return _mtc_output_port; }
- Port *midi_input_port() const { return _midi_input_port; }
- Port *midi_output_port() const { return _midi_output_port; }
- Port *midi_clock_input_port() const { return _midi_clock_input_port; }
- Port *midi_clock_output_port() const { return _midi_clock_output_port; }
-
- Port* add_port (Port *);
- void remove_port (Port *);
-
- Port* port (std::string const &);
-
- void set_port_states (std::list<XMLNode*>);
-
- typedef std::list<Port *> PortList;
-
- boost::shared_ptr<const PortList> get_midi_ports() const { return _ports.reader (); }
-
- static void create (ARDOUR::PortEngine&);
-
- static Manager *instance () {
- return theManager;
- }
- static void destroy ();
-
- void reestablish ();
- void reconnect ();
-
- PBD::Signal0<void> PortsChanged;
-
- private:
- /* This is a SINGLETON pattern */
-
- Manager (ARDOUR::PortEngine&);
- static Manager *theManager;
-
- MIDI::MachineControl* _mmc;
- MIDI::Port* _mtc_input_port;
- MIDI::Port* _mtc_output_port;
- MIDI::Port* _midi_input_port;
- MIDI::Port* _midi_output_port;
- MIDI::Port* _midi_clock_input_port;
- MIDI::Port* _midi_clock_output_port;
-
- SerializedRCUManager<PortList> _ports;
-};
-
-} // namespace MIDI
-
-#endif // __midi_manager_h__