Commit 09c6adbf authored by Hanspeter Portner's avatar Hanspeter Portner

Merge commit '5c52daa8'

parents 783a3922 5c52daa8
Pipeline #22080032 failed with stages
in 5 minutes and 17 seconds
stages:
- build
- test
- deploy
.variables_template: &variables_definition
variables:
BASE_NAME: "xpress.lv2"
PKG_CONFIG_PATH: "/opt/lv2/lib/pkgconfig:/opt/${CI_BUILD_NAME}/lib/pkgconfig"
TOOLCHAIN_FILE: "${CI_PROJECT_DIR}/cmake/${CI_BUILD_NAME}.cmake"
.common_template: &common_definition
<<: *variables_definition
stage: build
artifacts:
name: "${BASE_NAME}-$(cat VERSION)-${CI_BUILD_NAME}"
paths:
- "${BASE_NAME}-$(cat VERSION)/"
.build_template: &build_definition
<<: *common_definition
script:
- mkdir build
- pushd build
- cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${CI_PROJECT_DIR} -DPLUGIN_DEST="${BASE_NAME}-$(cat ../VERSION)/${CI_BUILD_NAME}/${BASE_NAME}" -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} ..
- cmake .. # needed for darwin
- make
- make install
.universal_linux_template: &universal_linux_definition
image: ventosus/universal-linux-gnu
<<: *build_definition
.arm_linux_template: &arm_linux_definition
image: ventosus/arm-linux-gnueabihf
<<: *build_definition
.universal_w64_template: &universal_w64_definition
image: ventosus/universal-w64-mingw32
<<: *build_definition
.universal_apple_template: &universal_apple_definition
image: ventosus/universal-apple-darwin
<<: *build_definition
# building in docker
x86_64-linux-gnu:
<<: *universal_linux_definition
i686-linux-gnu:
<<: *universal_linux_definition
arm-linux-gnueabihf:
<<: *arm_linux_definition
x86_64-w64-mingw32:
<<: *universal_w64_definition
i686-w64-mingw32:
<<: *universal_w64_definition
universal-apple-darwin:
<<: *universal_apple_definition
pack:
<<: *variables_definition
stage: deploy
script:
- echo 'packing up...'
artifacts:
name: "${BASE_NAME}-$(cat VERSION)"
paths:
- "${BASE_NAME}-$(cat VERSION)/"
cmake_minimum_required(VERSION 2.8)
project(xpress.lv2)
include_directories(${PROJECT_SOURCE_DIR})
include_directories(${PROJECT_BINARY_DIR})
set(CMAKE_C_FLAGS "-fdata-sections -ffunction-sections ${CMAKE_C_FLAGS}")
set(CMAKE_C_FLAGS "-std=gnu11 -Wextra -Wno-unused-parameter -ffast-math -fvisibility=hidden ${CMAKE_C_FLAGS}")
set(CMAKE_C_FLAGS "-Wshadow -Wimplicit-function-declaration -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes ${CMAKE_C_FLAGS}")
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(CMAKE_MODULE_LINKER_FLAGS "-Wl,-z,defs ${CMAKE_MODULE_LINKER_FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS "-Wl,-z,nodelete ${CMAKE_MODULE_LINKER_FLAGS}")
elseif(WIN32)
set(CMAKE_C_FLAGS "-mstackrealign ${CMAKE_C_FLAGS}")
endif()
if(APPLE)
set(CMAKE_MODULE_LINKER_FLAGS "-Wl,-dead_strip ${CMAKE_MODULE_LINKER_FLAGS}")
else()
set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--gc-sections -Wl,-s ${CMAKE_MODULE_LINKER_FLAGS}")
endif()
set(XPRESS_MAJOR_VERSION 0)
set(XPRESS_MINOR_VERSION 1)
set(XPRESS_MICRO_VERSION 1)
set(XPRESS_VERSION "${XPRESS_MAJOR_VERSION}.${XPRESS_MINOR_VERSION}.${XPRESS_MICRO_VERSION}")
add_definitions("-DXPRESS_VERSION=\"${XPRESS_VERSION}\"")
set(DEST lib/lv2/xpress.lv2)
if(WIN32)
set(LIB_EXT ".dll")
elseif(APPLE)
set(LIB_EXT ".so")
else()
set(LIB_EXT ".so")
endif()
find_package(PkgConfig) # ${PKG_CONFIG_FOUND}
# xpress
add_library(xpress MODULE
test/xpress.c)
target_link_libraries(xpress ${LIBS})
set_target_properties(xpress PROPERTIES PREFIX "")
install(TARGETS xpress DESTINATION ${DEST})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/test/xpress.ttl DESTINATION ${DEST})
# manifest
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test/manifest.ttl.in ${PROJECT_BINARY_DIR}/manifest.ttl)
install(FILES ${PROJECT_BINARY_DIR}/manifest.ttl DESTINATION ${DEST})
project('xpress.lv2', 'c', default_options : [
'buildtype=release',
'warning_level=1',
'werror=false',
'b_lto=true',
'c_std=c11'])
add_project_arguments('-D_GNU_SOURCE', language : 'c')
conf_data = configuration_data()
cc = meson.get_compiler('c')
cp = find_program('cp')
clone = [cp, '@INPUT@', '@OUTPUT@']
m_dep = cc.find_library('m')
lv2_dep = dependency('lv2', version : '>=1.14.0')
inc_dir = []
inst_dir = join_paths(get_option('libdir'), 'lv2', meson.project_name())
dsp_srcs = [join_paths('test', 'xpress.c')]
c_args = ['-fvisibility=hidden',
'-ffast-math']
mod = shared_module('xpress', dsp_srcs,
c_args : c_args,
include_directories : inc_dir,
name_prefix : '',
dependencies : [m_dep, lv2_dep],
install : true,
install_dir : inst_dir)
version = run_command('cat', 'VERSION').stdout().strip().split('.')
conf_data.set('MAJOR_VERSION', version[0])
conf_data.set('MINOR_VERSION', version[1])
conf_data.set('MICRO_VERSION', version[2])
suffix = mod.full_path().strip().split('.')[-1]
conf_data.set('MODULE_SUFFIX', '.' + suffix)
configure_file(input : join_paths('test', 'manifest.ttl.in'), output : 'manifest.ttl',
configuration : conf_data,
install : true,
install_dir : inst_dir)
custom_target('xpress_ttl',
input : join_paths('test', 'xpress.ttl'),
output : 'xpress.ttl',
command : clone,
install : true,
install_dir : inst_dir)
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'armv7hl'
endian = 'little'
[binaries]
c = '/usr/bin/arm-linux-gnueabihf-gcc'
cpp = '/usr/bin/arm-linux-gnueabihf-g++'
ar = '/usr/bin/arm-linux-gnueabihf-ar'
strip = '/usr/bin/arm-linux-gnueabihf-strip'
pkgconfig = '/usr/bin/pkg-config'
exe_wrapper = '/usr/bin/qemu-arm'
[properties]
root = '/usr/arm-linux-gnueabihf'
c_link_args = ['-Wl,-z,defs']
needs_exe_wrapper = true
[host_machine]
system = 'linux'
cpu_family = 'x86'
cpu = 'i686'
endian = 'little'
[binaries]
c = '/usr/bin/x86_64-linux-gnu-gcc'
cpp = '/usr/bin/x86_64-linux-gnu-g++'
ar = '/usr/bin/x86_64-linux-gnu-ar'
strip = '/usr/bin/x86_64-linux-gnu-strip'
pkgconfig = '/usr/bin/pkg-config'
[properties]
c_args = ['-m32']
c_link_args = ['-m32', '-Wl,-z,defs']
needs_exe_wrapper = false
[host_machine]
system = 'windows'
cpu_family = 'i686'
cpu = 'i686'
endian = 'little'
[binaries]
c = '/usr/bin/i686-w64-mingw32-gcc'
cpp = '/usr/bin/i686-w64-mingw32-g++'
ar = '/usr/bin/i686-w64-mingw32-ar'
strip = '/usr/bin/i686-w64-mingw32-strip'
pkgconfig = '/usr/bin/pkg-config'
exe_wrapper = '/usr/bin/wine'
[properties]
root = '/usr/i686-w64-mingw32'
needs_exe_wrapper = true
[host_machine]
system = 'darwin'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'
[binaries]
c = '/usr/universal-apple-darwin/bin/x86_64-apple-darwin15-clang'
cpp = '/usr/universal-apple-darwin/bin/x86_64-apple-darwin15-clang++'
objc = '/usr/universal-apple-darwin/bin/x86_64-apple-darwin15-clang'
ar = '/usr/universal-apple-darwin/bin/x86_64-apple-darwin15-ar'
strip = '/usr/universal-apple-darwin/bin/x86_64-apple-darwin15-strip'
pkgconfig = '/usr/bin/pkg-config'
[properties]
root = '/usr/universal-apple-darwin/SDK/MacOSX10.11.sdk'
c_args = ['-arch', 'i386', '-arch', 'x86_64']
c_link_args = ['-arch', 'i386', '-arch', 'x86_64']
needs_exe_wrapper = true
[host_machine]
system = 'linux'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'
[binaries]
c = '/usr/bin/x86_64-linux-gnu-gcc'
cpp = '/usr/bin/x86_64-linux-gnu-g++'
ar = '/usr/bin/x86_64-linux-gnu-ar'
strip = '/usr/bin/x86_64-linux-gnu-strip'
pkgconfig = '/usr/bin/pkg-config'
[properties]
c_link_args = ['-Wl,-z,defs']
needs_exe_wrapper = false
[host_machine]
system = 'windows'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'
[binaries]
c = '/usr/bin/x86_64-w64-mingw32-gcc'
cpp = '/usr/bin/x86_64-w64-mingw32-g++'
ar = '/usr/bin/x86_64-w64-mingw32-ar'
strip = '/usr/bin/x86_64-w64-mingw32-strip'
pkgconfig = '/usr/bin/pkg-config'
exe_wrapper = '/usr/bin/wine64'
[properties]
root = '/usr/x86_64-w64-mingw32'
needs_exe_wrapper = true
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
# Orbit Looper # Orbit Looper
xpress:test xpress:test
a lv2:Plugin ; a lv2:Plugin ;
lv2:minorVersion @XPRESS_MINOR_VERSION@ ; lv2:minorVersion @MINOR_VERSION@ ;
lv2:microVersion @XPRESS_MICRO_VERSION@ ; lv2:microVersion @MICRO_VERSION@ ;
lv2:binary <xpress@LIB_EXT@> ; lv2:binary <xpress@MODULE_SUFFIX@> ;
rdfs:seeAlso <xpress.ttl> . rdfs:seeAlso <xpress.ttl> .
...@@ -56,12 +56,13 @@ struct _plughandle_t { ...@@ -56,12 +56,13 @@ struct _plughandle_t {
targetO_t targetO [MAX_NVOICES]; targetO_t targetO [MAX_NVOICES];
}; };
static atomic_long voice_uuid = ATOMIC_VAR_INIT(0); static atomic_uint voice_uuid = ATOMIC_VAR_INIT(0);
static xpress_uuid_t static xpress_uuid_t
_voice_map_new_uuid(void *handle) _voice_map_new_uuid(void *handle, uint32_t flag)
{ {
atomic_long *uuid = handle; (void)flag;
atomic_uint *uuid = handle;
return atomic_fetch_add_explicit(uuid, 1, memory_order_relaxed); return atomic_fetch_add_explicit(uuid, 1, memory_order_relaxed);
} }
...@@ -75,9 +76,9 @@ _dump(plughandle_t *handle) ...@@ -75,9 +76,9 @@ _dump(plughandle_t *handle)
{ {
XPRESS_VOICE_FOREACH(&handle->xpressI, voice) XPRESS_VOICE_FOREACH(&handle->xpressI, voice)
{ {
lv2_log_trace(&handle->logger, "%"PRIi64, voice->uuid); lv2_log_trace(&handle->logger, "%"PRIu32" (%"PRIu32")", voice->uuid, voice->source);
} }
lv2_log_trace(&handle->logger, ""); lv2_log_trace(&handle->logger, "%s", "");
} }
static void static void
...@@ -88,7 +89,7 @@ _add(void *data, int64_t frames, const xpress_state_t *state, ...@@ -88,7 +89,7 @@ _add(void *data, int64_t frames, const xpress_state_t *state,
LV2_Atom_Forge *forge = &handle->forge; LV2_Atom_Forge *forge = &handle->forge;
targetI_t *src = target; targetI_t *src = target;
lv2_log_trace(&handle->logger, "ADD: %"PRIi64, uuid); lv2_log_trace(&handle->logger, "ADD: %"PRIu32, uuid);
targetO_t *dst = xpress_create(&handle->xpressO, &src->uuidO); targetO_t *dst = xpress_create(&handle->xpressO, &src->uuidO);
(void)dst; (void)dst;
...@@ -110,9 +111,10 @@ _set(void *data, int64_t frames, const xpress_state_t *state, ...@@ -110,9 +111,10 @@ _set(void *data, int64_t frames, const xpress_state_t *state,
LV2_Atom_Forge *forge = &handle->forge; LV2_Atom_Forge *forge = &handle->forge;
targetI_t *src = target; targetI_t *src = target;
lv2_log_trace(&handle->logger, "PUT: %"PRIi64, uuid); lv2_log_trace(&handle->logger, "PUT: %"PRIu32, uuid);
targetO_t *dst = xpress_get(&handle->xpressO, src->uuidO); targetO_t *dst = xpress_get(&handle->xpressO, src->uuidO);
(void)dst;
xpress_state_t new_state = *state; xpress_state_t new_state = *state;
new_state.pitch *= 2; new_state.pitch *= 2;
...@@ -131,7 +133,7 @@ _del(void *data, int64_t frames, ...@@ -131,7 +133,7 @@ _del(void *data, int64_t frames,
LV2_Atom_Forge *forge = &handle->forge; LV2_Atom_Forge *forge = &handle->forge;
targetI_t *src = target; targetI_t *src = target;
lv2_log_trace(&handle->logger, "DEL: %"PRIi64, uuid); lv2_log_trace(&handle->logger, "DEL: %"PRIu32, uuid);
xpress_free(&handle->xpressO, src->uuidO); xpress_free(&handle->xpressO, src->uuidO);
...@@ -203,7 +205,7 @@ instantiate(const LV2_Descriptor* descriptor, double rate, ...@@ -203,7 +205,7 @@ instantiate(const LV2_Descriptor* descriptor, double rate,
if(!xpress_init(&handle->xpressO, MAX_NVOICES, handle->map, voice_map, if(!xpress_init(&handle->xpressO, MAX_NVOICES, handle->map, voice_map,
XPRESS_EVENT_NONE, &ifaceO, handle->targetO, handle) ) XPRESS_EVENT_NONE, &ifaceO, handle->targetO, handle) )
{ {
fprintf(stderr, "failed to initialize xpressI structure\n"); fprintf(stderr, "failed to initialize xpressO structure\n");
free(handle); free(handle);
return NULL; return NULL;
} }
......
...@@ -23,6 +23,7 @@ extern "C" { ...@@ -23,6 +23,7 @@ extern "C" {
#endif #endif
#include <stdlib.h> #include <stdlib.h>
#include <time.h>
#include <lv2/lv2plug.in/ns/lv2core/lv2.h> #include <lv2/lv2plug.in/ns/lv2core/lv2.h>
#include <lv2/lv2plug.in/ns/ext/urid/urid.h> #include <lv2/lv2plug.in/ns/ext/urid/urid.h>
...@@ -56,7 +57,7 @@ extern "C" { ...@@ -56,7 +57,7 @@ extern "C" {
#define XPRESS__dTimbre XPRESS_PREFIX"dTimbre" #define XPRESS__dTimbre XPRESS_PREFIX"dTimbre"
// types // types
typedef int64_t xpress_uuid_t; typedef uint32_t xpress_uuid_t;
// enumerations // enumerations
typedef enum _xpress_event_t xpress_event_t; typedef enum _xpress_event_t xpress_event_t;
...@@ -69,7 +70,7 @@ typedef struct _xpress_iface_t xpress_iface_t; ...@@ -69,7 +70,7 @@ typedef struct _xpress_iface_t xpress_iface_t;
typedef struct _xpress_t xpress_t; typedef struct _xpress_t xpress_t;
// function callbacks // function callbacks
typedef xpress_uuid_t (*xpress_map_new_uuid_t)(void *handle); typedef xpress_uuid_t (*xpress_map_new_uuid_t)(void *handle, uint32_t flag);
typedef void (*xpress_add_cb_t)(void *data, int64_t frames, typedef void (*xpress_add_cb_t)(void *data, int64_t frames,
const xpress_state_t *state, xpress_uuid_t uuid, void *target); const xpress_state_t *state, xpress_uuid_t uuid, void *target);
...@@ -109,7 +110,7 @@ struct _xpress_iface_t { ...@@ -109,7 +110,7 @@ struct _xpress_iface_t {
}; };
struct _xpress_voice_t { struct _xpress_voice_t {
xpress_uuid_t source; LV2_URID source;
xpress_uuid_t uuid; xpress_uuid_t uuid;
bool alive; bool alive;
void *target; void *target;
...@@ -232,6 +233,32 @@ xpress_map(xpress_t *xpress); ...@@ -232,6 +233,32 @@ xpress_map(xpress_t *xpress);
static const xpress_state_t xpress_vanilla; static const xpress_state_t xpress_vanilla;
//tools.ietf.org/html/rfc4122 version 4
static LV2_URID
_xpress_urn_uuid(LV2_URID_Map *map)
{
uint8_t bytes [0x10];
srand(time(NULL));
for(unsigned i=0x0; i<0x10; i++)
bytes[i] = rand() & 0xff;
bytes[6] = (bytes[6] & 0b00001111) | 0b01000000; // set four most significant bits of 7th byte to 0b0100
bytes[8] = (bytes[8] & 0b00111111) | 0b10000000; // set two most significant bits of 9th byte to 0b10
char uuid [46];
snprintf(uuid, sizeof(uuid),
"urn:uuid:%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
bytes[0x0], bytes[0x1], bytes[0x2], bytes[0x3],
bytes[0x4], bytes[0x5],
bytes[0x6], bytes[0x7],
bytes[0x8], bytes[0x9],
bytes[0xa], bytes[0xb], bytes[0xc], bytes[0xd], bytes[0xe], bytes[0xf]);
return map->map(map->handle, uuid);
}
static inline void static inline void
_xpress_qsort(xpress_voice_t *A, int n) _xpress_qsort(xpress_voice_t *A, int n)
{ {
...@@ -293,7 +320,7 @@ _xpress_voice_get(xpress_t *xpress, xpress_uuid_t uuid) ...@@ -293,7 +320,7 @@ _xpress_voice_get(xpress_t *xpress, xpress_uuid_t uuid)
} }
static inline void * static inline void *
_xpress_voice_add(xpress_t *xpress, xpress_uuid_t source, xpress_uuid_t uuid, bool alive) _xpress_voice_add(xpress_t *xpress, LV2_URID source, xpress_uuid_t uuid, bool alive)
{ {
if(xpress->nvoices >= xpress->max_nvoices) if(xpress->nvoices >= xpress->max_nvoices)
return NULL; // failed return NULL; // failed
...@@ -362,7 +389,7 @@ xpress_init(xpress_t *xpress, const size_t max_nvoices, LV2_URID_Map *map, ...@@ -362,7 +389,7 @@ xpress_init(xpress_t *xpress, const size_t max_nvoices, LV2_URID_Map *map,
: NULL; : NULL;
} }
xpress->source = xpress_map(xpress); xpress->source = _xpress_urn_uuid(map);
return 1; return 1;
} }
...@@ -386,8 +413,8 @@ xpress_advance(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames, ...@@ -386,8 +413,8 @@ xpress_advance(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames,
if(obj->body.otype == xpress->urid.xpress_Token) if(obj->body.otype == xpress->urid.xpress_Token)
{ {
const LV2_Atom_Long *source = NULL; const LV2_Atom_URID *source = NULL;
const LV2_Atom_Long *uuid = NULL; const LV2_Atom_Int *uuid = NULL;
const LV2_Atom_Int *zone = NULL; const LV2_Atom_Int *zone = NULL;
const LV2_Atom_Float *pitch = NULL; const LV2_Atom_Float *pitch = NULL;
const LV2_Atom_Float *pressure = NULL; const LV2_Atom_Float *pressure = NULL;
...@@ -408,8 +435,8 @@ xpress_advance(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames, ...@@ -408,8 +435,8 @@ xpress_advance(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames,
xpress->urid.xpress_dTimbre, &dTimbre, xpress->urid.xpress_dTimbre, &dTimbre,
0); 0);
if( !source || (source->atom.type != forge->Long) if( !source || (source->atom.type != forge->URID)
|| !uuid || (uuid->atom.type != forge->Long) ) || !uuid || (uuid->atom.type != forge->Int) )
{ {
return 0; return 0;
} }
...@@ -462,7 +489,7 @@ xpress_advance(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames, ...@@ -462,7 +489,7 @@ xpress_advance(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames,
} }
else if(obj->body.otype == xpress->urid.xpress_Alive) else if(obj->body.otype == xpress->urid.xpress_Alive)
{ {
const LV2_Atom_Long *source = NULL; const LV2_Atom_URID *source = NULL;
const LV2_Atom_Tuple *body = NULL; const LV2_Atom_Tuple *body = NULL;
lv2_atom_object_get(obj, lv2_atom_object_get(obj,
...@@ -470,16 +497,16 @@ xpress_advance(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames, ...@@ -470,16 +497,16 @@ xpress_advance(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames,
xpress->urid.xpress_body, &body, xpress->urid.xpress_body, &body,
0); 0);
if( !source || (source->atom.type != forge->Long) ) if( !source || (source->atom.type != forge->URID) )
return 0; return 0;
if(body && (body->atom.type == forge->Tuple) ) // non-existent body is a valid empty body if(body && (body->atom.type == forge->Tuple) ) // non-existent body is a valid empty body
{ {
LV2_ATOM_TUPLE_FOREACH(body, item) LV2_ATOM_TUPLE_FOREACH(body, item)
{ {
const LV2_Atom_Long *uuid = (const LV2_Atom_Long *)item; const LV2_Atom_Int *uuid = (const LV2_Atom_Int *)item;
if(uuid->atom.type == forge->Long) if(uuid->atom.type == forge->Int)
{ {
xpress_voice_t *voice = _xpress_voice_get(xpress, uuid->body); xpress_voice_t *voice = _xpress_voice_get(xpress, uuid->body);
if(voice) if(voice)
...@@ -612,12 +639,12 @@ xpress_token(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames, ...@@ -612,12 +639,12 @@ xpress_token(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames,
if(ref) if(ref)
ref = lv2_atom_forge_key(forge, xpress->urid.xpress_source); ref = lv2_atom_forge_key(forge, xpress->urid.xpress_source);
if(ref) if(ref)
ref = lv2_atom_forge_long(forge, xpress->source); ref = lv2_atom_forge_urid(forge, xpress->source);
if(ref) if(ref)
ref = lv2_atom_forge_key(forge, xpress->urid.xpress_uuid); ref = lv2_atom_forge_key(forge, xpress->urid.xpress_uuid);
if(ref) if(ref)
ref = lv2_atom_forge_long(forge, uuid); ref = lv2_atom_forge_int(forge, uuid);
if(ref) if(ref)
ref = lv2_atom_forge_key(forge, xpress->urid.xpress_zone); ref = lv2_atom_forge_key(forge, xpress->urid.xpress_zone);
...@@ -676,7 +703,7 @@ xpress_alive(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames) ...@@ -676,7 +703,7 @@ xpress_alive(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames)
if(ref) if(ref)
ref = lv2_atom_forge_key(forge, xpress->urid.xpress_source); ref = lv2_atom_forge_key(forge, xpress->urid.xpress_source);
if(ref) if(ref)
ref = lv2_atom_forge_long(forge, xpress->source); ref = lv2_atom_forge_urid(forge, xpress->source);
if(ref) if(ref)
ref = lv2_atom_forge_key(forge, xpress->urid.xpress_body); ref = lv2_atom_forge_key(forge, xpress->urid.xpress_body);
...@@ -686,7 +713,7 @@ xpress_alive(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames) ...@@ -686,7 +713,7 @@ xpress_alive(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames)
XPRESS_VOICE_FOREACH(xpress, voice) XPRESS_VOICE_FOREACH(xpress, voice)
{ {
if(ref) if(ref)
ref = lv2_atom_forge_long(forge, voice->uuid); ref = lv2_atom_forge_int(forge, voice->uuid);
} }
} }
if(ref) if(ref)
...@@ -703,7 +730,7 @@ xpress_alive(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames) ...@@ -703,7 +730,7 @@ xpress_alive(xpress_t *xpress, LV2_Atom_Forge *forge, uint32_t frames)
static inline int32_t static inline int32_t
xpress_map(xpress_t *xpress) xpress_map(xpress_t *xpress)
{ {
return xpress->voice_map->new_uuid(xpress->voice_map->handle); return xpress->voice_map->new_uuid(xpress->voice_map->handle, 0);
} }
#ifdef __cplusplus #ifdef __cplusplus
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment