Fixes for loading sysex.

pull/4/head
Holger Wirtz 7 years ago
parent 98e7d87678
commit 862a888b71
  1. 69
      MicroDexed.ino
  2. 2
      dexed.cpp

@ -12,12 +12,12 @@
#include <MIDI.h>
#include "dexed.h"
//#define TEST_MIDI 1
#define TEST_MIDI 1
#define TEST_NOTE 40
#define TEST_VEL_MIN 60
#define TEST_VEL_MAX 110
//#define DEBUG 1
#define DEBUG 1
#define SERIAL_SPEED 38400
#define VOLUME 0.2
#define SAMPLE_RATE 44100
@ -26,7 +26,7 @@
//#define SHOW_DEXED_TIMING 1
#define SHOW_XRUN 1
#define SHOW_CPU_LOAD_MSEC 5000
#define MAX_NOTES 10
#define MAX_NOTES 16
#define AUDIO_MEM 2
// Use these with the Teensy Audio Shield
@ -99,7 +99,7 @@ void setup()
}
#endif
load_sysex("ROM1A.SYX", 5);
load_sysex("ROM1A.SYX", 20);
#ifdef DEBUG
show_patch();
#endif
@ -349,39 +349,50 @@ bool load_sysex_voice(File sysex, uint8_t voice_number)
{
file.read(p_data + (i * 21), 11); // R1, R2, R3, R4, L1, L2, L3, L4, LEV SCL BRK PT, SCL LEFT DEPTH, SCL RGHT DEPTH
tmp = file.read();
*(p_data + 11 + (i * 21)) = (tmp & 0x3);
*(p_data + 12 + (i * 21)) = (tmp & 0x0c) >> 2;
*(p_data + 11 + (i * 21)) = (tmp & 0x3); // SCL LEFT CURVE
*(p_data + 12 + (i * 21)) = (tmp & 0x0c) >> 2; // SCL RGHT CURVE
tmp = file.read();
*(p_data + 13 + (i * 21)) = (tmp & 0x78) >> 3;
*(p_data + 14 + (i * 21)) = (tmp & 0x07);
*(p_data + 20 + (i * 21)) = (tmp & 0x78) >> 3; // DETUNE
*(p_data + 13 + (i * 21)) = (tmp & 0x07); // RS
tmp = file.read();
*(p_data + 15 + (i * 21)) = (tmp & 0x1c) >> 2;
*(p_data + 16 + (i * 21)) = (tmp & 0x03);
*(p_data + 17 + (i * 21)) = file.read();
*(p_data + 15 + (i * 21)) = (tmp & 0x1c) >> 2; // KVS
*(p_data + 14 + (i * 21)) = (tmp & 0x03); // AMS
*(p_data + 16 + (i * 21)) = file.read(); // OUTPUT LVL
tmp = file.read();
*(p_data + 18 + (i * 21)) = (tmp & 0x3e) >> 1;
*(p_data + 19 + (i * 21)) = (tmp & 0x01);
file.read(p_data + 20 + (i * 21), 1); // FREQ FINE
*(p_data + 18 + (i * 21)) = (tmp & 0x3e) >> 1; // FREQ_CORSE
*(p_data + 17 + (i * 21)) = (tmp & 0x01); // OP MODE
file.read(p_data + 19 + (i * 21), 1); // FREQ FINE
}
file.read(p_data + 125, 8); // PR1, PR2, PR3, PR4, PL1, PL2, PL3, PL4
tmp = file.read();
*(p_data + 133) = (tmp & 0x1f);
*(p_data + 134) = (tmp & 0x1f); // ALG
tmp = file.read();
*(p_data + 134) = (tmp & 0x08) >> 3;
*(p_data + 135) = (tmp & 0x07);
file.read(p_data + 136, 4); // LFS, LFD, LPMD, LAMD
*(p_data + 136) = (tmp & 0x08) >> 3; // OKS
*(p_data + 135) = (tmp & 0x07); // FB
file.read(p_data + 137, 4); // LFS, LFD, LPMD, LAMD
tmp = file.read();
*(p_data + 140) = (tmp & 0x30) >> 4;
*(p_data + 141) = (tmp & 0x0e) >> 1;
*(p_data + 142) = (tmp & 0x01);
file.read(p_data + 143, 1); // TRNSP
file.read(p_data + 144, 10); // TRNSP
*(p_data + 166) = 1;
*(p_data + 167) = 1;
*(p_data + 168) = 1;
*(p_data + 169) = 1;
*(p_data + 170) = 1;
*(p_data + 171) = 1;
*(p_data + 143) = (tmp & 0x30) >> 4; // LFO PITCH MOD DEP
*(p_data + 142) = (tmp & 0x0e) >> 1; // LFO WAV
*(p_data + 141) = (tmp & 0x01); // LFO SYNC
file.read(p_data + 144, 1); // TRNSP
file.read(p_data + 145, 10); // NAME
*(p_data + 155) = 1; // PBEND RANGE
*(p_data + 156) = 0; // PBEND STEP
*(p_data + 157) = 99; // MOD RANGE
*(p_data + 158) = 0; // MOD ASSIGN
*(p_data + 159) = 99; // FOOT CTRL RANGE
*(p_data + 160) = 0; // FOOT CTRL ASSIGN
*(p_data + 161) = 99; // BREATH CTRL RANGE
*(p_data + 162) = 0; // BREATH CTRL ASSIGN
*(p_data + 163) = 99; // AT RANGE
*(p_data + 164) = 0; // AT ASSIGN
*(p_data + 165) = 0; // MASTER TUNE
*(p_data + 166) = 1; // OP1 ENABLE
*(p_data + 167) = 1; // OP2 ENABLE
*(p_data + 168) = 1; // OP3 ENABLE
*(p_data + 169) = 1; // OP4 ENABLE
*(p_data + 170) = 1; // OP5 ENABLE
*(p_data + 171) = 1; // OP6 ENABLE
*(p_data + 172) = MAX_NOTES;
dexed->panic();

@ -457,7 +457,7 @@ uint8_t Dexed::getEngineType() {
void Dexed::setEngineType(uint8_t tp) {
TRACE("settings engine %d", tp);
if (engineType == tp && controllers.core != NULL)
if (engineType == tp)
return;
switch (tp) {

Loading…
Cancel
Save