MCPcopy Create free account
hub / github.com/VCVRack/Rack / sendMessage

Method sendMessage

src/rtmidi.cpp:145–164  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

143 }
144
145 void sendMessage(const midi::Message& message) override {
146 // If frame is undefined, send message immediately
147 if (message.getFrame() < 0) {
148 sendMessageNow(message);
149 return;
150 }
151 // Schedule message to be sent by worker thread
152 MessageSchedule ms;
153 ms.message = message;
154 int64_t deltaFrames = message.getFrame() - APP->engine->getBlockFrame();
155 // Delay message by current Engine block size
156 deltaFrames += APP->engine->getBlockFrames();
157 // Compute time in next Engine block to send message
158 double deltaTime = deltaFrames * APP->engine->getSampleTime();
159 ms.timestamp = APP->engine->getBlockTime() + deltaTime;
160
161 std::lock_guard<decltype(mutex)> lock(mutex);
162 messageQueue.push(ms);
163 cv.notify_one();
164 }
165
166 // Consumer thread methods
167

Callers 1

sendMessageNowMethod · 0.45

Calls 6

getBlockFrameMethod · 0.80
getBlockFramesMethod · 0.80
getSampleTimeMethod · 0.80
getBlockTimeMethod · 0.80
getFrameMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected