6 #ifndef OFXPDSPMIDI_PDSPSERIALOUT_H_INCLUDED 7 #define OFXPDSPMIDI_PDSPSERIALOUT_H_INCLUDED 18 #include <condition_variable> 20 #include "../DSP/pdspCore.h" 21 #include "../sequencer/SequencerSection.h" 27 namespace pdsp{
namespace serial {
38 class ScheduledSerialMessage{
40 ScheduledSerialMessage();
41 ScheduledSerialMessage(
int channel,
float message, chrono::high_resolution_clock::time_point schedule);
42 ScheduledSerialMessage(
const ScheduledSerialMessage &other);
43 ScheduledSerialMessage& operator= (
const ScheduledSerialMessage &other);
44 ~ScheduledSerialMessage();
48 chrono::high_resolution_clock::time_point scheduledTime;
52 static bool scheduledSort(
const ScheduledSerialMessage &lhs,
const ScheduledSerialMessage &rhs );
68 void openPort(
int index,
int baudRate=250000);
75 void openPort(
string name,
int baudRate=250000);
80 void close()
override;
103 pdsp::ExtSequencer&
channel(
int channelNumber);
108 void process(
int bufferSize ) noexcept
override;
110 void linkToMessageBuffer(pdsp::MessageBuffer &messageBuffer)
override;
111 void unlinkMessageBuffer(pdsp::MessageBuffer &messageBuffer)
override;
116 void prepareToPlay(
int expectedBufferSize,
double sampleRate )
override;
117 void releaseResources()
override ;
126 std::vector<ScheduledSerialMessage> messagesToSend;
128 std:: vector<pdsp::MessageBuffer*> inputs;
129 std::vector<int> channels;
138 void daemonFunction() noexcept;
139 static void daemonFunctionWrapper(
Output* parent);
141 std::thread daemonThread;
142 std::atomic<bool> runDaemon;
145 std::chrono::time_point<chrono::high_resolution_clock> bufferChrono;
147 double usecPerSample;
148 std::vector<ScheduledSerialMessage> circularBuffer;
150 std::atomic<int> writeindex;
157 #endif // __ANDROID__ 158 #endif // TARGET_OF_IOS 160 #endif //OFXPDSPMIDI_PDSPSERIALOUT_H_INCLUDED pdsp::ExtSequencer & channel(int channelNumber)
patch a pdsp::ScoreSection::out_message() method to the result of this method for message to the seri...
Definition: SerialOut.cpp:137
void setVerbose(bool verbose)
enable or disable diagnostic messages
Definition: SerialOut.cpp:80
Definition: SerialOut.h:29
void openPort(int index, int baudRate=250000)
open the port with the given index
Definition: SerialOut.cpp:88
Thread-safe value control with smoothing.
Definition: SequencerBridge.h:11
void close() override
close the opened port
Definition: SerialOut.cpp:125
bool isConnected()
return true if the port has been sucessfully opened
Definition: SerialOut.h:90
Definition: Preparable.h:36
void listPorts()
list the available ports
Definition: SerialOut.cpp:84