Fixes for bitimbral mode on T_3.6 (max. 10 voices per instance).

pull/32/head
Holger Wirtz 5 years ago
parent 39a5c71807
commit d65cb2a8ef
  1. 50
      MicroDexed.ino
  2. 3
      UI_FX.h
  3. 3
      UI_NO_FX.h
  4. 18
      config.h
  5. 3
      dexed.cpp
  6. 2
      dexed.h
  7. 4
      source_microdexed.h

@ -76,39 +76,24 @@ AudioAnalyzePeak master_peak_l;
#if defined(USE_FX)
AudioConnection patchCord0(reverb_mixer_r, freeverb_r);
AudioConnection patchCord1(reverb_mixer_l, freeverb_l);
#if defined(REVERB_ANTIALIAS_FRQ)
AudioConnection patchCord15(freeverb_r, freeverb_antialias_r);
AudioConnection patchCord16(freeverb_l, freeverb_antialias_l);
AudioConnection patchCord2(freeverb_antialias_r, 0, master_mixer_r, 3);
AudioConnection patchCord3(freeverb_antialias_l, 0, master_mixer_l, 3);
#else
AudioConnection patchCord2(freeverb_r, 0, master_mixer_r, 3);
AudioConnection patchCord3(freeverb_l, 0, master_mixer_l, 3);
#endif
#endif
AudioConnection patchCord4(master_mixer_r, volume_r);
AudioConnection patchCord5(master_mixer_l, volume_l);
AudioConnection patchCord6(volume_r, 0, stereo2mono, 0);
AudioConnection patchCord7(volume_l, 0, stereo2mono, 1);
AudioConnection patchCord8(stereo2mono, 0, master_peak_r, 0);
AudioConnection patchCord9(stereo2mono, 0, master_peak_l, 0);
AudioConnection patchCord2(freeverb_r, freeverb_antialias_r);
AudioConnection patchCord3(freeverb_l, freeverb_antialias_l);
AudioConnection patchCord4(freeverb_antialias_r, 0, master_mixer_r, 3);
AudioConnection patchCord5(freeverb_antialias_l, 0, master_mixer_l, 3);
#endif
AudioConnection patchCord6(master_mixer_r, volume_r);
AudioConnection patchCord7(master_mixer_l, volume_l);
AudioConnection patchCord8(volume_r, 0, stereo2mono, 0);
AudioConnection patchCord9(volume_l, 0, stereo2mono, 1);
AudioConnection patchCord10(stereo2mono, 0, master_peak_r, 0);
AudioConnection patchCord11(stereo2mono, 0, master_peak_l, 0);
// Outputs
#ifdef AUDIO_DEVICE_USB
AudioOutputUSB usb1;
AudioConnection patchCord10(stereo2mono, 0, usb1, 0);
AudioConnection patchCord11(stereo2mono, 1, usb1, 1);
#endif
#if defined(TEENSY_AUDIO_BOARD)
AudioOutputI2S i2s1;
AudioConnection patchCord12(stereo2mono, 0, i2s1, 0);
AudioConnection patchCord13(stereo2mono, 1, i2s1, 1);
AudioControlSGTL5000 sgtl5000_1;
#ifdef SGTL5000_AUDIO_THRU
AudioInputI2S i2s1in;
AudioConnection patchCord17(i2s1in, 0, master_mixer_r, 2);
AudioConnection patchCord18(i2s1in, 1, master_mixer_l, 2);
#endif
#elif defined (I2S_AUDIO_ONLY)
AudioOutputI2S i2s1;
AudioConnection patchCord12(stereo2mono, 0, i2s1, 0);
@ -128,11 +113,21 @@ AudioMixer4 invMixer;
AudioConnection patchCord12(stereo2mono, 0, dacOut , 0);
AudioConnection patchCord13(stereo2mono, 1, invMixer, 0);
AudioConnection patchCord14(invMixer, 0, dacOut , 1);
#else
#elif defined(TEENSY_DAC)
AudioOutputAnalogStereo dacOut;
AudioConnection patchCord12(stereo2mono, 0, dacOut, 0);
AudioConnection patchCord13(stereo2mono, 1, dacOut, 1);
#endif
#ifdef AUDIO_DEVICE_USB
AudioOutputUSB usb1;
AudioConnection patchCord15(stereo2mono, 0, usb1, 0);
AudioConnection patchCord16(stereo2mono, 1, usb1, 1);
#endif
#ifdef SGTL5000_AUDIO_THRU
AudioInputI2S i2s1in;
AudioConnection patchCord17(i2s1in, 0, master_mixer_r, 2);
AudioConnection patchCord18(i2s1in, 1, master_mixer_l, 2);
#endif
//
// Dynamic patching of MicroDexed objects
@ -358,6 +353,7 @@ void setup()
Serial.println(instance_id, DEC);
#endif
create_audio_engine_chain(instance_id);
}
#if defined(USE_FX)

@ -26,9 +26,8 @@
#define _UI_H_
boolean COND_hide() // hide a menu element
// *********************************************************************
{
return false; // hidden
return false;
}
LCDML_add(0, LCDML_0, 1, "Voice", NULL);

@ -26,9 +26,8 @@
#define _UI_H_
boolean COND_hide() // hide a menu element
// *********************************************************************
{
return false; // hidden
return false;
}
LCDML_add(0, LCDML_0, 1, "Voice", NULL);

@ -104,7 +104,7 @@
#define DEXED_ENGINE DEXED_ENGINE_MODERN // DEXED_ENGINE_MARKI // DEXED_ENGINE_OPL
// Number of Dexed instances
#define NUM_DEXED 1 // 1 or 2 - nothing else!
#define NUM_DEXED 2 // 1 or 2 - nothing else!
// FX-CHAIN ENABLE/DISABLE
#define USE_FX 1
// CHORUS parameters
@ -290,13 +290,9 @@
#define MAX_NOTES 16
#else
#define MAX_NOTES 12
#endif
#else
#if F_CPU >= 216
#define MAX_NOTES 16
#else
#define MAX_NOTES 12
#endif
#endif // F_CPU >= 256
#else // NUM_DEXED != 1
#define MAX_NOTES 10 // Due to problems with lack of RAM (12 for 180MHz, 16 for 216 MHz)
#endif
#else
#if NUM_DEXED == 1
@ -307,10 +303,10 @@
#else
#define MAX_NOTES 13
#endif
#endif
#endif
#endif // NUM_DEXED == 1
#endif // defined(USE_FX)
#define TEENSY3_6
#endif
#endif // defined(__MK66FX1M0__)
#if defined (__MK64FX512__)
// Teensy-3.5 settings

@ -62,7 +62,8 @@ Dexed::Dexed(int rate)
engineOpl = new EngineOpl;
engineMsfa = new FmCore;
for (i = 0; i < MAX_ACTIVE_NOTES; i++) {
for (i = 0; i < MAX_ACTIVE_NOTES; i++)
{
voices[i].dx7_note = new Dx7Note;
voices[i].keydown = false;
voices[i].sustained = false;

@ -191,7 +191,7 @@ class Dexed
04, 06, 00, // algorithm, feedback, osc sync
34, 33, 00, 00, 00, 04, // lfo speed, lfo delay, lfo pitch_mod_depth, lfo_amp_mod_depth, lfo_sync, lfo_waveform
03, 24, // pitch_mod_sensitivity, transpose
69, 68, 80, 56, 85, 76, 84, 00, 00, 00 // 10 * char for name ("DEFAULT ")
69, 68, 80, 56, 85, 76, 84, 00, 00, 00 // 10 * char for name ("DEFAULT ")
}; // FM-Piano
int lastKeyDown;

@ -14,7 +14,7 @@ class AudioSourceMicroDexed : public AudioStream, public Dexed {
void update(void)
{
if (in_update)
if (in_update==true)
{
xrun++;
return;
@ -35,7 +35,7 @@ class AudioSourceMicroDexed : public AudioStream, public Dexed {
getSamples(AUDIO_BLOCK_SAMPLES, lblock->data);
if (render_time > audio_block_time_us) // everything greater 2.9ms is a buffer underrun!
if (render_time > audio_block_time_us) // everything greater audio_block_time_us (2.9ms for buffer size of 128) is a buffer underrun!
xrun++;
if (render_time > render_time_max)

Loading…
Cancel
Save