diff --git a/examples/amp_plugin.nim b/examples/amp_plugin.nim index 9330a94..7cae9d0 100644 --- a/examples/amp_plugin.nim +++ b/examples/amp_plugin.nim @@ -67,17 +67,21 @@ proc extensionData(uri: cstring): pointer {.cdecl.} = proc NimMain() {.cdecl, importc.} +let descriptor = Lv2Descriptor( + uri: cstring(PluginUri), + instantiate: instantiate, + connectPort: connectPort, + activate: activate, + run: run, + deactivate: deactivate, + cleanup: cleanup, + extensionData: extensionData, +) + proc lv2Descriptor(index: cuint): ptr Lv2Descriptor {. cdecl, exportc, dynlib, extern: "lv2_descriptor".} = - NimMain() - if index == 0: - result = createShared(Lv2Descriptor) - result.uri = cstring(PluginUri) - result.instantiate = instantiate - result.connectPort = connectPort - result.activate = activate - result.run = run - result.deactivate = deactivate - result.cleanup = cleanup - result.extensionData = extensionData + NimMain() + return addr(descriptor) + + return nil diff --git a/examples/faustlpf_plugin.nim b/examples/faustlpf_plugin.nim index bb951e1..2007071 100644 --- a/examples/faustlpf_plugin.nim +++ b/examples/faustlpf_plugin.nim @@ -16,8 +16,6 @@ type freq: ptr cfloat flt: ptr faustlpf -proc NimMain() {.cdecl, importc.} - proc instantiate(descriptor: ptr Lv2Descriptor; sampleRate: cdouble; bundlePath: cstring; features: ptr UncheckedArray[ptr Lv2Feature]): @@ -54,31 +52,30 @@ proc run(instance: Lv2Handle; nSamples: cuint) {.cdecl.} = computefaustlpf(plug.flt, nSamples.cint, addr plug.input, addr plug.output) -proc deactivate(instance: Lv2Handle) {.cdecl.} = - discard - - proc cleanup(instance: Lv2Handle) {.cdecl.} = let plug = cast[ptr FaustLPFPlugin](instance) deletefaustlpf(plug.flt) freeShared(plug) -proc extensionData(uri: cstring): pointer {.cdecl.} = - return nil +proc NimMain() {.cdecl, importc.} +let descriptor = Lv2Descriptor( + uri: cstring(PluginUri), + instantiate: instantiate, + connectPort: connectPort, + activate: activate, + run: run, + deactivate: nil, + cleanup: cleanup, + extensionData: nil, +) + proc lv2Descriptor(index: cuint): ptr Lv2Descriptor {. cdecl, exportc, dynlib, extern: "lv2_descriptor".} = - NimMain() - if index == 0: - result = createShared(Lv2Descriptor) - result.uri = cstring(PluginUri) - result.instantiate = instantiate - result.connectPort = connectPort - result.activate = activate - result.run = run - result.deactivate = deactivate - result.cleanup = cleanup - result.extensionData = extensionData + NimMain() + return addr(descriptor) + + return nil diff --git a/examples/miditranspose.lv2/miditranspose.ttl b/examples/miditranspose.lv2/miditranspose.ttl index e4c01c5..ead8f1d 100644 --- a/examples/miditranspose.lv2/miditranspose.ttl +++ b/examples/miditranspose.lv2/miditranspose.ttl @@ -6,7 +6,6 @@ @prefix midi: . @prefix opts: . @prefix params: . -@prefix props: . @prefix rdfs: . @prefix units: . @prefix urid: . @@ -49,7 +48,7 @@ lv2:minimum -12 ; lv2:maximum 12 ; units:unit units:semitone12TET - ] ; + ] ; rdfs:comment "A simple MIDI transposition LV2 plugin." ; diff --git a/examples/miditranspose_plugin.nim b/examples/miditranspose_plugin.nim index 88c91c3..669259a 100644 --- a/examples/miditranspose_plugin.nim +++ b/examples/miditranspose_plugin.nim @@ -52,10 +52,6 @@ proc connectPort(instance: Lv2Handle; port: cuint; plug.transposition = cast[ptr cfloat](dataLocation) -proc activate(instance: Lv2Handle) {.cdecl.} = - discard - - proc run(instance: Lv2Handle; nSamples: cuint) {.cdecl.} = let plug = cast[ptr MidiTransposePlugin](instance) let outCapacity = plug.output.atom.size @@ -80,32 +76,28 @@ proc run(instance: Lv2Handle; nSamples: cuint) {.cdecl.} = discard atomSequenceAppendEvent(plug.output, outCapacity, ev) -proc deactivate(instance: Lv2Handle) {.cdecl.} = - discard - - proc cleanup(instance: Lv2Handle) {.cdecl.} = freeShared(cast[ptr MidiTransposePlugin](instance)) -proc extensionData(uri: cstring): pointer {.cdecl.} = - return nil - - proc NimMain() {.cdecl, importc.} +let descriptor = Lv2Descriptor( + uri: cstring(PluginUri), + instantiate: instantiate, + connectPort: connectPort, + activate: nil, + run: run, + deactivate: nil, + cleanup: cleanup, + extensionData: nil, +) + proc lv2Descriptor(index: cuint): ptr Lv2Descriptor {. cdecl, exportc, dynlib, extern: "lv2_descriptor".} = - NimMain() - if index == 0: - result = createShared(Lv2Descriptor) - result.uri = cstring(PluginUri) - result.instantiate = instantiate - result.connectPort = connectPort - result.activate = activate - result.run = run - result.deactivate = deactivate - result.cleanup = cleanup - result.extensionData = extensionData + NimMain() + return addr(descriptor) + + return nil diff --git a/examples/multimodefilter_plugin.nim b/examples/multimodefilter_plugin.nim index 53f6ce9..9c48336 100644 --- a/examples/multimodefilter_plugin.nim +++ b/examples/multimodefilter_plugin.nim @@ -72,33 +72,29 @@ proc run(instance: Lv2Handle; nSamples: cuint) {.cdecl.} = plug.output[pos] = plug.svf.process(plug.input[pos]) -proc deactivate(instance: Lv2Handle) {.cdecl.} = - discard - - proc cleanup(instance: Lv2Handle) {.cdecl.} = freeShared(cast[ptr SVFPlugin](instance)) -proc extensionData(uri: cstring): pointer {.cdecl.} = - return nil - - proc NimMain() {.cdecl, importc.} +let descriptor = Lv2Descriptor( + uri: cstring(PluginUri), + instantiate: instantiate, + connectPort: connectPort, + activate: activate, + run: run, + deactivate: nil, + cleanup: cleanup, + extensionData: nil, +) + proc lv2Descriptor(index: cuint): ptr Lv2Descriptor {. cdecl, exportc, dynlib, extern: "lv2_descriptor".} = - NimMain() - if index == 0: - result = createShared(Lv2Descriptor) - result.uri = cstring(PluginUri) - result.instantiate = instantiate - result.connectPort = connectPort - result.activate = activate - result.run = run - result.deactivate = deactivate - result.cleanup = cleanup - result.extensionData = extensionData + NimMain() + return addr(descriptor) + + return nil diff --git a/examples/tiltfilter_plugin.nim b/examples/tiltfilter_plugin.nim index e1da952..f66aa97 100644 --- a/examples/tiltfilter_plugin.nim +++ b/examples/tiltfilter_plugin.nim @@ -72,33 +72,28 @@ proc run(instance: Lv2Handle; nSamples: cuint) {.cdecl.} = plug.output[pos] = plug.flt.process(plug.input[pos]) -proc deactivate(instance: Lv2Handle) {.cdecl.} = - discard - - proc cleanup(instance: Lv2Handle) {.cdecl.} = freeShared(cast[ptr TiltFilterPlugin](instance)) -proc extensionData(uri: cstring): pointer {.cdecl.} = - return nil - - proc NimMain() {.cdecl, importc.} +let descriptor = Lv2Descriptor( + uri: cstring(PluginUri), + instantiate: instantiate, + connectPort: connectPort, + activate: activate, + run: run, + deactivate: nil, + cleanup: cleanup, + extensionData: nil, +) + proc lv2Descriptor(index: cuint): ptr Lv2Descriptor {. cdecl, exportc, dynlib, extern: "lv2_descriptor".} = - NimMain() - if index == 0: - result = createShared(Lv2Descriptor) - result.uri = cstring(PluginUri) - result.instantiate = instantiate - result.connectPort = connectPort - result.activate = activate - result.run = run - result.deactivate = deactivate - result.cleanup = cleanup - result.extensionData = extensionData + NimMain() + return addr(descriptor) + return nil