Tone library music mode/key explorer...

Well, here's the whole mess as it is making sounds now, lots of experimental this and that in there. Probably doesn't work right but spits out notes on the piezos I have hooked up. Will breadboard a digital pot to play with envelope generation for filtering and output. I think I need to get this whole thing working with millis(), I'm looking in bafflement at the TLC fades library for clues on how to handle envelope fading.

#include <Tone.h>

//Declare scale

#define scaleC 0
#define scaleC# 1
#define scaleD 2
#define scaleD# 3
#define scaleE 4
#define scaleF 5
#define scaleF# 6
#define scaleG 7
#define scaleG# 8
#define scaleA 9
#define scaleA# 10
#define scaleB 11

int NumVoices = 4;
int CurrentVoice;
int CurrentOctaveRange [] = {1, 2, 2, 1 };
int CurrentOctaveOffset [] = {4, 4, 4, 6 };
int NoteLength [4] = {1200,800,400,200};

unsigned long time;
unsigned long Lasttime = millis();
//TIME

//declare tone array!
Tone NotePlayer[4];

//SigOffsets
int C = 0;
int CS = 1;
int D = 2;
int DS = 3;
int E = 4;
int F = 5;
int FS = 6;
int G = 7;
int GS = 8;
int A = 9;
int AS = 10;
int B = 11;
int KeySig;
int ModeSig;
int OctaveRange;
int OctaveOffset;
int PlayNote;
int CurrentKeySig [] = {C, G, B, A};
int OctaveKeys[] = {C, CS, D, DS, E, F, FS, G, GS, A, AS, B };
int Major = 2773;
int Minor = 2906;
int Adonai = 3670;
int Algerian = 2937;
int Altered = 3498;
int Augmented = 2457;
int Blues = 2418;
int Chromatic = 4095;
int Arabic = 3289;
int Enigmatic = 3243;
int HalfDim = 2922;
int Bebop = 3449;
int HarmMaj = 2777;
int HarmMin = 2905;
int Hirajoshi = 3170;
int HuGypsy = 2875;
int HuMinor = 2873;
int Insen = 3162;
int Iwato = 2840;
int Locrian = 3434;
int Lydian = 2742;
int Hemitonic = 3352;
int Mixolydian = 2774;
int NeaMajor = 3413;
int NeaMinor = 3417;
int Octatonic = 3510;
int Persian = 3305;
int Phrygian = 3290;
int Prometheus = 2726;
int Slendro = 2642;
int Tritone = 3250;
int UkrDorian = 2869;
int WholeTon = 2730;

int CurrentModeSig [] = {Bebop, Bebop, Bebop, Bebop};

int Notes[] = {
NOTE_B0,
NOTE_C1, 
NOTE_CS1, 
NOTE_D1, 
NOTE_DS1, 
NOTE_E1, 
NOTE_F1,  
NOTE_FS1, 
NOTE_G1,
NOTE_GS1,
NOTE_A1,
NOTE_AS1,
NOTE_B1,
NOTE_C2,
NOTE_CS2,
NOTE_D2,
NOTE_DS2,
NOTE_E2,
NOTE_F2,
NOTE_FS2,
NOTE_G2,
NOTE_GS2,
NOTE_A2,
NOTE_AS2,
NOTE_B2,
NOTE_C3,
NOTE_CS3,
NOTE_D3,
NOTE_DS3,
NOTE_E3,
NOTE_F3,
NOTE_FS3,
NOTE_G3,
NOTE_GS3,
NOTE_A3,
NOTE_AS3,
NOTE_B3,
NOTE_C4,
NOTE_CS4,
NOTE_D4,
NOTE_DS4,
NOTE_E4,
NOTE_F4,
NOTE_FS4,
NOTE_G4,
NOTE_GS4,
NOTE_A4,
NOTE_AS4,
NOTE_B4,
NOTE_C5,
NOTE_CS5,
NOTE_D5,
NOTE_DS5,
NOTE_E5,
NOTE_F5,
NOTE_FS5,
NOTE_G5,
NOTE_GS5,
NOTE_A5,
NOTE_AS5,
NOTE_B5,
NOTE_C6,
NOTE_CS6,
NOTE_D6,
NOTE_DS6,
NOTE_E6,
NOTE_F6,
NOTE_FS6,
NOTE_G6,
NOTE_GS6,
NOTE_A6,
NOTE_AS6,
NOTE_B6,
NOTE_C7,
NOTE_CS7,
NOTE_D7,
NOTE_DS7,
NOTE_E7,
NOTE_F7,
NOTE_FS7,
NOTE_G7,
NOTE_GS7,
NOTE_A7,
NOTE_AS7,
NOTE_B7,
NOTE_C8,
NOTE_CS8,
NOTE_D8,
NOTE_DS8
 };
void setup()
{
      NotePlayer[1].begin(41);
    NotePlayer[2].begin(43);
    NotePlayer[3].begin(45);
    NotePlayer[4].begin(47);
}
void loop()
{
  
for (CurrentVoice = 0; CurrentVoice <= NumVoices-1; CurrentVoice++)
{
  //time = millis();
if (NotePlayer[CurrentVoice].isPlaying() == false)
//if (time > Lasttime + NoteLength [CurrentVoice])

{

  OctaveRange = CurrentOctaveRange[CurrentVoice];
  OctaveOffset = CurrentOctaveOffset[CurrentVoice];
  KeySig = CurrentKeySig[CurrentVoice];
  ModeSig = CurrentModeSig[CurrentVoice];
  int SelectNote = random ((OctaveRange*12));

  if ((bitRead(ModeSig, SelectNote)) ==1)
  {
    PlayNote = (SelectNote + KeySig + OctaveOffset);
  }
 // else{return;}
 
  if (PlayNote > (OctaveRange*12))
  {
    PlayNote = PlayNote - (OctaveRange*12);
  }
 
  
//NotePlayer[CurrentVoice].stop();
NotePlayer[CurrentVoice].play(Notes[PlayNote], (NoteLength [CurrentVoice]));
randomSeed(analogRead(CurrentVoice));
//Lasttime = millis();

}
//else{return;}
}
}