|
- #include <stdint.h>
-
- #include "../deps/SynthDevKit/src/CV.hpp"
- #include "DrumKit.hpp"
- #include "DrumModule.hpp"
-
- namespace rack_plugin_DrumKit {
-
- DrumModule::DrumModule( ) : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {
- cv1 = new SynthDevKit::CV(1.7f);
- cv2 = new SynthDevKit::CV(1.7f);
- currentStep1 = 0;
- currentStep2 = 0;
- ready1 = false;
- ready2 = false;
- numSamples = 0;
- }
-
-
- struct DrumContainer *DrumModule::getSample(float current) {
- if (numSamples == 0) {
- setupSamples();
- }
- if (current < 1 || current >= numSamples) {
- return &samples[ 0 ];
- }
- return &samples[ (int)current - 1 ];
- }
-
- void DrumModule::step( ) {
- float in1 = inputs[ CLOCK1_INPUT ].value;
- cv1->update(in1);
-
- if (cv1->newTrigger( )) {
- if (!ready1) {
- ready1 = true;
- }
-
- currentStep1 = 0;
- }
-
- float current1 = params[ DRUM1_PARAM ].value;
- struct DrumContainer *c = getSample(current1);
-
- if (currentStep1 >= c->length) {
- outputs[ AUDIO1_OUTPUT ].value = 0;
- } else {
- outputs[ AUDIO1_OUTPUT ].value = c->sample[ currentStep1 ];
- currentStep1++;
- }
-
- float in2 = inputs[ CLOCK2_INPUT ].value;
- cv2->update(in2);
-
- if (cv2->newTrigger( )) {
- if (!ready2) {
- ready2 = true;
- }
-
- currentStep2 = 0;
- }
-
- float current2 = params[ DRUM2_PARAM ].value;
- c = getSample(current2);
-
- if (currentStep2 >= c->length) {
- outputs[ AUDIO2_OUTPUT ].value = 0;
- } else {
- outputs[ AUDIO2_OUTPUT ].value = c->sample[ currentStep2 ];
- currentStep2++;
- }
- }
-
- void DrumModule::setupSamples( ) { }
-
- } // namespace rack_plugin_DrumKit
-
|