Line 725: |
Line 725: |
| Grok provided a comparison. | | Grok provided a comparison. |
| ''For developing LV2 plugins on Zynthian, DPF is the better choice due to its native LV2 support, lightweight design, and alignment with Zynthian’s open-source, Linux-based ecosystem. It integrates seamlessly with Zynthian’s plugin system and performs well on its hardware. Use JUCE only if you need cross-platform compatibility (e.g., developing for VST3/AU alongside LV2) or prefer its polished development tools, but be prepared to optimize heavily for Zynthian’s constraints.'' | | ''For developing LV2 plugins on Zynthian, DPF is the better choice due to its native LV2 support, lightweight design, and alignment with Zynthian’s open-source, Linux-based ecosystem. It integrates seamlessly with Zynthian’s plugin system and performs well on its hardware. Use JUCE only if you need cross-platform compatibility (e.g., developing for VST3/AU alongside LV2) or prefer its polished development tools, but be prepared to optimize heavily for Zynthian’s constraints.'' |
− |
| |
− | =So what is LV2?=
| |
− | [https://en.wikipedia.org/wiki/LV2 From wikipedia...]
| |
− | LV2 (LADSPA Version 2) is a set of royalty-free open standards[2] for music production plug-ins and matching host applications. It includes support for the synthesis and processing of digital audio and CV,[3] events such as MIDI and OSC, and provides a free alternative to audio plug-in standards such as Virtual Studio Technology (VST) and Audio Units (AU).
| |
− |
| |
− | LV2 is an extensible framework, allowing a program to load a plugin to do some processing. Note that the terms used here are generic on purpose because LV2 allows any type of data to be exchanged between the host and the plugin.
| |
− |
| |
− | It is a list of definitions that refer back to core definitions and these relationships are maintained in a format called RDF . . .
| |
− | ==So what is RDF ?==
| |
− | [https://en.wikipedia.org/wiki/Resource_Description_Framework Once more from wikipedia...]
| |
− |
| |
− | The Resource Description Framework (RDF) is a method to describe and exchange graph data. It was originally designed as a data model for metadata by the World Wide Web Consortium (W3C). It provides a variety of syntax notations and formats, of which the most widely used is Turtle (Terse RDF Triple Language).
| |
− |
| |
− | It describes objects and the relationships between them . . .
| |
− |
| |
− | RDF represents information using semantic triples, which comprise a subject, predicate, and object. Each item in the triple is expressed as a Web URI. Turtle provides a way to group three URIs to make a triple, and provides ways to abbreviate such information, for example by factoring out common portions of URIs. For example, information about Huckleberry Finn could be expressed as:
| |
− |
| |
− | <http://example.org/books/Huckleberry_Finn>
| |
− | <http://example.org/relation/author>
| |
− | <http://example.org/person/Mark_Twain> .
| |
− |
| |
− | In the zynthian plug in world it's primarily about the definition, allocation and mapping of audio and midi ports and parameters in the zynthian world to parameters provided by the LV2 plugin we are exchanging data with.
| |
− |
| |
− | But first you establish some prefixes so you aren't typing out URL all the time...
| |
− | Here the classes that are defined by lv2 are specified ( follow the link)
| |
− | and similarly DOAP defines structure for a software project, and SPDX is the software package data exchange. Thus a set of definitions are described that can be understood by humans ( to a certain extent) and machines (VERY specifically)
| |
− |
| |
− |
| |
− | @prefix lv2: <http://lv2plug.in/ns/lv2core#>.
| |
− | @prefix doap: <http://usefulinc.com/ns/doap#>.
| |
− | @prefix spdx: <http://spdx.org/rdf/terms#>.
| |
− |
| |
− | Then you use these prefixes to define the relationships we are concerned with...
| |
− |
| |
− | The 'a' is an atom. More news as I get it. . .
| |
− |
| |
− | <http://example.org/lv2/wikipediaexample/silence>
| |
− | a lv2:Plugin;
| |
− | lv2:binary <silence.so>;
| |
− | doap:name "Silence";
| |
− | doap:license spdx:GPL-3.0-or-later;
| |
− | rdfs:comment "This is an example plugin that includes an example plugin description."
| |
− |
| |
− | lv2:port [
| |
− | a lv2:AudioPort, lv2:OutputPort;
| |
− | lv2:index 0;
| |
− | lv2:symbol "output";
| |
− | lv2:name "Output";
| |
− | ].
| |
| | | |
| =LV2 Components= | | =LV2 Components= |