Coder Social home page Coder Social logo

lv2's Introduction

LV2

LV2 is a plugin standard for audio systems. It defines an extensible C API for plugins, and a format for self-contained "bundle" directories that contain plugins, metadata, and other resources. See http://lv2plug.in/ for more information.

This package contains specifications (C headers and Turtle data files), documentation generation tools, tests, and example plugins.

Installation

See the installation instructions for details on how to configure, build, and install LV2 with meson.

By default, on UNIX-like systems, everything is installed within the prefix, and LV2 bundles are installed in the "lv2" subdirectory of the libdir. On other systems, bundles are installed by default to the standard location for plugins on the system. The bundle installation directory can be overridden with the lv2dir option.

The specification bundles are run-time dependencies of LV2 applications. Programs expect their data to be available somewhere in LV2_PATH. See http://lv2plug.in/pages/filesystem-hierarchy-standard.html for details on the standard installation paths.

Headers

The lv2/ include namespace is reserved for this LV2 distribution. Other projects may extend LV2, but must place their headers elsewhere.

Headers are installed to includedir with paths like:

#include "lv2/urid/urid.h"

For backwards compatibility, if the old_headers option is set, then headers are also installed to the older URI-based paths:

#include "lv2/lv2plug.in/ns/ext/urid/urid.h"

Projects still using this style are encourated to migrate to the shorter style above.

lv2's People

Contributors

alex-tee avatar atsushieno avatar bmwiedemann avatar drobilla avatar falktx avatar hannesbraun avatar harryhaaren avatar hfiguiere avatar jpcima avatar mfisher31 avatar milksob avatar reesewang avatar reuk avatar timkrause2 avatar ventosus avatar x42 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lv2's Issues

feature-request : option to add unofficial/staging specs to the tree

It would be nice to have an easy way to to add custom extensions to the source-tree to deploy them for validation of plugins or hosts using those extensions.

Perhaps even offer a staging folder them upstream (open to pull-requests).

e.g. https://github.com/x42/lv2/ deploys ardour.org extensions when configured with ./waf configure --unofficial -- However that no longer works with the updated built-system in LV2 1.16 that hard-codes the spec-map.

"git clone --recursive" doesn't work

git clone --recursive https://github.com/drobilla/lv2.git
Cloning into 'lv2'...
remote: Enumerating objects: 851, done.
remote: Counting objects: 100% (851/851), done.
remote: Compressing objects: 100% (397/397), done.
remote: Total 10829 (delta 575), reused 692 (delta 452), pack-reused 9978
Receiving objects: 100% (10829/10829), 6.21 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (6855/6855), done.
Submodule 'waflib' (https://github.com/drobilla/autowaf.git) registered for path 'waflib'
Cloning into '/home/pi/zynthian-sw/lv2/waflib'...
remote: Enumerating objects: 33, done.
remote: Counting objects: 100% (33/33), done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 1070 (delta 8), reused 17 (delta 5), pack-reused 1037
Receiving objects: 100% (1070/1070), 1.27 MiB | 282.00 KiB/s, done.
Resolving deltas: 100% (586/586), done.
fatal: remote error: upload-pack: not our ref 878bdba53979f11fa582088e47997df129e56d16
fatal: the remote end hung up unexpectedly
Fetched in submodule path 'waflib', but it did not contain 878bdba53979f11fa582088e47997df129e56d16. Direct fetching of that commit failed.

Make lv2:Plugin a subclass of doap:Project

LV2 plugins need to use some doap properties to identify the plugin (like doap:name), but without the plugin being a doap:Project having those values kinda breaks the rules.

I know this might be a bit tricky, but considering LV2 requires a doap:name in each plugin, I think it makes sense.
Also, without doap:Project subclass, developer and maintainer are considered invalid by sord_validate:

error: Subject not in property domain:
       http://moddevices.com/plugins/caps/CabinetIII
       http://usefulinc.com/ns/doap#developer
       b721
note: Domain is <http://usefulinc.com/ns/doap#Project>
error: Subject not in property domain:
       http://moddevices.com/plugins/caps/CabinetIII
       http://usefulinc.com/ns/doap#maintainer
       b722
note: Domain is <http://usefulinc.com/ns/doap#Project>

lv2 compiler commands for window

Could one make a lv2 compiler commands for building lv2 plugins on window? Being that more and more daws are on windows are stating to use lv2 plugins. This will those on those on the motioned os who want your plugins but aren't coders.
could ms power shell used for this?

UI resize should also be an extensionData

Some plugins are exposing resize to the host via extensionData (infamous-plugins).
This allows the host to resize the plugin UI without caring much about the underlying system.

As per good lv2 practice we declare the support extension-data in the ttl file, like this:

lv2:extensionData ui:idleInterface, ui:resize ;

ui:resize is not an extensionData though, and sord_validate complains.

LV2_State_Interface does not provide functions to iterate all saved states.

Consider a plugin that can save different number of various parameters. When it saves the state, it exactly knows the set of stored parameters. But how it should handle all parameters when the state is restored? Current function prototype:

	LV2_State_Status (*restore)(LV2_Handle                  instance,
	                            LV2_State_Retrieve_Function retrieve,
	                            LV2_State_Handle            handle,
	                            uint32_t                    flags,
	                            const LV2_Feature *const *  features);

does only allow to retrieve the property with URID that plugin exactly knows. But what if plugin does generate URID, for example, according to the following schema:

http://lsp-plug.in/kvt/scene/object/<object-id>/material/dissipation/inner

?
Even if we know the number of objects, there is no possibility to write generalized code that provides a key-value storage that will be saved with the LV2:State interface and then fully restored.

It would be nice to have some Iterator interface that could allow the plugin to iterate all properties previously stored in it's state and handle them manually.

Clarification on time:beat

Property time:beat
beat
OWL Type Datatype Property
Domain time:Time
Range xsd:double

What is the intention about time:beat? Is it a global counter, or is it the same as time:barBeat, with double precision? The question rose because Qtractor delivered me the barBeat value, but as a long, and I thought it was intended as a global value.

LV2:Worker thread racing guarantees

Consider the following case:

  1. Some thread submits a job from run() method.
  2. The job is put into hosts' queue.
  3. The host stops plugin execution and calls the plugin for destruction.
  4. The job is taken from the queue by some thread and some non-RT thread of the host starts it's execution.

Such scenario can yield to data racing and, I think, should be clarified in documentation. The main questions are:

  1. How real this case is?
  2. Are there any guarantees that the host won't execute the job if plugin is called for destruction?

error: -Wl,--as-needed: 'linker' input unused

1.16.0 fails to build on FreeBSD:

[1/2] Compiling ^[[32mbuild/.conf_check_3219d71990d22135f7e2ac2e7478e9a5/test.c^[[0m

['cc', '-Wl,--as-needed', '-I/usr/ports/audio/lv2/work/lv2-1.16.0', '-O2', '-pipe', '-fno-omit-frame-pointer', '-fstack-protector-strong', '-fno-strict-aliasing', '-DNDEBUG', '-fshow-column', '-Werror', '-std=c99', '-I/usr/ports/audio/lv2/work/lv2-1.16.0/build/.conf_check_3219d71990d22135f7e2ac2e7478e9a5/testbuild', '-DLV2_VERSION="1.16.0"', '../test.c', '-c', '-o/usr/ports/audio/lv2/work/lv2-1.16.0/build/.conf_check_3219d71990d22135f7e2ac2e7478e9a5/testbuild/test.c.1.o', '-fno-omit-frame-pointer']
err: cc: error: -Wl,--as-needed: 'linker' input unused [-Werror,-Wunused-command-line-argument]

Two problems:

  • Linker flags should not be supplied to compillation commands
  • The use of -Wl,--as-needed is a mistake. Which symbols are missing and should be resolved at the user's process level? LV2 plugins just don't have such situations.

Forge crash when writing containers to short buffers

When writing data to a lv2 atom port, forge.h does no correctly check available port-buffer-size, leading so to segfaults.

a potential fix is to change forge.h

@@ -298,6 +298,6 @@
 	} else {
 		out = (LV2_Atom_Forge_Ref)forge->buf + forge->offset;
 		uint8_t* mem = forge->buf + forge->offset;
-		if (forge->offset + size > forge->size) {
+		if (forge->offset + size >= forge->size) {
 			return 0;
 		}
 		forge->offset += size;

This was found by re-using an atom-port, writing to it twice.

if the first write is an empty sequence, the "capacity" is 8 bytes. Trying to write a new sequence segfauls in lv2_atom_forge_raw.

see also lsp-plugins/lsp-plugins#28 (comment)
example code to reproduce: https://gist.github.com/x42/b82769d2b3567b0a5c77c2bd857326ae

lv2_validate reports "Object not in range" errors

It is probably a variant of #1, but reproduces in the latest code (as new as 18a9aef) - lv2_validate reports some "Object not in range" errors:

/sources/LV2$ env | grep LV2_PATH
LV2_PATH=/sources/LV2/dist/lib/lv2
/sources/LV2$ which lv2ls
/sources/LV2/dist/bin/lv2ls
/sources/LV2$ lv2ls
http://drobilla.net/plugins/mda/Ambience
http://drobilla.net/plugins/mda/Bandisto
http://drobilla.net/plugins/mda/BeatBox
<snip>
http://lv2plug.in/plugins/eg-amp
http://lv2plug.in/plugins/eg-fifths
http://lv2plug.in/plugins/eg-metro
http://lv2plug.in/plugins/eg-midigate
http://lv2plug.in/plugins/eg-params
http://lv2plug.in/plugins/eg-sampler
http://lv2plug.in/plugins/eg-scope#Mono
http://lv2plug.in/plugins/eg-scope#Stereo
<snip>
/sources/LV2$ lv2_validate /sources/LV2/dist/lib/lv2/eg-sampler.lv2/sampler.ttl error: Literal `1.0' datatype <http://www.w3.org/2001/XMLSchema#decimal> is not compatible with <http://lv2plug.in/ns/ext/atom#Float>

       b352
       http://lv2plug.in/ns/ext/parameters#gain
       1.0
error: Object not in range <http://lv2plug.in/ns/ext/atom#Float>

       b352
       http://lv2plug.in/ns/ext/parameters#gain
       1.0
error: Literal `0.1234' datatype <http://www.w3.org/2001/XMLSchema#decimal> is not compatible with <http://lv2plug.in/ns/ext/atom#Float>

       b597
       http://lv2plug.in/plugins/eg-params#float
       0.1234
error: Object not in range <http://lv2plug.in/ns/ext/atom#Float>

       b597
       http://lv2plug.in/plugins/eg-params#float
       0.1234
error: Literal `0.0' datatype <http://www.w3.org/2001/XMLSchema#decimal> is not compatible with <http://lv2plug.in/ns/ext/atom#Float>

       b597
       http://lv2plug.in/plugins/eg-params#lfo
       0.0
error: Object not in range <http://lv2plug.in/ns/ext/atom#Float>

       b597
       http://lv2plug.in/plugins/eg-params#lfo
       0.0
error: Literal `0.0' datatype <http://www.w3.org/2001/XMLSchema#decimal> is not compatible with <http://lv2plug.in/ns/ext/atom#Float>

       b597
       http://lv2plug.in/plugins/eg-params#spring
       0.0
error: Object not in range <http://lv2plug.in/ns/ext/atom#Float>

       b597
       http://lv2plug.in/plugins/eg-params#spring
       0.0
error: Literal `1.0' datatype <http://www.w3.org/2001/XMLSchema#decimal> is not compatible with <http://lv2plug.in/ns/ext/atom#Float>

       b831
       http://lv2plug.in/ns/ext/parameters#gain
       1.0
error: Object not in range <http://lv2plug.in/ns/ext/atom#Float>

       b831
       http://lv2plug.in/ns/ext/parameters#gain
       1.0
Found 10 errors among 97 files (checked 2109 restrictions)

LV2 atoms are not portable between architectures with different endianess

From LV2 spec:

Each Atom type defines a binary format for use at runtime, but also a serialisation that is natural
to express in Turtle format. Thus, this specification defines a powerful real-time appropriate
data model, as well as a *portable* way to serialise any data in that model. This is particularly
useful for inter-process communication, saving/restoring state, and describing values in plugin data files.

If we try to send an atom POD from LE architecture to the BE architecture, we'll get nothing good. OSC protocol solves this issues by just specifying that all data should be stored in big-endian format. LV2's forge and parse headers don't take any considerations about endianess of the architecture when encoding/decoding PODs.

Add support of batch operations to URID extension

Some hosts like Carla perform complete isolation of plugins: all plugins are launched as separate processes in the system so crash of one plugin will not affect other plugins. Additionally, all UIs are executed as separate processes, so the communication between UI and the plugin is performed via standard system IPC that is slow.

That yields to the following case: when plugin requests many URIDs at instantiation time, all calls are synchronously executed via the IPC mechanism of the host, so each URID.map and URID.unmap call takes much longer time than expected. Launching multiple sequential requests performs TIMES slower than on hosts that shares the common address space with plugins.

That's why very reasonable would be implementation of extensions for the URID interface that allow batch operations with URIDs. The following gist shows an prototype of such interface, as a part of the original <lv2/ns/ext/urid/urid.h> header:

https://gist.github.com/sadko4u/8f11ae5632424c30c0578ba233a899a4

Here's the related issue:

lsp-plugins/lsp-plugins#25

Also It would be nice to see any suggestions related to this feature from @x42 and @falkTX .

Validation of multi-line base64 binary-encoded-string fails

On the following file (among others, but we can use that as example): https://github.com/DISTRHO/DISTRHO-Ports/blob/master/static-lv2-ttl/Vitalium-unfa.lv2/Analog_Brass.ttl

lv2_validate fails with:

...
X25hbWUiOiIifX0A' does not match <http://www.w3.org/2001/XMLSchema#base64Binary> pattern `(([A-Za-z0-9+/] *[A-Za-z0-9+/] *[A-Za-z0-9+/] *[A-Za-z0-9+/] *)*(([A-Za-z0-9+/] *[A-Za-z0-9+/] *[A-Za-z0-9+/] *[A-Za-z0-9+/])|([A-Za-
z0-9+/] *[A-Za-z0-9+/] *[AEIMQUYcgkosw048] *=)|([A-Za-z0-9+/] *[AQgw] *= *=)))?'
error: Object not in range <http://www.w3.org/2001/XMLSchema#base64Binary>

       b10047
       urn:juce:stateBinary

Preset file was generated with jalv, assumed to be correct.
It loads correctly with lilv as expected.

issue with lv2_validate

I am trying to validate my plugin (just a PoC at the moment) and get the follwoing error:

lv2_validate db-meter.lv2/manifest.ttl
Skipping file /opt/homebrew/Cellar/lv2/1.18.10/lib/lv2/core.lv2/lv2core.doap.ttl
error: https://github.com/pedalboard/db-meter.lv2.git has no <http://usefulinc.com/ns/doap#name> values of type <http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral>

       https://github.com/pedalboard/db-meter.lv2.git
       http://www.w3.org/1999/02/22-rdf-syntax-ns#type
       http://lv2plug.in/ns/lv2core#Plugin
Found 1 errors among 83 files (checked 1875 restrictions)

However I have the following value in the manifest:

@prefix doap:  <http://usefulinc.com/ns/doap#> .
@prefix lv2:   <http://lv2plug.in/ns/lv2core#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix units: <http://lv2plug.in/ns/extensions/units#> .

<https://github.com/pedalboard/db-meter.lv2.git>
        a lv2:Plugin ,
                lv2:AmplifierPlugin ;
        doap:name "dB Meter" ;
... 

I dont understan what is wrong in this case, any hint would be very much appreciated

lv2 fails to build with Python 3.7 (newer waf required?)

I am trying to build lv2-0.14.0 from source within pkgsrc, the NetBSD package collection. My Python interpreter is Python 3.7, and the build fails while configuring.

For serd and sord, similar failures went away when I upgraded the packages to their newest versions. I assume that they bundle a more recent waf version that is compatible with Python 3.7.

Would it be possible to release a 0.14.1 or so that just updates the bundled version of waf? Thanks in advance :)

Request: lv2:shortname

Right now in LV2 we have full-length parameter names and identifier symbols.
Using the full name of a parameter is not always a good idea though, specially for hosts that don't reserve a lot of space for them.

I propose adding an official lv2:shortname, ala doap:shortname but that can be used for lv2 stuff like parameters.
We need it in MOD because some plugins (like setbfree FXs) have seriously long names.
It's possible to automatically crop the name, but the result is not always understandable.
DAWs with a direct-parameter-access in the mixer strip (like Ardour and Qtractor) can benefit from this as well.

MIDI gate is not very happy in Ardour

Hello!

The behaviour of the MIDI Gate plugin seems somewhat erratic when used inside Ardour. For whatever reason, it seems that almost immediately the plugin gets out of sync with regards to whether or not there are MIDI notes playing. Often, the gate will get stuck either off or on. Sometimes it'll even give different results for the left and right audio channel (stuck on left, stuck off right, etc).

This is the latest source (from this repos) and Ardour 5.12 built from Arch Linux packages.

I realize the above is not much to go on. If there's more information I can give you, let me know!

Cannot build old releases due to autowaf repository deletion

For reproducible builds, it is important to keep old releases working, so final binaries remain mostly the same no matter who and when we build things.
Sadly this is no longer possible for the lv2 project when using a git hash as version, failing as such:

HEAD is now at d97a1a4 LV2 1.18.4
fatal: repository '../../drobilla/autowaf.git' does not exist
fatal: clone of '../../drobilla/autowaf.git' into submodule path '/tmp/mbs/moddwarf/plugins-dep/build/lv2-d97a1a4daff228bdd62c68859959d13077e47026/waflib' failed
Failed to clone 'waflib'. Retry scheduled
fatal: repository '../../drobilla/autowaf.git' does not exist
fatal: clone of '../../drobilla/autowaf.git' into submodule path '/tmp/mbs/moddwarf/plugins-dep/build/lv2-d97a1a4daff228bdd62c68859959d13077e47026/waflib' failed
Failed to clone 'waflib' a second time, aborting

How to distribute specification bundles?

This may be more of a debian packaging issue, than an lv2 issue; but it seems like a good idea to ask anyway.

My application is an LV2 host. It's distributed primarily via Debian package, to raspberry pi devices, which run an Ubuntu-directed Raspberry Pi OS.

When my users install the package, the lv2 specification bundles (e.g. /usr/lib/lv2/core.lv2/manifest.ttl and friends) are not installed.

On my development machines, the files are installed from the lv2-dev Debian package. I can't seem to find an lv2 package that doesn't include C header files. It's small thing, I suppose, if I install spurious files in /usr/include.

But I was wondering, is there supposed to be an alternative to the lv2-dev package?

Tail size reporting to the host

Modern plugin formats like VST3 and CLAP support reporting of the processed tail size that can be generated by delays or reverb. There are three kinds of values that can be reported by the plugin:

  • No tail, the value of 0.
  • Infinite tail, the value of UINT32_MAX (for LV2 it can be just negative floating-point value).
  • Some limited tail in samples.

I think it is a good reason to support it in LV2, too.
For example, it can be the same behaviour to the latency value: just a port which reports some floating-point value.

The standard plugins don't validate

$ git log -n 1
commit 39c7c726cd52b2863fcea356cafe1bcab2ba7f37 (HEAD -> master, origin/master, origin/HEAD)
Author: David Robillard <[email protected]>
Date:   2017-07-08 18:24:11 +0200

    Fix outdated port description in documentation

$ sord_validate $(find . -type f -name '*.ttl')
Literal `0.1234' datatype <http://www.w3.org/2001/XMLSchema#decimal> is not compatible with <http://lv2plug.in/ns/ext/atom#Float>
error: Object not in property range:
       b739
       http://lv2plug.in/plugins/eg-params#float
       0.1234
note: Range is <http://lv2plug.in/ns/ext/atom#Float>
Literal `0.0' datatype <http://www.w3.org/2001/XMLSchema#decimal> is not compatible with <http://lv2plug.in/ns/ext/atom#Float>
error: Object not in property range:
       b739
       http://lv2plug.in/plugins/eg-params#lfo
       0.0
note: Range is <http://lv2plug.in/ns/ext/atom#Float>
`0' is not >= <http://www.w3.org/2001/XMLSchema#long> minimum `-9223372036854775808'
error: Literal does not match datatype:
       b739
       http://lv2plug.in/plugins/eg-params#long
       0
Literal `0.0' datatype <http://www.w3.org/2001/XMLSchema#decimal> is not compatible with <http://lv2plug.in/ns/ext/atom#Float>
error: Object not in property range:
       b739
       http://lv2plug.in/plugins/eg-params#spring
       0.0
note: Range is <http://lv2plug.in/ns/ext/atom#Float>
Literal `1.0' datatype <http://www.w3.org/2001/XMLSchema#decimal> is not compatible with <http://lv2plug.in/ns/ext/atom#Float>
error: Object not in property range:
       b743
       http://lv2plug.in/ns/ext/parameters#gain
       1.0
note: Range is <http://lv2plug.in/ns/ext/atom#Float>
Found 5 errors among 88 files (checked 1832 restrictions)

As these plugins are used in the official documentation, and the documentation states:

After writing a plugin, be sure to validate the data to check for typos and invalid constructs.

... it seems pretty poor form not to provide a validation example or supply definitions that do validate!

Wayland window support in specification

Hi!
It seems that Wayland is extensively coming to Linux and we still have no Wayland window specification in LV2 standard but still have Gtk2 and Gtk3.
CLAP already has added support of Wayland window specification. Maybe it is also a good reason to add it to LV2? The only question is, how to deal with the case when UI supports both Wayland and X11 protocols.

Please make a new release

The latest stable release is 1.18.2, and there have been a few changes made since then.
For example ba34a58 which defines LV2_CORE__enabled that was missing, plus some metadata/syntax improvements.

For packaging, would be nice to have all the recent things in a tagged release.
I have been using the latest git/HEAD without issues, it is just nicer to have it as part of a release.
Thanks

cannot find plugins/eg-scope.lv2/examploscope_ui.so.p/examploscope_ui.c.o: No such file or directory

gcc  -o plugins/eg-scope.lv2/examploscope_ui.so plugins/eg-scope.lv2/examploscope_ui.so.p/examploscope_ui.c.o -I/home/jman/tmp/ffmpeg-build-script/workspace/include -I/usr/local/include -I/usr/include -I/usr/include/x86_64-linux-gnu -I/usr/include/SDL2 -I/usr/lib/x86_64-linux-gnu/pulseaudio -I/usr/include/openjpeg-2.5 -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,examploscope_ui.so -g -O2 -ffunction-sections -fdata-sections -pipe -march=native /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so /usr/lib/x86_64-linux-gnu/libatk-1.0.so /usr/lib/x86_64-linux-gnu/libcairo.so /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so /usr/lib/x86_64-linux-gnu/libgio-2.0.so /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so /usr/lib/x86_64-linux-gnu/libpango-1.0.so /usr/lib/x86_64-linux-gnu/libgobject-2.0.so /usr/lib/x86_64-linux-gnu/libglib-2.0.so /home/jman/tmp/ffmpeg-build-script/workspace/lib/libharfbuzz.a -pthread -lm /home/jman/tmp/ffmpeg-build-script/workspace/lib/libfontconfig.a /home/jman/tmp/ffmpeg-build-script/workspace/lib/libfreetype.a -Wl,--end-group
/usr/bin/ld: cannot find plugins/eg-scope.lv2/examploscope_ui.so.p/examploscope_ui.c.o: No such file or directory
collect2: error: ld returned 1 exit status

I did this on Ubuntu Jammy with all updates currently installed. This works on Debian 12. Not sure why this is missing the files mentioned....

adding this to the command fixes it which makes sense -Dplugins=disabled

eg-sampler crashes

Hi

I'm a complete beginner to audio plugin programming... So I studied your examples and I wanted to run the sampler. Unfortunately I get no sound and when I click on "Request Sample" my DAW crashes. I tried with ardour5 and ardour6 (rc1). The eg-amp works without any issues. I tried with master which seems to be equal to 1.18.0.

Update: I've just tried with Carla which gives some more information each time I click on the play button:

Unknown port event format
Warning: LV2 UI sending atom with invalid size 12! size: 11, padded-size: 16

Thanks and Regards
Oliver

lv2:designation lv2:latency reported invalid by sord_validate

Using sord_validate on a port with this bit in:

lv2:designation lv2:latency;

leads to this error:

error: Object not in property range:
       b732
       http://lv2plug.in/ns/lv2core#designation
       http://lv2plug.in/ns/lv2core#latency

Also related, designation of time properties gives this error:

error: Object not in property range:
       b700
       http://lv2plug.in/ns/lv2core#designation
       http://lv2plug.in/ns/ext/time#beatsPerMinute

lv2:designation needs to be less strict.

lv2core not detected by pkg-config (debian stretch)

Some well-known LV2 plugins doesn't compile out the box because pkg-config doesn't detect "lv2core".
For instance:

root@zynthian:/zynthian/zynthian-sw/plugins/triceratops.lv2# ./waf configure
Setting top to                           : /home/pi/zynthian-sw/plugins/triceratops.lv2 
Setting out to                           : /home/pi/zynthian-sw/plugins/triceratops.lv2/build 
Checking for 'gcc' (c compiler)          : /usr/bin/gcc 
Checking for 'g++' (c++ compiler)        : /usr/bin/g++ 

Global Configuration 
 * Install prefix                        : /usr/local 
 * Debuggable build                      : False 
 * Strict compiler flags                 : False 
 * Build documentation                   : False 

triceratops Configuration 
Checking for program pkg-config          : /usr/bin/pkg-config 
Checking for 'lv2core'                   : not found 
The configuration failed
(complete log in /home/pi/zynthian-sw/plugins/triceratops.lv2/build/config.log)

The problem seems to get solved with a simple:

ln -s /usr/local/lib/pkgconfig/lv2.pc /usr/local/lib/pkgconfig/lv2core.pc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.