Browse Source

Fix nekofilter build

tags/1.9.4
falkTX 11 years ago
parent
commit
4fa1b9c4fd
3 changed files with 55 additions and 60 deletions
  1. +27
    -27
      source/modules/carla_native/nekofilter/filter.c
  2. +21
    -26
      source/modules/carla_native/nekofilter/nekofilter.c
  3. +7
    -7
      source/modules/carla_native/nekofilter/ui.c

+ 27
- 27
source/modules/carla_native/nekofilter/filter.c View File

@@ -34,9 +34,9 @@ static float exp2ap(float x)
int i; int i;


i = (int)(floor(x)); i = (int)(floor(x));
x -= i;
x -= (float)i;
// return ldexp(1 + x * (0.66 + 0.34 * x), i); // return ldexp(1 + x * (0.66 + 0.34 * x), i);
return ldexp(1 + x * (0.6930 + x * (0.2416 + x * (0.0517 + x * 0.0137))), i);
return ldexpf(1.0f + x * (0.6930f + x * (0.2416f + x * (0.0517f + x * 0.0137f))), i);
} }


struct param_sect struct param_sect
@@ -70,9 +70,9 @@ param_sect_proc(
s1 = sect_ptr->s1; s1 = sect_ptr->s1;
s2 = sect_ptr->s2; s2 = sect_ptr->s2;
a = sect_ptr->a; a = sect_ptr->a;
d1 = 0;
d2 = 0;
da = 0;
d1 = 0.0f;
d2 = 0.0f;
da = 0.0f;


if (f != sect_ptr->f) if (f != sect_ptr->f)
{ {
@@ -80,7 +80,7 @@ param_sect_proc(
else if (f > 2.0f * sect_ptr->f) f = 2.0f * sect_ptr->f; else if (f > 2.0f * sect_ptr->f) f = 2.0f * sect_ptr->f;
sect_ptr->f = f; sect_ptr->f = f;
sect_ptr->s1 = -cosf(6.283185f * f); sect_ptr->s1 = -cosf(6.283185f * f);
d1 = (sect_ptr->s1 - s1) / k;
d1 = (sect_ptr->s1 - s1) / (float)k;
u2 = true; u2 = true;
} }


@@ -90,7 +90,7 @@ param_sect_proc(
else if (g > 2.0f * sect_ptr->g) g = 2.0f * sect_ptr->g; else if (g > 2.0f * sect_ptr->g) g = 2.0f * sect_ptr->g;
sect_ptr->g = g; sect_ptr->g = g;
sect_ptr->a = 0.5f * (g - 1.0f); sect_ptr->a = 0.5f * (g - 1.0f);
da = (sect_ptr->a - a) / k;
da = (sect_ptr->a - a) / (float)k;
u2 = true; u2 = true;
} }


@@ -106,7 +106,7 @@ param_sect_proc(
{ {
b *= 7 * f / sqrtf(g); b *= 7 * f / sqrtf(g);
sect_ptr->s2 = (1 - b) / (1 + b); sect_ptr->s2 = (1 - b) / (1 + b);
d2 = (sect_ptr->s2 - s2) / k;
d2 = (sect_ptr->s2 - s2) / (float)k;
} }


while (k--) while (k--)
@@ -240,22 +240,22 @@ filter_run(
float sfreq[filter_ptr->bands_count]; float sfreq[filter_ptr->bands_count];
float sband[filter_ptr->bands_count]; float sband[filter_ptr->bands_count];
float sgain[filter_ptr->bands_count]; float sgain[filter_ptr->bands_count];
float bands_count;
int bands_count;


bands_count = filter_ptr->bands_count;
bands_count = (int)filter_ptr->bands_count;


fgain = exp2ap(0.1661 * *filter_ptr->global_parameters[GLOBAL_PARAMETER_GAIN]);
fgain = exp2ap(0.1661f * *filter_ptr->global_parameters[GLOBAL_PARAMETER_GAIN]);


for (j = 0; j < bands_count; ++j) for (j = 0; j < bands_count; ++j)
{ {
t = *filter_ptr->band_parameters[BAND_PARAMETERS_COUNT * j + BAND_PARAMETER_FREQUENCY] / filter_ptr->sample_rate; t = *filter_ptr->band_parameters[BAND_PARAMETERS_COUNT * j + BAND_PARAMETER_FREQUENCY] / filter_ptr->sample_rate;
if (t < 0.0002)
if (t < 0.0002f)
{ {
t = 0.0002;
t = 0.0002f;
} }
else if (t > 0.4998)
else if (t > 0.4998f)
{ {
t = 0.4998;
t = 0.4998f;
} }
sfreq[j] = t; sfreq[j] = t;


@@ -263,32 +263,32 @@ filter_run(


if (*filter_ptr->band_parameters[BAND_PARAMETERS_COUNT * j + BAND_PARAMETER_ACTIVE] > 0.0) if (*filter_ptr->band_parameters[BAND_PARAMETERS_COUNT * j + BAND_PARAMETER_ACTIVE] > 0.0)
{ {
sgain[j] = exp2ap(0.1661 * *filter_ptr->band_parameters[BAND_PARAMETERS_COUNT * j + BAND_PARAMETER_GAIN]);
sgain[j] = exp2ap(0.1661f * *filter_ptr->band_parameters[BAND_PARAMETERS_COUNT * j + BAND_PARAMETER_GAIN]);
} }
else else
{ {
sgain[j] = 1.0;
sgain[j] = 1.0f;
} }
} }


while (samples_count) while (samples_count)
{ {
k = (samples_count > 48) ? 32 : samples_count;
k = (samples_count > 48) ? 32 : (int)samples_count;


t = fgain; t = fgain;
g = filter_ptr->gain; g = filter_ptr->gain;


if (t > 1.25 * g)
if (t > 1.25f * g)
{ {
t = 1.25 * g;
t = 1.25f * g;
} }
else if (t < 0.80 * g)
else if (t < 0.80f * g)
{ {
t = 0.80 * g;
t = 0.80f * g;
} }


filter_ptr->gain = t; filter_ptr->gain = t;
d = (t - g) / k;
d = (t - g) / (float)k;
for (i = 0; i < k; ++i) for (i = 0; i < k; ++i)
{ {
g += d; g += d;
@@ -301,7 +301,7 @@ filter_run(
} }


j = filter_ptr->fade; j = filter_ptr->fade;
g = j / 16.0;
g = (float)(j / 16.0);
p = 0; p = 0;


if (*filter_ptr->global_parameters[GLOBAL_PARAMETER_ACTIVE] > 0.0) if (*filter_ptr->global_parameters[GLOBAL_PARAMETER_ACTIVE] > 0.0)
@@ -331,11 +331,11 @@ filter_run(


if (p) if (p)
{ {
memcpy(output_buffer, p, k * sizeof(float));
memcpy(output_buffer, p, (size_t)k * sizeof(float));
} }
else else
{ {
d = (j / 16.0 - g) / k;
d = (float)((j / 16.0 - g) / k);
for (i = 0; i < k; ++i) for (i = 0; i < k; ++i)
{ {
g += d; g += d;
@@ -345,6 +345,6 @@ filter_run(


input_buffer += k; input_buffer += k;
output_buffer += k; output_buffer += k;
samples_count -= k;
samples_count -= (unsigned long)k;
} }
} }

+ 21
- 26
source/modules/carla_native/nekofilter/nekofilter.c View File

@@ -73,7 +73,7 @@ nekofilter_instantiate(
nekofilter_ptr->ui = NULL; nekofilter_ptr->ui = NULL;
#endif #endif


if (! filter_create(host->get_sample_rate(host->handle), BANDS_COUNT, &nekofilter_ptr->filter))
if (! filter_create((float)host->get_sample_rate(host->handle), BANDS_COUNT, &nekofilter_ptr->filter))
{ {
free(nekofilter_ptr); free(nekofilter_ptr);
return NULL; return NULL;
@@ -155,28 +155,20 @@ nekofilter_get_parameter_info(
uint32_t index) uint32_t index)
{ {
static NativeParameter param; static NativeParameter param;
static bool first_init = true;
static char* name = NULL;
static char* unit = NULL;
uint32_t band; uint32_t band;
char strBuf[32]; char strBuf[32];


if (first_init)
if (name != NULL)
{ {
first_init = false;
param.name = NULL;
param.unit = NULL;
free(name);
name = NULL;
} }
else
if (unit != NULL)
{ {
if (param.name != NULL)
{
free((void*)param.name);
param.name = NULL;
}
if (param.unit != NULL)
{
free((void*)param.unit);
param.unit = NULL;
}
free(unit);
unit = NULL;
} }


if (handle == NULL && index == 0xf00baa) if (handle == NULL && index == 0xf00baa)
@@ -193,15 +185,15 @@ nekofilter_get_parameter_info(
switch (index) switch (index)
{ {
case GLOBAL_PARAMETER_ACTIVE: case GLOBAL_PARAMETER_ACTIVE:
name = strdup("Active");
param.hints |= PARAMETER_IS_BOOLEAN; param.hints |= PARAMETER_IS_BOOLEAN;
param.name = strdup("Active");
param.ranges.max = 1.0f; param.ranges.max = 1.0f;
goto ready; goto ready;
break; break;


case GLOBAL_PARAMETER_GAIN: case GLOBAL_PARAMETER_GAIN:
param.name = strdup("Gain");
param.unit = strdup("dB");
name = strdup("Gain");
unit = strdup("dB");
param.ranges.min = -20.0f; param.ranges.min = -20.0f;
param.ranges.max = 20.0f; param.ranges.max = 20.0f;
goto ready; goto ready;
@@ -219,16 +211,16 @@ nekofilter_get_parameter_info(
{ {
case BAND_PARAMETER_ACTIVE: case BAND_PARAMETER_ACTIVE:
strcat(strBuf, "Active"); strcat(strBuf, "Active");
name = strdup(strBuf);
param.hints |= PARAMETER_IS_BOOLEAN; param.hints |= PARAMETER_IS_BOOLEAN;
param.name = strdup(strBuf);
param.ranges.max = 1.0f; param.ranges.max = 1.0f;
break; break;


case BAND_PARAMETER_FREQUENCY: case BAND_PARAMETER_FREQUENCY:
strcat(strBuf, "Frequency"); strcat(strBuf, "Frequency");
name = strdup(strBuf);
unit = strdup("Hz");
param.hints |= PARAMETER_IS_LOGARITHMIC; param.hints |= PARAMETER_IS_LOGARITHMIC;
param.name = strdup(strBuf);
param.unit = strdup("Hz");


switch (band) switch (band)
{ {
@@ -253,16 +245,16 @@ nekofilter_get_parameter_info(


case BAND_PARAMETER_BANDWIDTH: case BAND_PARAMETER_BANDWIDTH:
strcat(strBuf, "Bandwidth"); strcat(strBuf, "Bandwidth");
name = strdup(strBuf);
param.hints |= PARAMETER_IS_LOGARITHMIC; param.hints |= PARAMETER_IS_LOGARITHMIC;
param.name = strdup(strBuf);
param.ranges.min = 0.125f; param.ranges.min = 0.125f;
param.ranges.max = 8.0f; param.ranges.max = 8.0f;
break; break;


case BAND_PARAMETER_GAIN: case BAND_PARAMETER_GAIN:
strcat(strBuf, "Gain"); strcat(strBuf, "Gain");
param.name = strdup(strBuf);
param.unit = strdup("dB");
name = strdup(strBuf);
unit = strdup("dB");
param.ranges.min = -20.0f; param.ranges.min = -20.0f;
param.ranges.max = 20.0f; param.ranges.max = 20.0f;
break; break;
@@ -283,6 +275,9 @@ ready:
param.ranges.stepLarge = range/10.0f; param.ranges.stepLarge = range/10.0f;
} }


param.name = name;
param.unit = unit;

return &param; return &param;
} }




+ 7
- 7
source/modules/carla_native/nekofilter/ui.c View File

@@ -190,7 +190,7 @@ nekoui_run(
if (sscanf(port_value_str, "%f", &value) == 1) if (sscanf(port_value_str, "%f", &value) == 1)
{ {
//printf("port %d = %f\n", port, value); //printf("port %d = %f\n", port, value);
control_ptr->host->ui_parameter_changed(control_ptr->host->handle, index, value);
control_ptr->host->ui_parameter_changed(control_ptr->host->handle, (uint32_t)index, value);
} }
else else
{ {
@@ -337,7 +337,7 @@ static int clone_fn(void * context)


#endif #endif


static bool do_fork(const char * argv[6], int* ret)
static bool do_fork(char * argv[6], int* ret)
{ {
int ret2 = *ret = FORK(); int ret2 = *ret = FORK();


@@ -351,7 +351,7 @@ static bool do_fork(const char * argv[6], int* ret)
close(pipe2[0]); close(pipe2[0]);
#endif #endif


execvp(argv[0], (char **)argv);
execvp(argv[0], /*(char **)*/argv);
fprintf(stderr, "exec of UI failed: %s\n", strerror(errno)); fprintf(stderr, "exec of UI failed: %s\n", strerror(errno));
return false; return false;
case -1: case -1:
@@ -375,7 +375,7 @@ nekoui_instantiate(
char ui_send_pipe[100]; char ui_send_pipe[100];
int oldflags; int oldflags;
FORK_TIME_MEASURE_VAR; FORK_TIME_MEASURE_VAR;
const char * argv[6];
char * argv[6];
int ret; int ret;
int i; int i;
char ch; char ch;
@@ -475,7 +475,7 @@ nekoui_instantiate(
//printf("waiting UI start\n"); //printf("waiting UI start\n");
i = 0; i = 0;
loop: loop:
ret = read(control_ptr->recv_pipe, &ch, 1);
ret = (int)read(control_ptr->recv_pipe, &ch, 1);
switch (ret) switch (ret)
{ {
case -1: case -1:
@@ -556,9 +556,9 @@ void nekoui_set_parameter_value(


ign = write(control_ptr->send_pipe, "port_value\n", 11); ign = write(control_ptr->send_pipe, "port_value\n", 11);
len = sprintf(buf, "%u\n", (unsigned int)index); len = sprintf(buf, "%u\n", (unsigned int)index);
ign = write(control_ptr->send_pipe, buf, len);
ign = write(control_ptr->send_pipe, buf, (size_t)len);
len = sprintf(buf, "%.10f\n", value); len = sprintf(buf, "%.10f\n", value);
ign = write(control_ptr->send_pipe, buf, len);
ign = write(control_ptr->send_pipe, buf, (size_t)len);
fsync(control_ptr->send_pipe); fsync(control_ptr->send_pipe);


setlocale(LC_NUMERIC, locale); setlocale(LC_NUMERIC, locale);


Loading…
Cancel
Save