help for pitch lfo

Status
Not open for further replies.

benwadub

Active member
hi, i m still on my dub siren project, I restarted my project from scratch to be sure to really understand what I m doing after lot of time looking to existing codes.
i was able to make an lfo acting on filter frequency but can t make it work on the pitch of my waveformmod oscilator, can someone help me doing this please?
does the routing made on audio system design is good?
what do you think I could check in the code?
please don t give me the solution but help me to find where I made a mistake?
Code:
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
#include <Bounce.h>

// GUItool: begin automatically generated code
AudioSynthWaveformDc     dc1;            //xy=69.18978881835938,113
AudioSynthWaveformModulated wavelfopitch;  //xy=121.18978881835938,194
AudioSynthWaveformModulated waveformMod1;   //xy=253.76121520996094,116.42856979370117
AudioEffectEnvelope      envelope1;      //xy=325.7612075805664,200.71429443359375
AudioSynthWaveformDc     dc2;            //xy=429.18973541259766,109.14285087585449
AudioSynthWaveformModulated wavelfo_filtre;  //xy=489.1897163391113,166.7142848968506
AudioFilterStateVariable filter1;        //xy=617.4753913879395,259.5714282989502
AudioEffectMultiply      multiply1;      //xy=660.1897163391113,139.7142848968506
AudioMixer4              filtermixer;         //xy=820.3326683044434,206.4285545349121
AudioEffectDelay         delay1;         //xy=963.3326683044434,375.4285545349121
AudioEffectFreeverbStereo freeverbs1;     //xy=983.3326683044434,214.4285545349121
AudioMixer4              mixerleft;         //xy=1143.3326683044434,101.42855453491211
AudioMixer4              mixerright;         //xy=1144.3326683044434,324.4285545349121
AudioOutputUSB           usb1;           //xy=1329.3326683044434,104.42855453491211
AudioOutputAnalogStereo  dacs1;          //xy=1333.3326683044434,179.4285545349121
AudioConnection          patchCord1(dc1, 0, wavelfopitch, 1);
AudioConnection          patchCord2(wavelfopitch, 0, waveformMod1, 0);
AudioConnection          patchCord3(waveformMod1, envelope1);
AudioConnection          patchCord4(envelope1, 0, filter1, 0);
AudioConnection          patchCord5(dc2, 0, wavelfo_filtre, 1);
AudioConnection          patchCord6(wavelfo_filtre, 0, multiply1, 1);
AudioConnection          patchCord7(filter1, 0, multiply1, 0);
AudioConnection          patchCord8(filter1, 0, filtermixer, 1);
AudioConnection          patchCord9(multiply1, 0, filtermixer, 0);
AudioConnection          patchCord10(filtermixer, freeverbs1);
AudioConnection          patchCord11(filtermixer, delay1);
AudioConnection          patchCord12(filtermixer, 0, mixerleft, 1);
AudioConnection          patchCord13(delay1, 0, mixerright, 1);
AudioConnection          patchCord14(delay1, 0, filtermixer, 3);
AudioConnection          patchCord15(freeverbs1, 0, mixerleft, 0);
AudioConnection          patchCord16(freeverbs1, 1, mixerright, 0);
AudioConnection          patchCord17(mixerleft, 0, dacs1, 0);
AudioConnection          patchCord18(mixerleft, 0, usb1, 0);
AudioConnection          patchCord19(mixerright, 0, dacs1, 1);
AudioConnection          patchCord20(mixerright, 0, usb1, 1);
AudioControlSGTL5000     sgtl5000_1;     //xy=1267.3326683044434,404.4285545349121
// GUItool: end automatically generated code

Bounce button24 = Bounce(24, 15);
float hz2;
float cutoff = 19000;
float reso = 1.11;
float revol = 0.1;//0.0
float rsize = 0.2;//0.1
float atk = 1.;
float dcy = 35;
float sus = 1;
float rls = 0;
int swc = 0;
int swc2 = 0;
int wavfrm;
int wavfrm2;
float vely = 0.00;
float shpwm = 0.00;
float shpwm2 = 0.00;
float pitchlfo =0.00;
float filtrelfo =0.00;
float pitchlfofreq = 0.00;
float filtrelfofreq = 0.00;
float filtrelfoamp = 0.00;//mod pour test origine 0
float pitchlfoamp = 0.20;
float pitch = 0;

elapsedMillis timeout = 0;
int valueconvert;
extern const int16_t myWaveform[256];  // defined in myWaveform.ino
float delayfeedback = 1;
#define POLYPHONY 8  // Max # simultaneous notes
#define WAVEFORM WAVEFORM_SAWTOOTH
int current_waveform=0;
byte notesSounding[POLYPHONY] = {0};


void setup() {
  dacs1.analogReference(EXTERNAL); //augmente le son du dac intern
Serial.begin(9600);
  AudioMemory(200);
  pinMode(24, INPUT_PULLUP);
  waveformMod1.arbitraryWaveform(myWaveform, 172.0);
  
  current_waveform = WAVEFORM_TRIANGLE_VARIABLE;
  waveformMod1.begin(current_waveform);
 
  waveformMod1.amplitude(1.0);
  
  envelope1.attack(10);
  envelope1.hold(10);
  envelope1.decay(25);
  envelope1.sustain(0.4);
  envelope1.release(70);
  
  delay1.delay(0, 400);
  delay(1000);
  delay1.disable(2);
  delay1.disable(3);
  delay1.disable(4);
  delay1.disable(5);
  delay1.disable(6);
  delay1.disable(7);
  
  freeverbs1.damping(1.0);
  filter1.octaveControl(24);

  sgtl5000_1.enable();
  sgtl5000_1.volume(0.32);
}

void loop() {
  button24.update();
  if (button24.fallingEdge()) {
    timeout = 0;
    envelope1.noteOn();
  }
  if (button24.risingEdge()) {
    envelope1.noteOff();
    timeout = 0;
  }
  int cutoffpot = analogRead(A14) *20;
  int cutoff = cutoffpot/127;
  delay(100);
int filtrelfofreqpot = analogRead(A15);
     int filtrelfofreq = filtrelfofreqpot/127;
     delay(100);
     int filtrelfoamppot = analogRead(A15);
     int filtrelfoamp = filtrelfoamppot/127;
     delay(100);
     
int pitchlfofreqpot = analogRead(A16);
     int pitchlfofreq = pitchlfofreqpot/254;
     delay(100);
     int pitchlfoamppot = analogRead(A17);
     int pitchlfoamp = pitchlfoamppot/1023;
     delay(100);
     float freq = 261.0 ;
  wavelfopitch.begin(0.3, 440, wavfrm);  //loader waveform
  wavelfopitch.frequency(pitchlfofreq);
  wavelfopitch.amplitude(pitchlfoamp);
   waveformMod1.frequency (freq*pitchlfofreqpot);
  wavelfo_filtre.begin(0.3, 440, wavfrm);
  wavelfo_filtre.frequency(filtrelfofreq);
  wavelfo_filtre.amplitude(filtrelfoamp);


  envelope1.attack(atk);
  envelope1.decay(dcy);
  envelope1.sustain(sus);
  envelope1.release(rls);
  
  filter1.frequency(cutoff);
  filter1.resonance(reso);
  filtermixer.gain(0, 0.3);
  filtermixer.gain(2, 0.3);
  filtermixer.gain(3, 0.2);//delay feedback
  
  dc1.amplitude(pitchlfo);     //pitchlfo
  dc2.amplitude(filtrelfo);    //filtrelfo
  mixerleft.gain(0, revol);
  mixerleft.gain(0, revol);

}
Capture d’écran 2020-11-24 à 20.37.13.jpg
 
I'd advise building the system up bit by bit, so that its easier to diagnose the problems - or adding a debug mixer on
the output that you can temporarily route a node in the graph to to check its working - for instance that the LFO is
behaving as expected. That's the equivalent of sticking a scope probe on an analog version of the flowgraph.
 
hi, i m still on my dub siren project, I restarted my project from scratch to be sure to really understand what I m doing after lot of time looking to existing codes.
i was able to make an lfo acting on filter frequency but can t make it work on the pitch of my waveformmod oscilator, can someone help me doing this please?
does the routing made on audio system design is good?
what do you think I could check in the code?
please don t give me the solution but help me to find where I made a mistake?

@benwadub:

Two observations/suggestions:

1) "wavelfopitch.begin(0.3, 440, wavfrm);" is called to start the pitch control oscillator, where wavfrm has only been defined, but never initialized (you may get lucky with a startup value, but may not be good to depend upon this).
2) Check the inputs to each of your waveformMod objects: one input affects the freq & the other affects the shape (applicable to pulse & triangle).

Good luck & have fun !!

Mark J Culross
KD5RXT
 
@benwadub:

Two observations/suggestions:

1) "wavelfopitch.begin(0.3, 440, wavfrm);" is called to start the pitch control oscillator, where wavfrm has only been defined, but never initialized (you may get lucky with a startup value, but may not be good to depend upon this).
2) Check the inputs to each of your waveformMod objects: one input affects the freq & the other affects the shape (applicable to pulse & triangle).

Good luck & have fun !!

Mark J Culross
KD5RXT

thanks a lot I found my problem of routing! I ll be able to go to the next step!
 
Status
Not open for further replies.
Back
Top