25#ifndef LMMS_LV2_PROC_H
26#define LMMS_LV2_PROC_H
28#include "lmmsconfig.h"
36#include <ringbuffer/ringbuffer.h>
70 std::vector<PluginIssue> &issues);
95 template<
class Functor>
98 for (std::unique_ptr<Lv2Ports::PortBase>& port :
m_ports)
103 template<
class Functor>
106 for (
const std::unique_ptr<Lv2Ports::PortBase>& port :
m_ports)
135 unsigned firstChan,
unsigned num,
f_cnt_t frames);
184 std::vector<std::unique_ptr<Lv2Ports::PortBase>>
m_ports;
#define check(expr)
Definition blargg_source.h:32
Definition AutomatableModel.h:77
std::size_t modelNum() const
Definition LinkedModelGroups.h:99
LinkedModelGroup(Model *parent)
Definition LinkedModelGroups.h:61
Definition Lv2Features.h:55
Definition Lv2Options.h:62
void copyBuffersFromCore(const SampleFrame *buf, unsigned firstChan, unsigned num, f_cnt_t frames)
Definition Lv2Proc.cpp:327
Lv2Options m_options
Definition Lv2Proc.h:177
const StereoPortRef & inPorts() const
Definition Lv2Proc.h:92
void copyModelsToCore()
Bring values from all ports to the LMMS core.
Definition Lv2Proc.cpp:302
void foreach_port(const Functor &ftor) const
Definition Lv2Proc.h:104
class AutomatableModel * modelAtPort(const QString &uri)
Definition Lv2Proc.cpp:426
void initPluginSpecificFeatures()
Definition Lv2Proc.cpp:527
void copyBuffersToCore(SampleFrame *buf, unsigned firstChan, unsigned num, f_cnt_t frames) const
Definition Lv2Proc.cpp:352
void initMOptions()
initialize m_options
Definition Lv2Proc.cpp:499
~Lv2Proc() override
Definition Lv2Proc.cpp:207
static bool portIsSideChain(const LilvPlugin *plugin, const LilvPort *port)
Definition Lv2Proc.cpp:894
void dumpPort(std::size_t num)
Definition Lv2Proc.cpp:849
void shutdownPlugin()
Deactivate instance.
Definition Lv2Proc.cpp:474
Lv2Features m_features
Definition Lv2Proc.h:174
constexpr static const std::size_t m_maxMidiInputEvents
Definition Lv2Proc.h:191
std::map< std::string, AutomatableModel * > m_connectedModels
Definition Lv2Proc.h:206
Lv2Ports::AtomSeq * m_midiOut
Definition Lv2Proc.h:187
void dumpPorts()
Debug function to print ports to stdout.
Definition Lv2Proc.cpp:217
friend class Lv2ProcSuspender
Definition Lv2Proc.h:67
Lv2Ports::AtomSeq * m_midiIn
Definition Lv2Proc.h:187
ringbuffer_t< struct MidiInputEvent > m_midiInputBuf
MIDI ringbuffer (for MIDI events going to the plugin).
Definition Lv2Proc.h:196
StereoPortRef m_outPorts
Definition Lv2Proc.h:186
std::atomic_flag m_ringLock
spinlock for the MIDI ringbuffer (for MIDI events going to the plugin)
Definition Lv2Proc.h:193
void loadFileInternal(const QString &file)
load a file in the plugin, but don't do anything in LMMS
Definition Lv2Proc.cpp:547
void connectPort(std::size_t num)
connect m_ports[portNum] with Lv2
Definition Lv2Proc.cpp:838
Semaphore m_workLock
Definition Lv2Proc.h:181
void copyModelsFromCore()
Definition Lv2Proc.cpp:230
void reload()
Definition Lv2Proc.cpp:212
void createPort(std::size_t portNum)
fill m_ports[portNum] with metadata
Definition Lv2Proc.cpp:555
const LilvPlugin * m_plugin
Definition Lv2Proc.h:172
std::vector< std::unique_ptr< Lv2Ports::PortBase > > m_ports
Definition Lv2Proc.h:184
void handleMidiInputEvent(const class MidiEvent &event, const TimePos &time, f_cnt_t offset)
Definition Lv2Proc.cpp:394
Lv2Proc(const LilvPlugin *plugin, Model *parent)
Definition Lv2Proc.cpp:193
static int32_t defaultEvbufSize()
Definition Lv2Proc.h:201
static bool portIsOptional(const LilvPlugin *plugin, const LilvPort *port)
Definition Lv2Proc.cpp:903
bool hasNoteInput() const
Definition Lv2Proc.cpp:487
const StereoPortRef & outPorts() const
Definition Lv2Proc.h:94
StereoPortRef & outPorts()
Definition Lv2Proc.h:93
void run(f_cnt_t frames)
Run the Lv2 plugin instance for.
Definition Lv2Proc.cpp:371
void foreach_port(const Functor &ftor)
Definition Lv2Proc.h:96
LilvInstance * m_instance
Definition Lv2Proc.h:173
void onSampleRateChanged()
ringbuffer_reader_t< struct MidiInputEvent > m_midiInputReader
MIDI ringbuffer reader.
Definition Lv2Proc.h:198
std::size_t controlCount() const
Definition Lv2Proc.h:159
StereoPortRef & inPorts()
Definition Lv2Proc.h:91
void initPlugin()
Create ports and instance, connect ports, activate plugin.
Definition Lv2Proc.cpp:435
std::optional< Lv2Worker > m_worker
Definition Lv2Proc.h:180
StereoPortRef m_inPorts
Definition Lv2Proc.h:186
void createPorts()
allocate m_ports, fill all with metadata, and assign meaning of ports
Definition Lv2Proc.cpp:721
static AutoLilvNode uri(const char *uriStr)
Definition Lv2Proc.cpp:912
Definition MidiEvent.h:37
Type
Definition Plugin.h:76
Issue type bundled with informational string.
Definition PluginIssue.h:66
Definition SampleFrame.h:41
Definition LmmsSemaphore.h:67
static uintptr_t parent
Definition pugl.h:1644
struct LilvPortImpl LilvPort
Definition lilv.h:84
struct LilvPluginImpl LilvPlugin
Definition lilv.h:82
struct LilvInstanceImpl LilvInstance
Definition lilv.h:89
int int32_t
Definition mid.cpp:97
Definition Lv2Ports.cpp:41
Definition AudioAlsa.cpp:35
std::unique_ptr< LilvNode, LilvNodeDeleter > AutoLilvNode
Definition Lv2Basics.h:63
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43
Definition Lv2Ports.h:214
Definition Lv2Ports.h:183
Definition Lv2Ports.h:134
Lv2Ports::Audio * m_right
unused, or right port in case of stereo
Definition Lv2Proc.h:88
Lv2Ports::Audio * m_left
mono port or left port in case of stereo
Definition Lv2Proc.h:86
struct zdirent * file
Definition win32.c:1500