MCPcopy Create free account
hub / github.com/VCVRack/AudibleInstruments / stepBlock

Method stepBlock

src/Marbles.cpp:416–516  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

414 }
415
416 void stepBlock() {
417 // Ramps
418
419 marbles::Ramps ramps;
420 ramps.master = ramp_master;
421 ramps.external = ramp_external;
422 ramps.slave[0] = ramp_slave[0];
423 ramps.slave[1] = ramp_slave[1];
424
425 float deja_vu = clamp(params[DEJA_VU_PARAM].getValue() + inputs[DEJA_VU_INPUT].getVoltage() / 5.f, 0.f, 1.f);
426 static const int loop_length[] = {
427 1, 1, 1, 2, 2,
428 2, 2, 2, 3, 3,
429 3, 3, 4, 4, 4,
430 4, 4, 5, 5, 6,
431 6, 6, 7, 7, 8,
432 8, 8, 10, 10, 12,
433 12, 12, 14, 14, 16,
434 16
435 };
436 float deja_vu_length_index = params[DEJA_VU_LENGTH_PARAM].getValue() * (LENGTHOF(loop_length) - 1);
437 int deja_vu_length = loop_length[(int) roundf(deja_vu_length_index)];
438
439 // Set up TGenerator
440
441 bool t_external_clock = inputs[T_CLOCK_INPUT].isConnected();
442
443 t_generator.set_model((marbles::TGeneratorModel) t_mode);
444 t_generator.set_range((marbles::TGeneratorRange) t_range);
445 float t_rate = 60.f * (params[T_RATE_PARAM].getValue() + inputs[T_RATE_INPUT].getVoltage() / 5.f);
446 t_generator.set_rate(t_rate);
447 float t_bias = clamp(params[T_BIAS_PARAM].getValue() + inputs[T_BIAS_INPUT].getVoltage() / 5.f, 0.f, 1.f);
448 t_generator.set_bias(t_bias);
449 float t_jitter = clamp(params[T_JITTER_PARAM].getValue() + inputs[T_JITTER_INPUT].getVoltage() / 5.f, 0.f, 1.f);
450 t_generator.set_jitter(t_jitter);
451 t_generator.set_deja_vu(t_deja_vu ? deja_vu : 0.f);
452 t_generator.set_length(deja_vu_length);
453 // TODO
454 t_generator.set_pulse_width_mean(0.f);
455 t_generator.set_pulse_width_std(0.f);
456
457 t_generator.Process(t_external_clock, t_clocks, ramps, gates, BLOCK_SIZE);
458
459 // Set up XYGenerator
460
461 marbles::ClockSource x_clock_source = (marbles::ClockSource) x_clock_source_internal;
462 if (inputs[X_CLOCK_INPUT].isConnected())
463 x_clock_source = marbles::CLOCK_SOURCE_EXTERNAL;
464
465 marbles::GroupSettings x;
466 x.control_mode = (marbles::ControlMode) x_mode;
467 x.voltage_range = (marbles::VoltageRange) x_range;
468 // TODO Fix the scaling
469 float note_cv = 0.5f * (params[X_SPREAD_PARAM].getValue() + inputs[X_SPREAD_INPUT].getVoltage() / 5.f);
470 float u = note_filter.Process(0.5f * (note_cv + 1.f));
471 x.register_mode = external;
472 x.register_value = u;
473

Callers

nothing calls this directly

Calls 1

ProcessMethod · 0.45

Tested by

no test coverage detected