Browse Source

Update build system, implement initialize() and randomize() as needed

tags/v0.4.0
Andrew Belt 7 years ago
parent
commit
975f00a9e2
5 changed files with 80 additions and 73 deletions
  1. +3
    -33
      Makefile
  2. +2
    -2
      src/Braids.cpp
  3. +24
    -10
      src/Rings.cpp
  4. +31
    -21
      src/Tides.cpp
  5. +20
    -7
      src/Warps.cpp

+ 3
- 33
Makefile View File

@@ -1,8 +1,7 @@

ARCH ?= lin
FLAGS = -fPIC -g -Wall -O3 -msse -mfpmath=sse -ffast-math \
FLAGS += \
-fshort-enums -DTEST \
-I./src -I../../include -I./eurorack \
-I./eurorack \
-Wno-unused-local-typedefs


@@ -45,33 +44,4 @@ SOURCES = $(wildcard src/*.cpp) \
eurorack/warps/dsp/filter_bank.cc \
eurorack/warps/resources.cc


ifeq ($(ARCH), lin)
LDFLAGS += -shared
TARGET = plugin.so
endif

ifeq ($(ARCH), mac)
LDFLAGS += -shared -undefined dynamic_lookup
TARGET = plugin.dylib
endif

ifeq ($(ARCH), win)
LDFLAGS += -shared -L../../ -lRack
TARGET = plugin.dll
endif


all: $(TARGET)

dist: $(TARGET)
mkdir -p dist/AudibleInstruments
cp LICENSE* dist/AudibleInstruments/
cp plugin.* dist/AudibleInstruments/
cp -R res dist/AudibleInstruments/

clean:
rm -rfv build $(TARGET) dist


include ../../Makefile.inc
include ../../plugin.mk

+ 2
- 2
src/Braids.cpp View File

@@ -71,8 +71,8 @@ void Braids::step() {
// Set timbre/modulation
float timbre = params[TIMBRE_PARAM] + params[MODULATION_PARAM] * getf(inputs[TIMBRE_INPUT]) / 5.0;
float modulation = params[COLOR_PARAM] + getf(inputs[COLOR_INPUT]) / 5.0;
int16_t param1 = mapf(clampf(timbre, 0.0, 1.0), 0.0, 1.0, 0, INT16_MAX);
int16_t param2 = mapf(clampf(modulation, 0.0, 1.0), 0.0, 1.0, 0, INT16_MAX);
int16_t param1 = rescalef(clampf(timbre, 0.0, 1.0), 0.0, 1.0, 0, INT16_MAX);
int16_t param2 = rescalef(clampf(modulation, 0.0, 1.0), 0.0, 1.0, 0, INT16_MAX);
osc->set_parameters(param1, param2);

// Set pitch


+ 24
- 10
src/Rings.cpp View File

@@ -54,33 +54,44 @@ struct Rings : Module {
bool strum = false;
bool lastStrum = false;
float lights[2] = {};
Trigger polyphonyTrigger;
Trigger modelTrigger;
SchmittTrigger polyphonyTrigger;
SchmittTrigger modelTrigger;
int polyphonyMode = 0;
int model = 0;

Rings();
void step();

json_t *toJsonData() {
json_t *root = json_object();
json_t *toJson() {
json_t *rootJ = json_object();

json_object_set_new(root, "polyphony", json_integer(polyphonyMode));
json_object_set_new(root, "model", json_integer(model));
json_object_set_new(rootJ, "polyphony", json_integer(polyphonyMode));
json_object_set_new(rootJ, "model", json_integer(model));

return root;
return rootJ;
}
void fromJsonData(json_t *root) {
json_t *polyphonyJ = json_object_get(root, "polyphony");

void fromJson(json_t *rootJ) {
json_t *polyphonyJ = json_object_get(rootJ, "polyphony");
if (polyphonyJ) {
polyphonyMode = json_integer_value(polyphonyJ);
}

json_t *modelJ = json_object_get(root, "model");
json_t *modelJ = json_object_get(rootJ, "model");
if (modelJ) {
model = json_integer_value(modelJ);
}
}

void initialize() {
polyphonyMode = 0;
model = 0;
}

void randomize() {
polyphonyMode = randomu32() % 3;
model = randomu32() % 3;
}
};


@@ -96,6 +107,9 @@ Rings::Rings() {
strummer.Init(0.01, 44100.0 / 24);
part.Init(reverb_buffer);
string_synth.Init(reverb_buffer);

polyphonyTrigger.setThresholds(0.0, 1.0);
modelTrigger.setThresholds(0.0, 1.0);
}

void Rings::step() {


+ 31
- 21
src/Tides.cpp View File

@@ -42,31 +42,42 @@ struct Tides : Module {
float lights[3] = {};
int frame = 0;
uint8_t lastGate;
Trigger modeTrigger;
Trigger rangeTrigger;
SchmittTrigger modeTrigger;
SchmittTrigger rangeTrigger;

Tides();
void step();

json_t *toJsonData() {
json_t *root = json_object();
json_t *toJson() {
json_t *rootJ = json_object();

json_object_set_new(root, "mode", json_integer((int)generator.mode()));
json_object_set_new(root, "range", json_integer((int)generator.range()));
json_object_set_new(rootJ, "mode", json_integer((int) generator.mode()));
json_object_set_new(rootJ, "range", json_integer((int) generator.range()));

return root;
return rootJ;
}
void fromJsonData(json_t *root) {
json_t *modeJ = json_object_get(root, "mode");

void fromJson(json_t *rootJ) {
json_t *modeJ = json_object_get(rootJ, "mode");
if (modeJ) {
generator.set_mode((tides::GeneratorMode)json_integer_value(modeJ));
generator.set_mode((tides::GeneratorMode) json_integer_value(modeJ));
}

json_t *rangeJ = json_object_get(root, "range");
json_t *rangeJ = json_object_get(rootJ, "range");
if (rangeJ) {
generator.set_range((tides::GeneratorRange)json_integer_value(rangeJ));
generator.set_range((tides::GeneratorRange) json_integer_value(rangeJ));
}
}

void initialize() {
generator.set_range(tides::GENERATOR_RANGE_MEDIUM);
generator.set_mode(tides::GENERATOR_MODE_LOOPING);
}

void randomize() {
generator.set_range((tides::GeneratorRange) (randomu32() % 3));
generator.set_mode((tides::GeneratorMode) (randomu32() % 3));
}
};


@@ -77,23 +88,22 @@ Tides::Tides() {

memset(&generator, 0, sizeof(generator));
generator.Init();
generator.set_range(tides::GENERATOR_RANGE_MEDIUM);
generator.set_mode(tides::GENERATOR_MODE_LOOPING);
generator.set_sync(false);
initialize();
}

void Tides::step() {
// TODO Save / load the state of MODE and RANGE to JSON
tides::GeneratorMode mode = generator.mode();
if (modeTrigger.process(params[MODE_PARAM])) {
mode = (tides::GeneratorMode) (((int)mode + 2) % 3);
mode = (tides::GeneratorMode) (((int)mode - 1 + 3) % 3);
generator.set_mode(mode);
}
lights[0] = (float)mode;

tides::GeneratorRange range = generator.range();
if (rangeTrigger.process(params[RANGE_PARAM])) {
range = (tides::GeneratorRange) (((int)range + 2) % 3);
range = (tides::GeneratorRange) (((int)range - 1 + 3) % 3);
generator.set_range(range);
}
lights[2] = (float)range;
@@ -104,12 +114,12 @@ void Tides::step() {

// Pitch
float pitch = params[FREQUENCY_PARAM];
pitch += 12.0*getf(inputs[PITCH_INPUT]);
pitch += 12.0 * getf(inputs[PITCH_INPUT]);
pitch += params[FM_PARAM] * getf(inputs[FM_INPUT], 0.1) / 5.0;
pitch += 60.0;
// Scale to the global sample rate
pitch += log2f(48000.0 / gSampleRate) * 12.0;
generator.set_pitch(clampf(pitch*0x80, -0x8000, 0x7fff));
generator.set_pitch(clampf(pitch * 0x80, -0x8000, 0x7fff));

// Slope, smoothness, pitch
int16_t shape = clampf(params[SHAPE_PARAM] + getf(inputs[SHAPE_INPUT]) / 5.0, -1.0, 1.0) * 0x7fff;
@@ -154,8 +164,8 @@ void Tides::step() {

uni = uni * level >> 16;
bi = -bi * level >> 16;
float unif = mapf(uni, 0, 0xffff, 0.0, 8.0);
float bif = mapf(bi, -0x8000, 0x7fff, -5.0, 5.0);
float unif = rescalef(uni, 0, 0xffff, 0.0, 8.0);
float bif = rescalef(bi, -0x8000, 0x7fff, -5.0, 5.0);

setf(outputs[HIGH_OUTPUT], sample.flags & tides::FLAG_END_OF_ATTACK ? 0.0 : 5.0);
setf(outputs[LOW_OUTPUT], sample.flags & tides::FLAG_END_OF_RELEASE ? 0.0 : 5.0);
@@ -178,7 +188,7 @@ struct TidesModeLight : ModeValueLight {
TidesWidget::TidesWidget() {
Tides *module = new Tides();
setModule(module);
box.size = Vec(15*14, 380);
box.size = Vec(15 * 14, 380);

{
Panel *panel = new LightPanel();


+ 20
- 7
src/Warps.cpp View File

@@ -32,24 +32,35 @@ struct Warps : Module {
warps::ShortFrame inputFrames[60] = {};
warps::ShortFrame outputFrames[60] = {};
float lights[1] = {};
Trigger stateTrigger;
SchmittTrigger stateTrigger;

Warps();
void step();

json_t *toJsonData() {
json_t *root = json_object();
json_t *toJson() {
json_t *rootJ = json_object();
warps::Parameters *p = modulator.mutable_parameters();
json_object_set_new(root, "shape", json_integer(p->carrier_shape));
return root;
json_object_set_new(rootJ, "shape", json_integer(p->carrier_shape));
return rootJ;
}
void fromJsonData(json_t *root) {
json_t *shapeJ = json_object_get(root, "shape");

void fromJson(json_t *rootJ) {
json_t *shapeJ = json_object_get(rootJ, "shape");
warps::Parameters *p = modulator.mutable_parameters();
if (shapeJ) {
p->carrier_shape = json_integer_value(shapeJ);
}
}

void initialize() {
warps::Parameters *p = modulator.mutable_parameters();
p->carrier_shape = 0;
}

void randomize() {
warps::Parameters *p = modulator.mutable_parameters();
p->carrier_shape = randomu32() % 4;
}
};


@@ -60,6 +71,8 @@ Warps::Warps() {

memset(&modulator, 0, sizeof(modulator));
modulator.Init(96000.0f);

stateTrigger.setThresholds(0.0, 1.0);
}

void Warps::step() {


Loading…
Cancel
Save