yutaro iijima / Mbed 2 deprecated FootileSoftware_20191218_experiment

Dependencies:   mbed FootileSoftware

Files at this revision

API Documentation at this revision

Comitter:
yuyaro
Date:
Sun Mar 08 06:27:52 2020 +0000
Parent:
0:03cdee95fb5a
Commit message:
Walking experiment software

Changed in this revision

DRV2605.cpp Show annotated file Show diff for this revision Revisions of this file
DRV2605.h Show annotated file Show diff for this revision Revisions of this file
Footile.cpp Show annotated file Show diff for this revision Revisions of this file
Footile.h Show annotated file Show diff for this revision Revisions of this file
FootileSoftware_20191008_01.lib Show annotated file Show diff for this revision Revisions of this file
wave.h Show annotated file Show diff for this revision Revisions of this file
--- a/DRV2605.cpp	Wed May 30 02:34:33 2018 +0000
+++ b/DRV2605.cpp	Sun Mar 08 06:27:52 2020 +0000
@@ -1,10 +1,13 @@
 #include "DRV2605.h"
 
 DRV2605::DRV2605(PinName sda, PinName scl, PinName en): i2c(sda, scl), _en(en) {
+    
+    //もとはあった
     _en = 1;
     wait_us(250);   // Device datasheet specified wait time before I2C
     // comms should be used
     // Exit Standby Mode; Enter Auto- Cal Mode
+    //もとはあった
     mode(AUTO_CAL);
     
     /* Set the following registers to the appropriate values:
@@ -23,23 +26,27 @@
     // Calc and Set Overdrive Voltage Register (0x17), use default values
 
     // Set Feedback Control Register (0x1A), set LRA
-    i2cWriteByte(FEEDBACK_CONTROL, i2cReadByte(FEEDBACK_CONTROL) | LRA); // set LRA
+    //もとはあった
+    //i2cWriteByte(FEEDBACK_CONTROL, i2cReadByte(FEEDBACK_CONTROL) | LRA); // set LRA
 
     // Set Control 1 Register (0x1B), use default values
 
     // Set Control 2 Register (0x1C), use default values
 
     // Set Control3 Register (0x1D), use default values
-    i2cWriteByte(CONTROL3, i2cReadByte(CONTROL3) | 0x08); // set data format rtp unsigned
+    //もとはあった
+    //i2cWriteByte(CONTROL3, i2cReadByte(CONTROL3) | 0x08); // set data format rtp unsigned
 
     // Set Control 4 Register (0x1E), use default values
 
     // Device already set to Auto- Cal Mode at top of this code block
 
     // Start auto- calibration
+    //もとはあった
     i2cWriteByte(GO, 0x01);
 
     // Wait for calibration to complete
+    //もとはあった
     while(i2cReadByte(GO));
 }
 
@@ -111,5 +118,24 @@
 void DRV2605::rtp(char amp)
 {
     i2cWriteByte(MODE, RTP);      // RTP Mode
+    //i2cWriteByte(CONTROL3, i2cReadByte(CONTROL3) ^ 0x02); 
     i2cWriteByte(REAL_TIME_PLAYBACK, amp);
 }
+
+void DRV2605::pwm_analog()
+{
+    //_en = 1;
+    //i2cWriteByte(FEEDBACK_CONTROL, i2cReadByte(FEEDBACK_CONTROL) | LRA); // set LRA
+    //i2cWriteByte(FEEDBACK_CONTROL, 0xF6); // set LRA
+    //i2cWriteByte(MODE, PWM_ANALOG);      // pwm or anl Mode   
+    //i2cWriteByte(GO, 1);
+    i2cWriteByte(MODE, 0x03);      // pwm or anl Mode
+    //i2cWriteByte(CONTROL3, i2cReadByte(CONTROL3) | 0x01); 
+    i2cWriteByte(CONTROL3, 0xAD); //pwm signed
+    //i2cWriteByte(CONTROL3, 0xA5); //pwm
+    //i2cWriteByte(CONTROL3, 0xAF); //analog
+    
+    //i2cWriteByte(CONTROL3, 0xA7);  //analog
+    //i2cWriteByte(CONTROL3, ); //0 = pwm, 1 = anl
+}
+
--- a/DRV2605.h	Wed May 30 02:34:33 2018 +0000
+++ b/DRV2605.h	Sun Mar 08 06:27:52 2020 +0000
@@ -178,6 +178,11 @@
         /**
             hogehoge
         */
+        
+        void pwm_analog();
+        /*
+        */
+        
         void rtp(char amp);
         
         /**
--- a/Footile.cpp	Wed May 30 02:34:33 2018 +0000
+++ b/Footile.cpp	Sun Mar 08 06:27:52 2020 +0000
@@ -14,6 +14,12 @@
     _led2 = 1;
     _led3 = 1;
     _volumeBuf=255;
+    _SquareVolume=64;
+    _trg = 0;;
+    count_u = 1;
+    count_pwm = 0;
+    _trg_flag - 0;
+    count_led2 = 0;
     
     //flag
     /*
@@ -29,8 +35,16 @@
     SinewaveMode=false;
     CorrespondMode=false;
     ChangeFlag=true;
+    SteadyON=false; 
+    VibeON=true;
+    ChangeFlag2=false; 
+    SetDutyMode=false;
+    
     snowMode=true;
     grassMode=false;
+    gravelMode=false;
+    leafMode=false;
+    
     
     _sens=0.8;
     
@@ -54,70 +68,238 @@
 void Footile::doFunctions()
 {
     static int prv_on = 0,Volume=0;
-    
-
+    /*
+    if(count_pwm == 0){
+        _Vibration.pwm_analog();
+        wait(0.001);
+        //_pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/(float(300)*float(50))); 
+        _pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/(float(300*128))); 
+        //_pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/float(300)); 
+        count_pwm = 1;
+    } 
+    */
 
     // make hysteresis
-    if(_prssr > _sens)
-        _on = 1;
-    if(_prssr < 0.2)
-        _on = 0;
-
-    if(_on && !prv_on||ChangeFlag==true) {
-        _trg = 1;
-        _led1 = 0;
-        Volume=_volumeBuf;
-        if(SinewaveMode==true){
-            _Vibration.rtp((char)(Volume)); 
+    if(SteadyON==false){ 
+        if(VibeON==true){
+            if(_prssr > _sens){
+                _on = 1;
+                ChangeFlag2=true;
+                ChangeFlag=false;
+                _led1 = 1;
+                if(count_pwm == 0){
+                    _Vibration.pwm_analog();
+                    wait(0.001);
+                    //_pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/(float(300)*float(50))); 
+                    _pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/(float(300*128))); 
+                    //_pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/float(300)); 
+                    count_pwm = 1;
+                }   
+            }
+            if(_prssr < _sens){
+                //count_pwm = 0;
+                ChangeFlag2=false;
+                ChangeFlag=false;
+                _led1 = 0;
+                //Volume = 0;
+                //_Vibration.rtp((char)(Volume));
+                
+            //if(_prssr < 0.2)
+                //_pwmviber.detach();
+                //count_pwm = 0;
+                _on = 0;
+            }
+            
         }
-        _bt.printf("%d\n",_prssr);
-    }
-    if(!_on && prv_on||ChangeFlag==true) {
-        _trg = 0;
-        _countSize=0;
-        if(SteadyMode==false&&SinewaveMode==true){
-            Volume=0;//When Not c=125
-            _Vibration.rtp((char)(Volume)); 
+        else{
+            ChangeFlag2=false;
         }
+    }else{
+        ChangeFlag2=true;
     }
     
+    /*
+    if(ChangeFlag2==true){
+        ChangeFlag=false;
+        //_Vibration.pwm_analog();
+    }
+    else{
+        
+        if(_on && !prv_on||ChangeFlag==true) {
+            //_trg = 1;
+            //_trg = 0;
+            _led1 = 0;
+            Volume=_volumeBuf;
+            //Volume=0;
+            if(SinewaveMode==true){
+                //_Vibration.rtp((char)(Volume)); 
+            }
+            _bt.printf("%d\n",_prssr);
+        }
+        if(!_on && prv_on||ChangeFlag==true) {
+            //_trg = 0;
+            _countSize=0;
+            Volume=0;
+            if(SteadyMode==false&&SinewaveMode==true){
+                Volume=0;//When Not c=125
+                //_Vibration.rtp((char)(Volume)); 
+            }
+        }
+        
+    }
+    */
     prv_on = _on;
 
     
-    if(snowMode==true||grassMode==true){
-        _viber.attach(this, &Footile::VibeTimer,0.001);
+    if(snowMode==true||grassMode==true||gravelMode==true||leafMode==true){
+        //_viber.attach(this, &Footile::VibeTimer,0.001);
+        //_viber.attach(this, &Footile::VibeTimer,0.00667);
     } else{
-       _viber.detach();     
+       //_viber.detach(); 
+       //_pwmviber.detach();
     }
     
     ChangeFlag=false;
         
-    if(CorrespondMode==true){  
-        _Vibration.rtp((char)(_volumeBuf*_prssr));
+    if(CorrespondMode==true){
+        if(ChangeFlag2 != true){  
+            //_Vibration.rtp((char)(_volumeBuf*_prssr));
+        }
     }
     wait(0.001);
 }
-
+void Footile::PwmDuty(int d){
+    if(_trg_flag == 1){
+        if(count_u <= d){
+            count_u += 1;
+        }
+        else{
+            _trg_flag = 0;
+            _trg = 0;
+            count_u = 1;
+        }
+    }
+    else{
+        if(count_u <= 256-d){
+            count_u += 1;
+            _trg = 0;
+            _trg_flag = 0;
+        }
+        else{
+            _trg = 1;
+            count_u = 1;
+            _trg_flag = 1;
+        } 
+    }
+}
+void Footile::PwmVibe(){
+    if(ChangeFlag2 == true){
+        /*
+        if(_trg_flag == 1){
+            if(count_u <= _SquareVolume){
+                count_u += 1;
+            }
+            else{
+                _trg_flag = 0;
+                _trg = 0;
+                count_u = 1;
+            }
+        }
+        else{
+            if(count_u <= 256-_SquareVolume){
+                count_u += 1;
+                _trg = 0;
+                _trg_flag = 0;
+            }
+            else{
+                _trg = 1;
+                count_u = 1;
+                _trg_flag = 1;
+            } 
+        }
+        */
+        if(SetDutyMode==false){
+            PwmDuty(_SquareVolume);
+        }
+        else{
+            PwmDuty(_C_Volume);
+        }
+    }else{
+        _trg = !_trg;
+        count_u = 1; 
+    } 
+}
 
 void Footile::OnVibe(const float* wave, int size){
+    //static int square_volume = 0;
+    //ChangeFlag2=true;
+    //ChangeFlag=false;
+    //_Vibration.pwm_analog();
+    //_volumeBuf = 0;
+    //Volume = 0;
+    //_pwmviber.attach(this, &Footile::PwmVibe,0.5); 
+    //_pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/(float(300.0)*float(128))); 
+    //_pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/(float(300)*float(50))); 
+    //_pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/float(300)); 
+    //_trg.period(float(1.0/150.0));
+    //_trg = 0.5;
+    //_pwmviber.attach(this, &Footile::PwmVibe,0.005); 
+    /*
     if(_countSize < size){
-        _Vibration.rtp((char)(wave[_countSize]*255));
+        //_Vibration.rtp((char)(wave[_countSize]*255)*);
+          square_volume = _volumeBuf;
+          _Vibration.rtp((char)(wave[_countSize]*square_volume));
+            //_Vibration.PWM_ANALOG((char)(wave[_countSize]*square_volume));
             _countSize++;
     }
     else  {
             _Vibration.rtp((char)0);     
     }
+    */
 }
 
 
 void Footile::VibeTimer(){
     if(_on==1&&snowMode==true){
-        OnVibe(snowwave500, (int)(sizeof(snowwave500)/sizeof(snowwave500[0])));
+        //_Vibration.pwm_analog();
+        ChangeFlag2=true;
+        ChangeFlag=false;
+        /*
+        if(count_pwm == 0){
+            _Vibration.pwm_analog();
+            wait(0.001);
+            //_pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/(float(300)*float(50))); 
+            _pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/(float(300*128))); 
+            //_pwmviber.attach(this, &Footile::PwmVibe,float(1.0)/float(300)); 
+            count_pwm = 1;
+        } 
+        */  
+        //_viber.detach(); 
+        //OnVibe(snowwave500, (int)(sizeof(snowwave500)/sizeof(snowwave500[0])));
+    }else if(_on==0&&snowMode==true){
+        ChangeFlag2=false;
+        ChangeFlag=false;
+        //_pwmviber.detach();
+        //count_pwm = 0;
     }else if(_on==1&&grassMode==true){
-        OnVibe(grasswave, (int)(sizeof(grasswave)/sizeof(grasswave[0])));
+        OnVibe(leafwave2, (int)(sizeof(leafwave2)/sizeof(leafwave2[0])));
+        //OnVibe(grasswave, (int)(sizeof(grasswave)/sizeof(grasswave[0])));
+        //OnVibe(squarewave, (int)(sizeof(squarewave)/sizeof(squarewave[0])));
+        //OnVibe(gravelwave, (int)(sizeof(gravelwave)/sizeof(gravelwave[0])));
+    }else if(_on==1&&gravelMode==true){
+        OnVibe(gravelwave, (int)(sizeof(gravelwave)/sizeof(gravelwave[0])));
+    }else if(_on==1&&leafMode==true){
+        //OnVibe(leafwave2, (int)(sizeof(leafwave2)/sizeof(leafwave2[0])));
+        //OnVibe(heelwave, (int)(sizeof(heelwave)/sizeof(heelwave[0])));
+        //OnVibe(snowwave2, (int)(sizeof(snowwave2)/sizeof(snowwave2[0])));
+        //OnVibe(grasswave, (int)(sizeof(grasswave)/sizeof(grasswave[0])));
+        OnVibe(squarewave, (int)(sizeof(squarewave)/sizeof(squarewave[0])));
+        //OnVibe(waterwave1, (int)(sizeof(waterwave1)/sizeof(waterwave1[0])));
     }
     else if(_on==0){
-        _Vibration.rtp((char)0);    
+        if(ChangeFlag2 != true){ 
+            //_Vibration.rtp((char)0);  
+        }  
     }
 }
 
@@ -192,21 +374,31 @@
     if(c == 0) {
         SteadyMode=false;
         SinewaveMode=true;
-        ChangeFlag=true;
+        //ChangeFlag=true;
+        ChangeFlag2=false;
         CorrespondMode=false;
         snowMode=false;
         grassMode=false;
-        /*_Vibration.i2cWriteByte(MODE, _Vibration.PWM_ANALOG);
+        gravelMode=false;
+        leafMode=false;
+        SteadyON=false; 
+        VibeON=true;
+        /*
+        _Vibration.i2cWriteByte(MODE, _Vibration.PWM_ANALOG);
         _heart.attach(this, &Footile::_beat, 1.0);
         ChangeFlag=true;*/
+        
         // Wavefrom sequencer mode
     } else if (0 < c && c <= 123) { //Change waveform
         SteadyMode=false;
         SinewaveMode=false;
         ChangeFlag=false;
+        ChangeFlag2=false;
         CorrespondMode=false;
         snowMode=false;
         grassMode=false;
+        gravelMode=false;
+        leafMode=false;
         _Vibration.i2cWriteByte(WAVEFORM_SEQUENCER_1, c);
         _Vibration.i2cWriteByte(MODE, _Vibration.EXTERNAL_LEVEL);
         _heart.attach(this, &Footile::_beat, 1.0);
@@ -216,16 +408,24 @@
         SteadyMode=true;
         SinewaveMode=true;
         ChangeFlag=true;
+        ChangeFlag2=false;
         CorrespondMode=false;
         snowMode=false;
         grassMode=false;
+        gravelMode=false;
+        leafMode=false;
+        SteadyON=true; 
+        //VibeON=false;
     }else if (125<=c&&c<=255) {   //Change Magnituide
         if(SteadyMode==false&&SinewaveMode==false){
             ChangeFlag=false;    
         }else{
             ChangeFlag=true;
         }
-        _volumeBuf=(c-125)*255/(255-125);
+        if(c>=190){
+            _SquareVolume = c-190;
+        }
+        _volumeBuf = (c-125)*255/(255-125);
         
     }else if(c==256){ //Change Amplitude Mode
         CorrespondMode=true;
@@ -243,21 +443,59 @@
         ChangeFlag=true;
         snowMode=true;
         grassMode=false;
+        gravelMode=false;
+        leafMode=false;
+        count_pwm = 0;
     }else if(c==268){
         SteadyMode=false;
         SinewaveMode=false;
         CorrespondMode=false;
         ChangeFlag=true;
         snowMode=false;
-        grassMode=true;        
-    }
-    else {
+        grassMode=true;  
+        gravelMode=false;
+        leafMode=false;
+        count_pwm = 0;      
+    }else if(c==269){
+        SteadyMode=false;
+        SinewaveMode=false;
+        CorrespondMode=false;
+        ChangeFlag=true;
+        snowMode=false;
+        grassMode=false; 
+        gravelMode=true;
+        leafMode=false;  
+        count_pwm = 0;    
+    }else if(c==270){
+        SteadyMode=false;
+        SinewaveMode=false;
+        CorrespondMode=false;
+        ChangeFlag=true;
+        snowMode=false;
+        grassMode=false; 
+        gravelMode=false;
+        leafMode=true; 
+        count_pwm = 0;
+  
+    }else if (300<=c&&c<=428) {   //Change Magnituide
+        if(SteadyMode==false&&SinewaveMode==false){
+            ChangeFlag=false;    
+        }else{
+            ChangeFlag=false;
+        }
+        _SquareVolume = c-300;        
+    }else if (c==501) {   //Change Magnituide
+          _C_Volume=_SquareVolume;  
+    }else if (c==502) {   //Change Magnituide
+          SetDutyMode = true;  
+    }else if (c==503) {   //Change Magnituide
+        SetDutyMode = false;  
+    }else if (c==504) {   //Change Magnituide
+        VibeON = false;  
+    }else {
         _Vibration.i2cWriteByte(MODE, _Vibration.STANDBY);
         _heart.attach(this, &Footile::_beat, 2.0);
-    }
-    
-    
-    
+    }    
 }
 
 void Footile::_transmission(void)
@@ -273,5 +511,8 @@
 // heart beat
 void Footile::_beat(void)
 {
+    if(count_led2<=3){
     _led2 = !_led2;
+    count_led2 += 1;
+    }
 }
\ No newline at end of file
--- a/Footile.h	Wed May 30 02:34:33 2018 +0000
+++ b/Footile.h	Sun Mar 08 06:27:52 2020 +0000
@@ -34,6 +34,7 @@
     DigitalOut _led2;   // for debugging
     DigitalOut _led3;   // for debugging
     DigitalOut _trg;
+    //PwmOut _trg;
     AnalogIn _prssr;
     Serial _bt;
     DigitalOut _btDummy1; // LPC11U24 does not support flow control
@@ -42,21 +43,34 @@
     Ticker _trans;
     
     Ticker _viber;
+    Ticker _pwmviber;
     
     int _volumeBuf;
+    int _SquareVolume;
+    int _C_Volume;
     float _sens;
     char _buf[5];
     int _countSize;
     int _on;
     
+    int count_u;
+    int count_pwm;
+    int _trg_flag;
+    int count_led2;
     
     bool ChangeFlag;
+    bool ChangeFlag2;
+    bool SteadyON;
+    bool VibeON;
+    bool SetDutyMode;
+    bool leafMode;
     bool SteadyMode;
     bool SinewaveMode;
     bool CorrespondMode;
     bool ConnectCheck;
     bool snowMode;
     bool grassMode;
+    bool gravelMode;
     
     void _onReceive(void);
     void _beat(void);
@@ -65,6 +79,8 @@
     void _modeChange(unsigned short c);
     void VibeTimer();
     void OnVibe(const float* wave, int size);
+    void PwmDuty(int d);
+    void PwmVibe();
     
 };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FootileSoftware_20191008_01.lib	Sun Mar 08 06:27:52 2020 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/Uchida0923/code/FootileSoftware/#03cdee95fb5a
--- a/wave.h	Wed May 30 02:34:33 2018 +0000
+++ b/wave.h	Sun Mar 08 06:27:52 2020 +0000
@@ -1,36 +1,20 @@
 
 const float sinewave[]={
-0.00, 0.19, 0.37, 0.54, 0.68, 0.81, 0.90, 0.97, 1.00, 0.99, 0.95, 0.88, 0.77,
-0.64, 0.48, 0.31, 0.13, -0.06, -0.25, -0.43, -0.59, -0.73, -0.84, -0.93, -0.98,
+0.00,0.19,0.37,0.54,0.68,0.81,0.90,0.97, 1.00,0.99,0.95,0.88,0.77,
+0.64,0.48,0.31,0.13, -0.06, -0.25, -0.43, -0.59, -0.73, -0.84, -0.93, -0.98,
 -1.00, -0.98, -0.93, -0.84, -0.73, -0.59, -0.43, -0.25, -0.06};
 
 const float gravelwave[]={
     0.7,1,0.75,0,0,0,0,0,1,1,1,0.85,0,0,0,0.05,1,1,1,0,0,0,1,1,1,0.5,0,0,0.15,1,1,1,0.9,0,0,0.4,1,1,1,0.7,0.1,0.25,0.85,1,1,0.95,0.95,0.65,0.6,0.65,0.75,1,0.9,0.8,0.75,0.9,0.85,0.75,0.65,0.6,0.55,0.8,0.85,0.75,0.65,0.55,0.5,0.65,0.8,0.7,0.7,0.6,0.5,0.55,0.55,0.65,0.7,0.6,0.6,0.6,0.55,0.6,0.5,0.65,0.6,0.6,0.55,0.55,0.55,0.5,0.55,0.55,0.5,0.5,0.5,0.55,0.45,0.45,0.45,0.45,0.55,0.5,0.45,0.45,0.45,0.45,0.4,0.45,0.45,0.45,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.35,0.35,0.4,0.4,0.35,0.35,0.35,0.35,0.4,0.35,0.3,0.25,0.3,0.35,0.4,0.35,0.3,0.2,0.25,0.35,0.35,0.35,0.3,0.25,0.2,0.3,0.3,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.2,0.25,0.25,0.25,1,0.15,0.2,0.2,0.25,0.25,0.25,0.2,0.2,0.25,0.15,0.25,0.2,0.2,0.2,0.2,0.15,0.1,0.2,0.15,0.25,0.25,0.2,0.1,0.15,0.1,0.1,0.1,0.2,0.2,0.2,0.15,0.15,0.05,0.05,0.15,0.2,0.2,0.15,0.1,0.05,0.15,0.15,0.1,0.1,0.1,0.05,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.05,0.05,0.15,0.1,0.15,0.05,1,0.1,0.1,0.05,0.05,0.05,0.05,0.1,0.1,0.05,0.05,0,0,0.05,0.05,0.15,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0,0,0,0.05,0.1,0.1,0,0,0,0,0,0,0.05,0.05,0,0,0,0,0,0,0.05,0,0,0,0,1,0,0,0.05,0.05,0,0,0,0.05};
 
-const float snowwave150[]={
-    0.333 ,0.037 ,0.074 ,0.000 ,0.500 ,0.222 ,0.241 ,0.130 ,0.130 ,0.093 ,0.074 ,0.037 ,0.019};
-
 const float snowwave500[]={
-    1,1,0.15,0,0,0,1,1,1,0.45,0,0,0,1,1,1,0.1,0,0,0,1,1,1,0,0,0,0.45,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,1,1,1,0.9,0,0,0.5,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0.35,0,0,0.65,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0.95,1,1,1,0,0,0,1,1,1,1,0,0,0.55,1,1,1,0.6,0,0,1,1,1,1,0.05,0,0.15,1,1,1,1,0,0,1,1,1,1,0.4,0,0.5,1,1,1,0.85,0.2,0.5,1,1,1,0.9,0.4,0.6,1,1,1,0.75,0.2,0.45,1,1,1,0.7,0,0.15,1,1,1,1,0.05,0,0.4,1,1,1,0.7,0,0,0.6,1,1,1,0.55,0,0.05,0.7,1,1,1,0.55,0.2,0.25,0.65,1,0.75,0.75,0.75,0.7,0.65,0.7,0.65,0.7,0.7,0.65,0.65,0.65,0.65,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.55,0.6,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.5,0.55,0.55,0.55,0.5,0.5,0.55,0.5,0.45,0.5,0.5,0.5,0.45,0.5,0.45,0.45,0.45,0.45,0.45,0.45,0.45,0.45,0.45,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.3,0.35,0.3,0.35,0.35,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.25,0.3,0.25,0.3,0.25,0.25,0.25,0.25,0.25,0.25,0.3,0.25,0.25,0.25,0.2,0.25,0.25,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.15,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.15,0.2,0.2,0.2,0.15,0.15,0.2,0.15,0.15,0.15,0.2,0.15,0.1,0.15,0.2,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.1,0.15,0.15,0.15,0.1,0.1,0.1,0.1,0.15,0.1,0.05,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.15,0.1,0.05,0.1,0.1,0.05,0.1,0.1,0.1,0.1,0.1,0.05,0.05,0.1,0.05,0.05,0.05,0.05,0.05,0.05,0.1,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0,0,0.05,0.05,0.05,0.05};
-
-const float leafwave[]={
-    0.357,0.142,0.428,0.5,0.142,0,0.285,0.071,0,0,0.142,0,0.0714,0.214,0.357,0.214};
+    1,1,0.15,0,0,0,1,1,1,0.45,0,0,0,1,1,1,0.1,0,0,0,1,1,1,0,0,0,0.45,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,1,1,1,0.9,0,0,0.5,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0.35,0,0,0.65,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0.95,1,1,1,0,0,0,1,1,1,1,0,0,0.55,1,1,1,0.6,0,0,1,1,1,1,0.05,0,0.15,1,1,1,1,0,0,1,1,1,1,0.4,0,0.5,1,1,1,0.85,0.2,0.5,1,1,1,0.9,0.4,0.6,1,1,1,0.75,0.2,0.45,1,1,1,0.7,0,0.15,1,1,1,1,0.05,0,0.4,1,1,1,0.7,0,0,0.6,1,1,1,0.55,0,0.05,0.7,1,1,1,0.55,0.2,0.25,0.65,1,0.75,0.75,0.75,0.7,0.65,0.7,0.65,0.7,0.7,0.65,0.65,0.65,0.65,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.55,0.6,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.5,0.55,0.55,0.55,0.5,0.5,0.55,0.5,0.45,0.5,0.5,0.5,0.45,0.5,0.45,0.45,0.45,0.45,0.45,0.45,0.45,0.45,0.45,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.3,0.35,0.3,0.35,0.35,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.25,0.3,0.25,0.3,0.25,0.25,0.25,0.25,0.25,0.25,0.3,0.25,0.25,0.25,0.2,0.25,0.25,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.15,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.15,0.2,0.2,0.2,0.15,0.15,0.2,0.15,0.15,0.15,0.2,0.15,0.1,0.15,0.2,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.1,0.15,0.15,0.15,0.1,0.1,0.1,0.1,0.15,0.1,0.05,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.15,0.1,0.05,0.1,0.1,0.05,0.1,0.1,0.1,0.1,0.1,0.05,0.05,0.1,0.05,0.05,0.05,0.05,0.05,0.05,0.1,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0,0,0.05,0.05,0.05,0.05
+};
 
 const float leafwave2[]={
     0.25,1,0,0.35,0,0.05,0,1,0.55,0,0.95,0,1,0,1,0,0.65,0,1,1,0.05,1,0,0,0,1,1,1,0.2,1,1,0,0,1,0,1,0.95,0,1,0.45,0.7,0,0,0,1,0,0,0.65,0.85,1,1,0,1,1,0.85,1,1,1,0,1,1,0.8,1,1,1,1,1,1,1,1,1,1,0.4,1,0,0,1,1,1,0,1,0,1,1,0.15,0,0,1,1,0,1,1,0.1,0,1,1,0.15,1,1,0,0.55,1,1,1,0,0.9,0,1,1,1,0,1,0,1,0.35,1,1,1,1,1,0,1,0,1,1,0.5,0.5,1,0.75,1,1,0,0,0.25,0.8,1,0.75,0.15,0.75,1,0.55,0.7,0,1,0,1,1,1,0.15,0.15,1,0.3,1,1,0,1,1,0.65,0,0.15,1,1,1,1,1,0,1,1,1,0.35,1,1,1,1,1,0.75,1,0.45,1,0.7,0.85,0.75,0,0.85,1,0.9,0.8,0.85,1,0.85,0.1,0.7,0.6,1,1,0.75,1,0.25,0.95,0,0.65,0.75,0.6,1,1,0.85,1,0.45,1,0.8,0.85,0.45,0.55,0,0.4,0,1,1,1,0.8,1,1,1,0.55,0.85,1,1,0.35,1,0.6,0.75,0.95,0.4,0.2,0.6,0,0.6,0.45,0.1,1,1,0.75,0.9,0.45,0.8,1,0,0.45,0.2,0,0.55,0,0,0,0.55,0,0.1,0,0.25,0.45,0.8,0.35,1,0.1,0,0.75,0.15,0,0,0,1,0.5,1,0.3,0.55,1,0.05,0,0.35,0.65,0.15,0,1,0,0,0.95,0.35,0,1,1,1,0,0,1,0.3,0.55,0,0,1,0.8,0,0.65,1,0.05,1,1,1,0.8,1,1,0.65,1,0.8,0.9,1,0.1,1,0.6,1,0,0,0.85,0,0.7,0.4,0,1,0.4,0.75,0.65,0.7,0.95,1,0.8,0.6,0.85,0.55,0,0.65,0,0.2,0.55,1,0.7,0.5,0.4,0.95,0.05,0.95,0.6,1,0.7,0.1,0.65,0.45,0.75,1,0.1,0.6,1,0.7,0.3,0.5,0.45,0.3,0.4,0.4,0.95,0.85,0.65,0.6,0.2,0.45,0.55,0.65,0.5,0.35,0.5,0.45,0.6,0.25,0.2,0.4,0.4,0.95,0.35,0.75,0,0.25,0.7,0.2,0.55,0.15,0.4,0.4,0.5,0.35,0.35,0.2,0.2,0.25,0.4,0.35,0.35,0.4,0.35,0.45,0.35,0.1,0.2,0.35,0.15,0.35,0.75,0.3,0.6,0.2,0.35,0.45,0.3,0.05,0.1,0.1,0.4,0.15,0.3,0.35,0.35,0.15,0.25,0.4,0.25,0.25,0.05,0.35,0.4,0.4,0.1,0,0.55,0.45,0.2,0.15,0.05,0.1,0.35,0.25,0.25,0.2,0.2,0.2,0.2,0.15,0.2,0.2,0.15,0.2,0.15,0.15,0.15,0.15,0.15,0.2,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.1,0.1,0.15,0.15,0.15,0.15,0.15,0.1,0.15,0.1,0.1,0.15,0.1,0.1,0.15,0.1,0.1,0.05,0.1,0.1,0.1,0.1,0.1,0.1,0.05,0.1,0.1,0.05,0.1,0.05,0.1,0.1,0.05,0.05,0.1,0.05,0.1,0,0.05,0.05,0.1,0.05,0.05,0.05,0.05,0.05,0.05,0,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0,0.05,0.05,0.05,0.05,0.05,0.05,0,0,0.05,0,0,0.05,0.05,0.05,0,0,1
 };
-
-const float floorwave[]={
-    0.7,1,0.8,0,0,0,0.3,1,1,1,0,0,0,0.15,1,1,1,0,0,0,0.15,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0.8,1,1,1,0.95,0.2,0.4,1,1,1,1,0.95,0.8,1,1,1,1,1,1,1,1,1,1,0.9,0.85,1,1,1,1,0.9,0.8,0.85,0.95,1,1,1,0.9,0.85,0.85,0.9,0.95,0.95,0.9,0.9,0.85,0.85,0.8,0.85,0.85,0.85,0.8,0.8,0.8,0.8,0.8,0.75,0.75,0.75,0.75,0.7,0.75,0.65,0.75,0.7,0.7,0.7,0.65,0.7,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.6,0.6,0.6,0.6,0.6,0.55,0.6,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.6,0.55,0.55,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.45,0.45,0.45,0.45,0.5,0.45,0.45,0.45,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.35,0.4,0.4,0.4,0.35,0.35,0.35,0.35,0.3,0.35,0.4,0.35,0.35,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.25,0.3,0.3,0.25,0.3,0.25,0.3,0.25,0.3,0.3,0.25,0.3,0.25,0.25,0.25,0.2,0.25,0.2,0.25,0.2,0.2,0.2,0.25,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.15,0.2,0.2,0.2,0.2,0.2,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.1,0.1,0.1,0.1,0.1,0.15,0.15,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.05,0.05,0.1,0.1,0.1,0.1,0.1,0.1,0.05,0.05,0.05,0.05,0.1,0.05,0.1,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0,0.05,0.05,0.05,0.05,0.05,0,0.05,0,0.05,0,0.05,0.05};
-
-const float waterwave[]={
-        0.831 ,1.000 ,0.986 ,0.000 ,0.000 ,0.000 ,0.451 ,0.789 ,0.676 ,0.465 ,0.296 ,0.127 ,0.085 ,0.239 ,0.507 ,0.634 ,0.507 ,0.211 ,0.000 ,0.000 ,0.141 ,0.535 ,0.803 ,0.718 ,0.282 ,0.000 ,0.000 ,0.141 ,0.718 ,0.845 ,0.437 ,0.000 ,0.000 ,0.254 ,0.352 ,0.239 ,0.183 ,0.338 ,0.479 ,0.352 ,0.127 ,0.113 ,0.310 ,0.437 ,0.310 ,0.099 ,0.042 ,0.155 ,0.282 ,0.338 ,0.324 ,0.310 ,0.254 ,0.211 ,0.169 ,0.155 ,0.183 ,0.239 ,0.254 ,0.211 ,0.141 ,0.127 ,0.225 ,0.324 ,0.324 ,0.225 ,0.141 ,0.127 ,0.155 ,0.197 ,0.239 ,0.254 ,0.211 ,0.127 ,0.056 ,0.113 ,0.239 ,0.310 ,0.239 ,0.141 ,0.127 ,0.183 ,0.197 ,0.169 ,0.155 ,0.169 ,0.197 ,0.169 ,0.113 ,0.113 ,0.155 ,0.197 ,0.197 ,0.183 ,0.169 ,0.141 ,0.113 ,0.127 ,0.141 ,0.155 ,0.155 ,0.141 ,0.141 ,0.155 ,0.155 ,0.141 ,0.113 ,0.113 ,0.127 ,0.141 ,0.169 ,0.169 ,0.141 ,0.113 ,0.099 ,0.099 ,0.099 ,0.113 ,0.127 ,0.141 ,0.155 ,0.141 ,0.113 ,0.099 ,0.085 ,0.099 ,0.127 ,0.127 ,0.099 ,0.085 ,0.099 ,0.141 ,0.141 ,0.127 ,0.085 ,0.070 ,0.085 ,0.099 ,0.113 ,0.099 ,0.099 ,0.099 ,0.099 ,0.099 ,0.085 ,0.085 ,0.099 ,0.099 ,0.099 ,0.099 ,0.085 ,0.070 ,0.070 ,0.085 ,0.099 ,0.099 ,0.085 ,0.085 ,0.085 ,0.070 ,0.070 ,0.085 ,0.070 ,0.070 ,0.070 ,0.070 ,0.085 ,0.085 ,0.085 ,0.070 ,0.056 ,0.056 ,0.056 ,0.070 ,0.070 ,0.056 ,0.056 ,0.056 ,0.070 ,0.070 ,0.085 ,0.070 ,0.056 ,0.042 ,0.056 ,0.070 ,0.070 ,0.070 ,0.056 ,0.056 ,0.042 ,0.056 ,0.042 ,0.056 ,0.056 ,0.056 ,0.056 ,0.056 ,0.056 ,0.056 ,0.042 ,0.042 ,0.042 ,0.056 ,0.056 ,0.056 ,0.056 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.042 ,0.028 ,0.028 ,0.042 ,0.042 ,0.056 ,0.042 ,0.028 ,0.014 ,0.028 ,0.042 ,0.028 ,0.042 ,0.056 ,0.042 ,0.028 ,0.014 ,0.014 ,0.028 ,0.042 ,0.042 ,0.028 ,0.028 ,0.014 ,0.014 ,0.028 ,0.028 ,0.028 ,0.014 ,0.028 ,0.028 ,0.028 ,0.014 ,0.028 ,0.014 ,0.028 ,0.028 ,0.014 ,0.014 ,0.014 ,0.014 ,0.028 ,0.014 ,0.014 ,0.014 ,0.014 ,0.028 ,0.014 ,0.014 ,0.014 ,0.028 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.000 ,0.014 ,0.014 ,0.000 ,0.014 ,0.000 ,0.014 ,0.014 ,0.014 ,0.000 ,0.000 ,0.000 ,0.000 ,0.014 ,0.014 ,0.000 ,0.000 ,0.014 ,0.000 ,0.000 ,0.000 ,0.000 ,0.000 ,0.014};
-
-const float nukarumiwave[]={
-        0.257 ,0.365 ,0.041 ,0.000 ,0.000 ,0.189 ,0.054 ,0.000 ,0.000 ,0.095 ,0.419 ,0.297 ,0.000 ,0.000 ,0.000 ,0.662 ,0.946 ,0.946 ,0.000 ,0.000 ,0.108 ,0.932 ,1.000 ,0.527 ,0.162 ,0.000 ,0.000 ,0.000 ,0.041 ,0.608 ,0.973 ,0.878 ,0.473 ,0.095 ,0.000 ,0.041 ,0.243 ,0.338 ,0.270 ,0.284 ,0.527 ,0.662 ,0.392 ,0.000 ,0.000 ,0.014 ,0.419 ,0.541 ,0.432 ,0.297 ,0.216 ,0.203 ,0.324 ,0.500 ,0.459 ,0.122 ,0.000 ,0.000 ,0.216 ,0.514 ,0.514 ,0.324 ,0.162 ,0.122 ,0.216 ,0.338 ,0.338 ,0.203 ,0.068 ,0.095 ,0.203 ,0.284 ,0.270 ,0.216 ,0.203 ,0.216 ,0.216 ,0.189 ,0.162 ,0.176 ,0.189 ,0.216 ,0.203 ,0.203 ,0.189 ,0.189 ,0.176 ,0.189 ,0.176 ,0.176 ,0.176 ,0.176 ,0.176 ,0.176 ,0.176 ,0.162 ,0.162 ,0.162 ,0.162 ,0.162 ,0.162 ,0.162 ,0.162 ,0.162 ,0.149 ,0.149 ,0.149 ,0.149 ,0.149 ,0.149 ,0.149 ,0.149 ,0.149 ,0.135 ,0.149 ,0.149 ,0.135 ,0.135 ,0.135 ,0.135 ,0.135 ,0.135 ,0.135 ,0.135 ,0.135 ,0.122 ,0.122 ,0.122 ,0.122 ,0.122 ,0.122 ,0.122 ,0.122 ,0.108 ,0.122 ,0.122 ,0.108 ,0.108 ,0.108 ,0.108 ,0.095 ,0.108 ,0.108 ,0.108 ,0.108 ,0.108 ,0.095 ,0.095 ,0.095 ,0.095 ,0.095 ,0.108 ,0.095 ,0.095 ,0.095 ,0.095 ,0.081 ,0.095 ,0.095 ,0.095 ,0.095 ,0.081 ,0.081 ,0.081 ,0.081 ,0.081 ,0.081 ,0.081 ,0.081 ,0.081 ,0.081 ,0.081 ,0.081 ,0.081 ,0.081 ,0.081 ,0.068 ,0.081 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.068 ,0.054 ,0.054 ,0.068 ,0.054 ,0.054 ,0.054 ,0.054 ,0.054 ,0.054 ,0.054 ,0.054 ,0.054 ,0.054 ,0.054 ,0.041 ,0.054 ,0.041 ,0.054 ,0.054 ,0.054 ,0.054 ,0.054 ,0.054 ,0.041 ,0.041 ,0.054 ,0.041 ,0.054 ,0.054 ,0.041 ,0.041 ,0.041 ,0.041 ,0.041 ,0.041 ,0.041 ,0.041 ,0.041 ,0.027 ,0.041 ,0.041 ,0.027 ,0.041 ,0.041 ,0.041 ,0.041 ,0.041 ,0.041 ,0.041 ,0.041 ,0.027 ,0.027 ,0.041 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.014 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.027 ,0.014 ,0.027 ,0.027 ,0.027 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.027 ,0.027 ,0.014 ,0.014 ,0.014 ,0.014 ,0.000 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.027 ,0.014 ,0.000 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.000 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.014 ,0.000 ,0.014 ,0.014};
-
-const float grasswave[]={
-        0.02,0.08,0.03,0.00,0.00,0.01,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.02,0.12,0.14,0.00,0.00,0.00,0.00,0.14,0.18,0.13,0.13,0.11,0.00,0.00,0.00,0.11,0.22,0.05,0.00,0.00,0.00,0.33,0.45,0.27,0.00,0.00,0.00,0.06,0.12,0.06,0.00,0.04,0.21,0.30,0.19,0.00,0.00,0.00,0.06,0.14,0.10,0.07,0.13,0.21,0.15,0.00,0.00,0.00,0.13,0.28,0.21,0.05,0.00,0.01,0.05,0.02,0.00,0.01,0.14,0.23,0.18,0.02,0.00,0.00,0.00,0.13,0.28,0.28,0.15,0.00,0.00,0.00,0.03,0.12,0.13,0.07,0.00,0.00,0.00,0.07,0.17,0.19,0.11,0.00,0.00,0.00,0.04,0.03,0.00,0.00,0.09,0.23,0.23,0.05,0.00,0.00,0.00,0.03,0.14,0.22,0.22,0.11,0.00,0.00,0.00,0.00,0.10,0.21,0.21,0.14,0.02,0.00,0.00,0.00,0.09,0.13,0.05,0.00,0.00,0.02,0.20,0.27,0.14,0.00,0.00,0.00,0.13,0.23,0.11,0.00,0.00,0.06,0.19,0.19,0.09,0.00,0.00,0.00,0.00,0.08,0.13,0.14,0.12,0.05,0.00,0.00,0.00,0.10,0.19,0.15,0.01,0.00,0.00,0.00,0.12,0.18,0.12,0.00,0.00,0.00,0.10,0.15,0.08,0.00,0.00,0.03,0.03,0.00,0.01,0.02,0.00,0.00,0.00,0.05,0.11,0.13,0.13,0.06,0.00,0.00,0.00,0.11,0.11,0.00,0.00,0.00,0.11,0.19,0.08,0.00,0.00,0.00,0.11,0.18,0.12,0.01,0.00,0.00,0.00,0.00,0.02,0.09,0.14,0.09,0.00,0.00,0.00,0.03,0.11,0.10,0.04,0.00,0.00,0.00,0.00,0.04,0.06,0.01,0.00,0.00,0.05,0.14,0.11,0.00,0.00,0.00,0.00,0.12,0.12,0.04,0.00,0.05,0.07,0.00,0.00,0.00,0.00,0.12,0.12,0.03,0.00,0.03,0.11,0.10,0.00,0.00,0.00,0.00,0.07,0.06,0.00,0.00,0.00,0.04,0.10,0.09,0.03,0.00,0.00,0.00,0.00,0.02,0.08,0.08,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.09,0.19,0.20,0.09,0.00,0.00,0.00,0.00,0.00,0.15,0.30,0.27,0.00,0.00,0.00,0.22,0.61,0.60,0.07,0.00,0.00,0.13,0.74,0.73,0.13,0.00,0.02,0.65,0.60,0.00,0.00,0.01,0.65,0.75,0.65,0.16,0.00,0.00,0.24,0.36,0.15,0.00,0.16,0.53,0.60,0.32,0.07,0.10,0.24,0.25,0.13,0.08,0.19,0.38,0.41,0.22,0.01,0.00,0.18,0.34,0.36,0.28,0.15,0.05,0.06,0.18,0.24,0.20,0.19,0.26,0.30,0.18,0.03,0.02,0.17,0.32,0.33,0.19,0.01,0.00,0.01,0.22,0.41,0.42,0.25,0.03,0.00,0.04,0.18,0.21,0.14,0.10,0.15,0.22,0.26,0.19,0.07,0.01,0.06,0.14,0.17,0.15,0.14,0.15,0.14,0.07,0.04,0.08,0.16,0.22,0.22,0.17,0.06,0.00,0.03,0.16,0.21,0.13,0.01,0.01,0.10,0.19,0.19,0.13,0.07,0.05,0.08,0.16,0.23,0.21,0.10,0.00,0.00,0.00,0.06,0.23,0.32,0.25,0.07,0.00,0.00,0.09,0.24,0.29,0.21,0.00,0.00,0.00,0.00,0.31,0.47,0.39,0.15,0.00,0.00,0.04,0.22,0.27,0.17,0.01,0.00,0.00,0.06,0.10,0.14,0.21,0.25,0.20,0.08,0.00,0.01,0.06,0.06,0.04,0.06,0.15,0.22,0.18,0.06,0.00,0.02,0.15,0.20,0.13,0.00,0.00,0.00,0.14,0.26,0.22,0.04,0.00,0.00,0.11,0.32,0.32,0.14,0.00,0.00,0.00,0.03,0.01,0.01,0.12,0.25,0.24,0.05,0.00,0.00,0.03,0.21,0.26,0.17,0.05,0.00,0.00,0.00,0.00,0.01,0.08,0.15,0.13,0.06,0.04,0.10,0.15,0.10,0.00,0.00,0.00,0.00,0.11,0.22,0.21,0.08,0.00,0.00,0.07,0.10,0.06,0.03,0.02,0.00,0.00,0.00,0.00,0.04,0.13,0.20,0.19,0.08,0.00,0.00,0.00,0.04,0.02,0.00,0.02,0.10,0.15,0.12,0.04,0.00,0.00,0.00,0.00,0.00,0.00,0.17,0.36,0.33,0.06,0.00,0.00,0.00,0.21,0.39,0.34,0.14,0.00,0.00,0.09,0.19,0.15,0.03,0.03,0.13,0.18,0.10,0.01,0.02,0.12,0.20,0.22,0.18,0.06,0.00,0.00,0.03,0.26,0.36,0.24,0.02,0.00,0.00,0.06,0.17,0.18,0.10,0.01,0.01,0.05,0.05,0.00,0.03,0.21,0.37,0.28,0.00,0.00,0.00,0.19,0.32,0.17,0.00,0.00,0.00,0.21,0.33,0.22,0.00,0.00,0.00,0.17,0.32,0.29,0.12,0.00,0.00,0.00,0.19,0.65,0.65,0.34,0.00,0.00,0.00,0.29,0.43,0.43,0.33,0.17,0.02,0.00,0.06,1.00,0.34,0.44,0.36,0.14,0.00,0.00,0.13,0.19,0.20,0.20,0.20,0.16,0.15,0.24,0.33,0.25,0.03,0.00,0.00,0.20,0.34,0.29,0.13,0.03,0.05,0.14,0.23,0.29,0.24,0.10,0.00,0.00,0.07,0.22,0.28,0.24,0.17,0.09,0.01,0.00,0.08,0.19,0.21,0.14,0.08,0.11,0.17,0.17,0.12,0.06,0.04,0.06,0.11,0.16,0.15,0.09,0.03,0.05,0.13,0.19,0.18,0.12,0.07,0.08,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.08,0.08,0.09,0.08,0.08,0.08,0.08,0.07,0.08,0.08,0.08,0.08,0.08,0.08,0.07,0.07,0.07,0.07,0.07,0.07,0.07,0.07,0.07,0.07,0.07,0.07,0.06,0.07,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.05,0.06,0.05,0.05,0.06,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.04,0.04,0.05,0.05,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.04,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.04,0.03,0.03,0.03,0.03,0.02,0.02,0.03,0.03,0.03,0.02,0.03,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.03,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.01,0.02,0.02,0.02,0.02,0.01,0.01,0.02,0.02,0.02,0.01,0.01,0.01,0.01,0.01,0.02,0.01,0.01,0.01,0.01,0.01,0.01,0.02,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.00,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.00,0.01,0.01,0.00,0.01,0.01,0.01,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01};
-
-const float netawave[]={
-    0.487 ,0.447 ,0.118 ,0.184 ,0.474 ,0.329 ,0.000 ,0.000 ,0.145 ,0.921 ,0.921 ,0.553 ,0.000 ,0.000 ,0.132 ,0.987 ,0.974 ,0.000 ,0.000 ,0.237 ,1.000 ,0.763 ,0.000 ,0.000 ,0.658 ,0.737 ,0.224 ,0.026 ,0.342 ,0.513 ,0.342 ,0.250 ,0.329 ,0.355 ,0.250 ,0.237 ,0.329 ,0.382 ,0.316 ,0.263 ,0.276 ,0.316 ,0.303 ,0.263 ,0.263 ,0.303 ,0.329 ,0.276 ,0.237 ,0.237 ,0.276 ,0.303 ,0.276 ,0.237 ,0.237 ,0.276 ,0.263 ,0.224 ,0.224 ,0.250 ,0.263 ,0.237 ,0.224 ,0.237 ,0.237 ,0.211 ,0.211 ,0.250 ,0.250 ,0.197 ,0.184 ,0.237 ,0.263 ,0.211 ,0.158 ,0.184 ,0.263 ,0.276 ,0.197 ,0.118 ,0.105 ,0.211 ,0.316 ,0.303 ,0.171 ,0.066 ,0.079 ,0.197 ,0.263 ,0.276 ,0.237 ,0.171 ,0.092 ,0.053 ,0.132 ,0.276 ,0.316 ,0.211 ,0.092 ,0.066 ,0.184 ,0.171 ,0.197 ,0.211 ,0.184 ,0.145 ,0.118 ,0.145 ,0.184 ,0.171 ,0.132 ,0.105 ,0.145 ,0.145 ,0.145 ,0.145 ,0.145 ,0.145 ,0.132 ,0.145 ,0.132 ,0.132 ,0.132 ,0.132 ,0.132 ,0.132 ,0.132 ,0.132 ,0.132 ,0.132 ,0.132 ,0.132 ,0.118 ,0.118 ,0.118 ,0.118 ,0.118 ,0.118 ,0.105 ,0.118 ,0.118 ,0.118 ,0.105 ,0.105 ,0.105 ,0.105 ,0.105 ,0.105 ,0.105 ,0.105 ,0.105 ,0.105 ,0.105 ,0.105 ,0.092 ,0.092 ,0.092 ,0.092 ,0.092 ,0.092 ,0.092 ,0.092 ,0.092 ,0.092 ,0.092 ,0.092 ,0.092 ,0.092 ,0.079 ,0.079 ,0.079 ,0.079 ,0.092 ,0.079 ,0.079 ,0.079 ,0.079 ,0.079 ,0.079 ,0.079 ,0.079 ,0.079 ,0.079 ,0.079 ,0.066 ,0.066 ,0.066 ,0.066 ,0.066 ,0.066 ,0.066 ,0.066 ,0.066 ,0.066 ,0.066 ,0.066 ,0.053 ,0.066 ,0.053 ,0.053 ,0.066 ,0.066 ,0.053 ,0.066 ,0.066 ,0.053 ,0.053 ,0.053 ,0.039 ,0.066 ,0.053 ,0.053 ,0.053 ,0.079 ,0.053 ,0.053 ,0.053 ,0.053 ,0.039 ,0.053 ,0.039 ,0.053 ,0.053 ,0.053 ,0.039 ,0.039 ,0.053 ,0.039 ,0.039 ,0.039 ,0.039 ,0.039 ,0.039 ,0.039 ,0.039 ,0.039 ,0.039 ,0.039 ,0.026 ,0.039 ,0.039 ,0.039 ,0.026 ,0.039 ,0.039 ,0.039 ,0.039 ,0.026 ,0.039 ,0.039 ,0.039 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.039 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.026 ,0.013 ,0.026 ,0.026 ,0.026 ,0.013 ,0.026 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.026 ,0.026 ,0.013 ,0.013 ,0.026 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.000 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.013 ,0.000 ,0.000 ,0.013 ,0.000 ,0.000 ,0.013 ,0.013 ,0.000 ,0.000 ,0.013 ,0.000 ,0.000 ,0.013 ,0.000 ,0.013 ,0.013};
+const float squarewave[]={
+    //1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
+    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
+};
\ No newline at end of file