Browse Source

Load plugin path/files

Signed-off-by: falkTX <falktx@falktx.com>
main
falkTX 1 year ago
parent
commit
86d68ab579
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
3 changed files with 46 additions and 4 deletions
  1. +18
    -1
      src/host.c
  2. +1
    -0
      src/host.h
  3. +27
    -3
      src/kuriborosu.c

+ 18
- 1
src/host.c View File

@@ -281,12 +281,29 @@ bool kuriborosu_host_load_file(Kuriborosu* const kuri, const char* const filenam
return false;
}

bool kuriborosu_host_set_plugin_custom_data(Kuriborosu* kuri, const char* type, const char* key, const char* value)
{
CARLA_SAFE_ASSERT_RETURN(kuri != NULL, false);
CARLA_SAFE_ASSERT_RETURN(type != NULL, false);
CARLA_SAFE_ASSERT_RETURN(key != NULL, false);
CARLA_SAFE_ASSERT_RETURN(value != NULL, false);

const uint32_t plugin_count = carla_get_current_plugin_count(kuri->carla_handle);
CARLA_SAFE_ASSERT_RETURN(plugin_count != 0, false);

const uint32_t plugin_id = plugin_count - 1;

carla_set_custom_data(kuri->carla_handle, plugin_id, type, key, value);
printf("set custom data '%s'\n", value);
return true;
}

bool kuriborosu_host_load_plugin(Kuriborosu* kuri, const char* filenameOrUID)
{
CARLA_SAFE_ASSERT_RETURN(kuri != NULL, false);
CARLA_SAFE_ASSERT_RETURN(filenameOrUID != NULL, false);

if (carla_add_plugin(kuri->carla_handle, BINARY_NATIVE, PLUGIN_LV2, "", "", filenameOrUID, 0, NULL, 0x0))
if (carla_add_plugin(kuri->carla_handle, BINARY_NATIVE, PLUGIN_LV2, "", "", filenameOrUID, 0, NULL, PLUGIN_OPTIONS_NULL))
return true;

fprintf(stderr, "Failed to load plugin %s, error was: %s\n",


+ 1
- 0
src/host.h View File

@@ -41,6 +41,7 @@ void kuriborosu_host_destroy(Kuriborosu* kuri);

bool kuriborosu_host_load_file(Kuriborosu* kuri, const char* filename);
bool kuriborosu_host_load_plugin(Kuriborosu* kuri, const char* filenameOrUID);
bool kuriborosu_host_set_plugin_custom_data(Kuriborosu* kuri, const char* type, const char* key, const char* value);
bool kuriborosu_host_render_to_file(Kuriborosu* kuri, const file_render_options_t* options);

double get_file_length_from_last_plugin(Kuriborosu* kuri);

+ 27
- 3
src/kuriborosu.c View File

@@ -1,6 +1,6 @@
/*
* kuriborosu
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2023 Filipe Coelho <falktx@falktx.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
@@ -25,13 +25,13 @@
int main(int argc, char* argv[])
{
// TODO use more advanced opts
uint32_t opts_buffer_size = 1024;
uint32_t opts_buffer_size = 256;
uint32_t opts_sample_rate = 48000;

if (argc >= 2 && strcmp(argv[1], "--version") == 0)
{
printf("kuriborosu v0.0.0, using Carla v" CARLA_VERSION_STRING "\n"
"Copyright 2021 Filipe Coelho <falktx@falktx.com>\n"
"Copyright 2021-2023 Filipe Coelho <falktx@falktx.com>\n"
"License: ???\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n");
@@ -62,10 +62,12 @@ int main(int argc, char* argv[])
const bool isfile = strchr(infile, '.') != NULL || strchr(infile, '/') != NULL;
if (isfile)
{
printf("loading file '%s'...\n", infile);
if (! kuriborosu_host_load_file(kuri, infile))
goto error;

file_frames = (uint32_t)(get_file_length_from_last_plugin(kuri) * opts_sample_rate + 0.5);
printf("file has %u frames, %g seconds\n", file_frames, (double)file_frames/opts_sample_rate);
}
else
{
@@ -89,12 +91,34 @@ int main(int argc, char* argv[])
for (int i = 3; i < argc; ++i)
{
const char* const plugin_arg = argv[i];
printf("%d %s\n", i, plugin_arg);

// check if file
if (plugin_arg[0] == '.' || plugin_arg[0] == '/')
{
kuriborosu_host_load_file(kuri, plugin_arg);
}
// check if argument
else if (plugin_arg[0] == '-')
{
switch (plugin_arg[1])
{
case 'p':
// TODO complete me
if (++i < argc)
{
kuriborosu_host_set_plugin_custom_data(kuri, CUSTOM_DATA_TYPE_PATH, "file", argv[i]);
}
break;
default:
// TODO give error
break;
}
}
else
{
kuriborosu_host_load_plugin(kuri, plugin_arg);
}
}

const file_render_options_t options = {


Loading…
Cancel
Save