Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 20 of 20

Thread: Wrong Kick sound with Teensy 3.6 internal DAC

  1. #1
    Senior Member
    Join Date
    Nov 2015
    Posts
    187

    Wrong Kick sound with Teensy 3.6 internal DAC

    Hi, i'm using teensy 3.6 internal DAC to play Wave mono files 44.1 16bit
    from the SD (not the teensy internal SD)

    Some snare, HH samples are ok but Kick sounds are always creepy

    Is a problem of the dac resolution?

  2. #2
    Senior Member
    Join Date
    Nov 2015
    Posts
    187

    Drum machine Project need help!

    Hi, after some research, me and my partner are in a blind alley!
    We are working on the version 2 of our beloved drum machine Shapeshifter (www.faselunare.com)

    the project has grown significantly and has become quite complex.

    These are the current hardware specifications

    Code:
    24 buttons including 16 for the steps
    3 potentiometers
    1 encoder
    1 128-matrix led WS2812C
    Each pot/encoder/buttons/jack has his own rgb WS2812C led
    
    Audio Out direct from DAC1 and DAC 2
    Midi In
    Midi Out
    
    Clock In
    Clock Out
    Reset
    
    Trig Out 1
    Trig Out 2
    Trig Out 3
    Trig Out 4
    
    Breadboard for prototyping
    Expansion board space (we use it now for the display, in the next version we move the breadboard on the right to make space for a bigger display)
    The drum now has 4 sample track (1,2,3,4)
    The samples are read directly from the SD card (not the onboard SD)

    Track 5,6,7,8 control the 4 triggers (very nice with modulars)

    The Led Matrix show the 4 sample tracks with his length

    Each Tracks may have a different length

    The pots control a filter and a bit crusher

    The six operation buttons (A B C D E F)
    Button A + button 1...16 select The track
    Button B + button 1...16 select the track sample (only for the first 4 track obviously)
    Button C + button 1, 2, 3 change the time division

    !!THE PROBLEM!!

    First track is for the Kick Sound and here we have a strange problem, kick samples always sound wrong with huge amount of glitches (we have tried several samples)
    We would like to understand with you if the problem is hardware or if there is something wrong in the samples ... would you like to give us a hand?

    This is the schematics
    Printing Stampa schema.pdf

    This is the mechanical drawing
    SHAPESHIFTER_470.pdf

    And this is a pic of the prototype
    Click image for larger version. 

Name:	65855483_2525408777477911_251824506773962752_o.jpg 
Views:	13 
Size:	74.6 KB 
ID:	18007

    This is the actual code
    https://gitlab.com/agdl1/shapeshifter/tree/wip
    Last edited by urbanspaceman; 10-24-2019 at 10:45 PM.

  3. #3
    Senior Member
    Join Date
    Nov 2015
    Posts
    187
    We also try to change the playSdWav with a synth kick but the result is the same.

    Original Samples

    Short video with only kick sample
    Last edited by urbanspaceman; 10-24-2019 at 10:40 PM.

  4. #4
    Senior Member
    Join Date
    Nov 2017
    Location
    Belgium
    Posts
    152
    Checked your samples, there is nothing wrong with them. But you already knew that since your problem persist with the use of AudioSynthSimpleDrum.

    It's kind of hard to troubleshoot you problem without the actual hardware but there are two things I would try out first:

    Reduce AudioMemory(250) to something more reasonable. Use AudioMemoryUsage() & AudioMemoryUsageMax() to estimate what your project needs.
    Although I don't think this will make a difference, it's worth a shot.

    Comment everything related to the scheduler lib(include, startLoop(), yield()).
    Call readKeypadLoop() from the main loop() and not ledScan(), memoryManagement(), clkOut() assuming they are not essential to run shapeshifter.
    See what happens from there. You have three possible outcomes. Problem persists, problem persists but sounds different, problem gone.
    My rationale behind above is that the scheduler lib was not used in shapeshifter v1, assuming v1 did not suffer from this problem.
    Personally, I would have made use of the variable type elapsedMillis in the main loop to call the functions instead of using the scheduler lib. It just gives you more control.

  5. #5
    Senior Member
    Join Date
    Nov 2015
    Posts
    187
    Update:
    We have a 64Mbit Ram on board, the actual firmware does not use it
    but the initial idea was to load some kit of samples from the SD to the RAM
    how elektron does

  6. #6
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    20,771
    Can you try creating a very small program which only plays the sample? Maybe use File > Examples > Audio > SamplePlayer, but load your own samples and adapt it to pins you have unused on your design?

    Using a simple and known-good (or very likely good) example could at least help determine if there's a hardware problem corrupting the sound.

  7. #7
    Senior Member
    Join Date
    Nov 2015
    Posts
    187
    yes, i can try tonight
    I keep you updated

  8. #8
    Member
    Join Date
    Nov 2012
    Location
    Olympia, WA
    Posts
    54
    The Polaron has a pretty similar framework (3.6, uses native DACs). Nothing wrong with its kicks. You might check out the gain staging in your product vs. the Polaron: https://github.com/zueblin/Polaron
    Last edited by drjohn; 10-25-2019 at 10:40 PM.

  9. #9
    Senior Member
    Join Date
    Nov 2015
    Posts
    187
    Some update and test

    1st test, i have used this sketch to trigger a kick sound in memory : no problem
    Code:
    #include <Audio.h>
    #include <Wire.h>
    #include <SPI.h>
    #include <SD.h>
    #include <SerialFlash.h>
    #include <Bounce.h>
    
    // WAV files converted to code by wav2sketch
    #include "AudioSampleSnare.h"        // http://www.freesound.org/people/KEVOY/sounds/82583/
    #include "AudioSampleTomtom.h"       // http://www.freesound.org/people/zgump/sounds/86334/
    #include "AudioSampleHihat.h"        // http://www.freesound.org/people/mhc/sounds/102790/
    #include "AudioSampleKick.h"         // http://www.freesound.org/people/DWSD/sounds/171104/
    #include "AudioSampleGong.h"         // http://www.freesound.org/people/juskiddink/sounds/86773/
    #include "AudioSampleCashregister.h" // http://www.freesound.org/people/kiddpark/sounds/201159/
    
    AudioPlayMemory    sound0;
    AudioPlayMemory    sound1;  // six memory players, so we can play
    AudioPlayMemory    sound2;  // all six sounds simultaneously
    AudioPlayMemory    sound3;
    AudioPlayMemory    sound4;
    AudioPlayMemory    sound5;
    AudioMixer4        mix1;    // two 4-channel mixers are needed in
    AudioMixer4        mix2;    // tandem to combine 6 audio sources
    AudioOutputI2S     headphones;
    AudioOutputAnalog  dac;     // play to both I2S audio board and on-chip DAC
    
    // Create Audio connections between the components
    //
    AudioConnection c1(sound0, 0, mix1, 0);
    AudioConnection c2(sound1, 0, mix1, 1);
    AudioConnection c3(sound2, 0, mix1, 2);
    AudioConnection c4(sound3, 0, mix1, 3);
    AudioConnection c5(mix1, 0, mix2, 0);   // output of mix1 into 1st input on mix2
    AudioConnection c6(sound4, 0, mix2, 1);
    AudioConnection c7(sound5, 0, mix2, 2);
    AudioConnection c8(mix2, 0, headphones, 0);
    AudioConnection c9(mix2, 0, headphones, 1);
    AudioConnection c10(mix2, 0, dac, 0);
    
    
    void setup() {
      AudioMemory(10);
    
      mix1.gain(0, 0.4);
      mix1.gain(1, 0.4);
      mix1.gain(2, 0.4);
      mix1.gain(3, 0.4);
      mix2.gain(1, 0.4);
      mix2.gain(2, 0.4);
    }
    
    void loop() {
        sound3.play(AudioSampleKick);
        delay(500);
    }
    2nd test, as before but read my kick samples from sd card : no problem

    Code:
    #include <Audio.h>
    #include <Wire.h>
    #include <SPI.h>
    #include <SD.h>
    #include <SerialFlash.h>
    
    AudioPlaySdWav           playWav1;
    
    AudioOutputAnalog      audioOutput;
    AudioConnection          patchCord1(playWav1, 0, audioOutput, 0);
    AudioConnection          patchCord2(playWav1, 1, audioOutput, 1);
    
    
    // Use these with the Teensy 3.5 & 3.6 SD card
    #define SDCARD_CS_PIN    BUILTIN_SDCARD
    #define SDCARD_MOSI_PIN  11  // not actually used
    #define SDCARD_SCK_PIN   13  // not actually used
    
    void setup() {
      Serial.begin(9600);
      AudioMemory(8);
    
      SPI.setMOSI(SDCARD_MOSI_PIN);
      SPI.setSCK(SDCARD_SCK_PIN);
      if (!(SD.begin(SDCARD_CS_PIN))) {
        // stop here, but print a message repetitively
        while (1) {
          Serial.println("Unable to access the SD card");
          delay(500);
        }
      }
    }
    
    void playFile(const char *filename)
    {
      Serial.print("Playing file: ");
      Serial.println(filename);
    
      playWav1.play(filename);
      delay(5);
    }
    
    
    void loop() {
      playFile("tr1_1.WAV");  // filenames are always uppercase 8.3 format
      delay(100);
      playFile("tr1_2.WAV");
      delay(100);
      playFile("tr1_3.WAV");
      delay(100);
      playFile("tr1_4.WAV");
      delay(100);
      playFile("tr1_5.WAV");
      delay(100);
      playFile("tr1_6.WAV");
      delay(100);
      playFile("tr1_7.WAV");
      delay(100);
      playFile("tr1_8.WAV");
      delay(100);
      playFile("tr1_9.WAV");
      delay(100);
      playFile("tr1_10.WAV");
      delay(100);
      playFile("tr1_11.WAV");
      delay(100);
      playFile("tr1_12.WAV");
      delay(100);
      playFile("tr1_13.WAV");
      delay(100);
      playFile("tr1_14.WAV");
      delay(100);
      playFile("tr1_15.WAV");
      delay(100);
      playFile("tr1_16.WAV");
      delay(100);
    }

    3rd test, with my actual drum firmware

    Code:
      Serial.println("Memory: ");
      Serial.println(AudioMemoryUsage());
      Serial.println(",");
      Serial.println(AudioMemoryUsageMax());
      Serial.println("    ");
    
      Serial.println("Processor: ");
      Serial.println(AudioProcessorUsage());
      Serial.println(",");
      Serial.println(AudioProcessorUsageMax());
      Serial.println("    ");
    With this result

    Code:
    Memory: 
    1
    ,
    5
        
    Processor: 
    3.87
    ,
    82.26
        
    Memory: 
    1
    ,
    5
        
    Processor: 
    3.87
    ,
    82.26
        
    Memory: 
    1
    ,
    5
        
    Processor: 
    3.87
    ,
    82.26
        
    Memory: 
    1
    ,
    5
        
    Processor: 
    3.87
    ,
    82.26
        
    Memory: 
    1
    ,
    5
        
    Processor: 
    3.87
    ,
    82.26
        
    Memory: 
    1
    ,
    5
        
    Processor: 
    24.77
    ,
    82.26
        
    Memory: 
    1
    ,
    5
        
    Processor: 
    24.77
    ,
    82.26
        
    Memory: 
    1
    ,
    5
        
    Processor: 
    24.77
    ,
    82.26
        
    Memory: 
    1
    ,
    5
        
    Processor: 
    24.77
    ,
    82.26

  10. #10
    Senior Member
    Join Date
    Nov 2015
    Posts
    187
    Disabling the 128leds matrix improve the sound
    so, is a problem of resource? Teensy 3.6 is not enough?

  11. #11
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    20,771
    Ah, I see your problem, on line 18 in SSLEDs.h:

    https://gitlab.com/agdl1/shapeshifte...s/SSLEDs.h#L18

    The bad news is Adafruit_NeoPixel does not play well with audio, or anything else needing interrupts or CPU time while the LEDs update. It's a "blocking" library, meaning it hogs the CPU while working, so nothing else (like audio) gets to work. You really need to stop using Adafruit_NeoPixel to update the LEDs.

    The good news is we do have a non-blockin library to (mostly) replace it, called WS2812Serial. It will work with audio, because it uses DMA to update the LEDs, leaving the CPU and interrupts free for audio and everything else.

    https://github.com/PaulStoffregen/WS2812Serial

    But WS2812Serial only supports certain pins. On Teensy 3.6 you can use pins (1, 5, 26), 8, 10, 32, 33. On that page, scroll down to "Supported Pins & Serial Ports" for details.

    I didn't look through the *many* other header files in your project to find the definitions of LEDs_PIN and MATRIX_PIN. If you're extremely lucky, maybe you already chose pins among the ones supported by WS2812Serial. But odds are strong you'll need to cut traces on your PCB and solder mod wires to connect the LEDs to pins which can work with WS2812Serial.

  12. #12
    Senior Member
    Join Date
    Nov 2015
    Posts
    187
    Thank you Paul, i'm trying to change the library
    but i get some error

    in file https://gitlab.com/agdl1/shapeshifte...s/SSLEDs.h#L18

    Code:
    //#include <Adafruit_NeoPixel.h>
    #include <WS2812Serial.h>
    in the same file

    from this
    Code:
    Adafruit_NeoPixel LEDs = Adafruit_NeoPixel(LEDs_LENGTH, LEDs_PIN, NEO_GRB + NEO_KHZ800);
    Adafruit_NeoPixel LEDsMatrix = Adafruit_NeoPixel(MATRIX_LENGTH, MATRIX_PIN, NEO_GRB + NEO_KHZ800);
    to this

    Code:
      byte drawingMemory[LEDs_LENGTH*3];         //  3 bytes per LED
        DMAMEM byte displayMemory[LEDs_LENGTH*12]; // 12 bytes per LED
    
        byte MatrixDrawingMemory[MATRIX_LENGTH*3];         //  3 bytes per LED
        DMAMEM byte MatrixDisplayMemory[MATRIX_LENGTH*12]; // 12 bytes per LED
    
        WS2812Serial LEDs(LEDs_LENGTH, displayMemory, drawingMemory, LEDs_PIN, WS2812_GRB);
        WS2812Serial LEDsMatrix(MATRIX_LENGTH, MatrixDisplayMemory, MatrixDrawingMemory, MATRIX_PIN, WS2812_GRB);
    but we get this error

    Code:
    Arduino:1.8.10 (Mac OS X), TD: 1.48, Scheda:"Teensy 3.6, Serial, 180 MHz, Faster, US English"
    
    In file included from /Users/Urbanspaceman/Documents/Arduino/shapeshifter/shapeshifter-wip 10/Firmware/shapeShifterV2/shapeShifterV2.ino:14:0:
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:72:45: error: section attribute not allowed for 'displayMemory'
         DMAMEM byte displayMemory[LEDs_LENGTH*12]; // 12 bytes per LED
                                                 ^
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:72:45: warning: 'used' attribute ignored [-Wattributes]
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:75:53: error: section attribute not allowed for 'MatrixDisplayMemory'
         DMAMEM byte MatrixDisplayMemory[MATRIX_LENGTH*12]; // 12 bytes per LED
                                                         ^
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:75:53: warning: 'used' attribute ignored [-Wattributes]
    In file included from /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/structures.h:14:0,
                     from /Users/Urbanspaceman/Documents/Arduino/shapeshifter/shapeshifter-wip 10/Firmware/shapeShifterV2/shapeShifterV2.ino:12:
    constants.h:67: error: expected identifier before numeric constant
     #define LEDs_LENGTH               55
    
                                       ^
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:79:23: note: in expansion of macro 'LEDs_LENGTH'
         WS2812Serial LEDs(LEDs_LENGTH, displayMemory, drawingMemory, LEDs_PIN, WS2812_GRB);
                           ^
    constants.h:67: error: expected ',' or '...' before numeric constant
     #define LEDs_LENGTH               55
    
                                       ^
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:79:23: note: in expansion of macro 'LEDs_LENGTH'
         WS2812Serial LEDs(LEDs_LENGTH, displayMemory, drawingMemory, LEDs_PIN, WS2812_GRB);
                           ^
    constants.h:66: error: expected identifier before numeric constant
     #define MATRIX_LENGTH             128
    
                                       ^
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:80:29: note: in expansion of macro 'MATRIX_LENGTH'
         WS2812Serial LEDsMatrix(MATRIX_LENGTH, MatrixDisplayMemory, MatrixDrawingMemory, MATRIX_PIN, WS2812_GRB);
                                 ^
    constants.h:66: error: expected ',' or '...' before numeric constant
     #define MATRIX_LENGTH             128
    
                                       ^
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:80:29: note: in expansion of macro 'MATRIX_LENGTH'
         WS2812Serial LEDsMatrix(MATRIX_LENGTH, MatrixDisplayMemory, MatrixDrawingMemory, MATRIX_PIN, WS2812_GRB);
                                 ^
    Pił di una libreria trovata per "SerialFlash.h"
    Usata: /private/var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/AppTranslocation/C2927641-5891-4D07-8ACE-BF531A812B9D/d/Arduino.app/Contents/Java/hardware/teensy/avr/libraries/SerialFlash
    Pił di una libreria trovata per "Adafruit_GFX.h"
    Usata: /private/var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/AppTranslocation/C2927641-5891-4D07-8ACE-BF531A812B9D/d/Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Adafruit_GFX
    Pił di una libreria trovata per "Adafruit_SSD1306.h"
    Usata: /Users/Urbanspaceman/Documents/Arduino/Sketch/libraries/Adafruit_SSD1306
    Pił di una libreria trovata per "Encoder.h"
    Usata: /private/var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/AppTranslocation/C2927641-5891-4D07-8ACE-BF531A812B9D/d/Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Encoder
    Pił di una libreria trovata per "Scheduler.h"
    Usata: /Users/Urbanspaceman/Documents/Arduino/Sketch/libraries/Arduino-Scheduler-master
    Pił di una libreria trovata per "WS2812Serial.h"
    Usata: /private/var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/AppTranslocation/C2927641-5891-4D07-8ACE-BF531A812B9D/d/Arduino.app/Contents/Java/hardware/teensy/avr/libraries/WS2812Serial
    Non usata: /Users/Urbanspaceman/Documents/Arduino/Sketch/libraries/WS2812Serial-master
    Pił di una libreria trovata per "Audio.h"
    Usata: /private/var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/AppTranslocation/C2927641-5891-4D07-8ACE-BF531A812B9D/d/Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Audio
    Pił di una libreria trovata per "SPI.h"
    Usata: /private/var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/AppTranslocation/C2927641-5891-4D07-8ACE-BF531A812B9D/d/Arduino.app/Contents/Java/hardware/teensy/avr/libraries/SPI
    Pił di una libreria trovata per "SD.h"
    Usata: /private/var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/AppTranslocation/C2927641-5891-4D07-8ACE-BF531A812B9D/d/Arduino.app/Contents/Java/hardware/teensy/avr/libraries/SD
    Non usata: /private/var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/AppTranslocation/C2927641-5891-4D07-8ACE-BF531A812B9D/d/Arduino.app/Contents/Java/libraries/SD
    Pił di una libreria trovata per "Wire.h"
    Usata: /private/var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/AppTranslocation/C2927641-5891-4D07-8ACE-BF531A812B9D/d/Arduino.app/Contents/Java/hardware/teensy/avr/libraries/Wire
    Pił di una libreria trovata per "ArduinoJson.h"
    Usata: /Users/Urbanspaceman/Documents/Arduino/Sketch/libraries/ArduinoJson
    expected identifier before numeric constant
    
    Questo report potrebbe essere pił ricco di informazioni abilitando l'opzione
    "Mostra un output dettagliato durante la compilazione"
    in "File -> Impostazioni"

  13. #13
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    20,771
    Delete "DMAMEM".

    Or define those as static arrays *not* within the C++ class, because the storage for the class is defined elsewhere. You can't use DMAMEM inside the class this way.

  14. #14
    Senior Member
    Join Date
    Nov 2015
    Posts
    187
    Thank you Paul, sorry if I'm boring you but we still have a problem

    Code:
    In file included from /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/structures.h:14:0,
                     from /Users/Urbanspaceman/Documents/Arduino/shapeshifter/shapeshifter-wip 10/Firmware/shapeShifterV2/shapeShifterV2.ino:12:
    constants.h:67: error: expected identifier before numeric constant
     #define LEDs_LENGTH               55
                                       ^
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:79:23: note: in expansion of macro 'LEDs_LENGTH'
         WS2812Serial LEDs(LEDs_LENGTH, displayMemory, drawingMemory, LEDs_PIN, WS2812_GRB);
                           ^
    constants.h:67: error: expected ',' or '...' before numeric constant
     #define LEDs_LENGTH               55
                                       ^
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:79:23: note: in expansion of macro 'LEDs_LENGTH'
         WS2812Serial LEDs(LEDs_LENGTH, displayMemory, drawingMemory, LEDs_PIN, WS2812_GRB);
                           ^
    constants.h:66: error: expected identifier before numeric constant
     #define MATRIX_LENGTH             128
                                       ^
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:80:29: note: in expansion of macro 'MATRIX_LENGTH'
         WS2812Serial LEDsMatrix(MATRIX_LENGTH, MatrixDisplayMemory, MatrixDrawingMemory, MATRIX_PIN, WS2812_GRB);
                                 ^
    constants.h:66: error: expected ',' or '...' before numeric constant
     #define MATRIX_LENGTH             128
                                       ^
    /var/folders/_2/6t2b67t970qbzld8fhtybsqh0000gp/T/arduino_build_989962/sketch/src/LEDs/SSLEDs.h:80:29: note: in expansion of macro 'MATRIX_LENGTH'
         WS2812Serial LEDsMatrix(MATRIX_LENGTH, MatrixDisplayMemory, MatrixDrawingMemory, MATRIX_PIN, WS2812_GRB);
    ^

  15. #15
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    20,771
    Share the code which doesn't compile, the whole thing in a zip file. If using "quick reply", click the "go advanced" button. The advanced editor lets you attach a zip file to your message.

    Before you post, please check the zip file by extracting on another computer and load it with Arduino and click Verify. Make sure the zip file's contents really are everything needed to get the exact same error. If you give something incomplete that doesn't really reproduce the same error, that just wastes everyone time.

  16. #16
    Senior Member
    Join Date
    Nov 2015
    Posts
    187
    Thanks Paul, here is the file Firmware.zip
    the actual code is in the Shapeshifter2 folder

  17. #17
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    20,771
    Looks like you didn't follow my advice to copy to another computer and check that it really gives the same error. When I download it and try to compile, I get this:

    Code:
    /home/paul/teensy/sketch/shapeShifterV2/shapeShifterV2.ino:11:23: fatal error: Scheduler.h: No such file or directory
    compilation terminated.
    I will look again in ~12 hours, only 1 more time. Please make it count by truly verifying the file you provide has everything. Maybe others here on this forum will also try, but with me you have 1 more chance. If you upload another zip file missing stuff, that will be the last time I try to compile. I want to help you, but I'm not going to keep wasting time if you do not make the effort to upload a complete file and clearly specify everything I need to install... only to compile you code to help you fix an error!

    Or if other libs need to be installed, you must give clear info about everything needed. Leave nothing out.

  18. #18
    Senior Member
    Join Date
    Nov 2015
    Posts
    187
    Sorry Paul, also in the second computer we have the scheduler library and the same configuration so we didn't notice the lack of the library

    The sketch needs
    - The scheduler library (attached) Arduino-Scheduler-master.zip

    From the library manager
    - ArduinoJson.h (https://arduinojson.org/?utm_source=...ary.properties)

    - Encoder.h
    - SD.h
    - SPI.h
    - SerialFlash.h
    - Wire.h
    - Audio.h
    - WS2812Serial.h

    Usually only the scheduler and the arduinoJson are missing (in our setup)

    I'm sorry to waste your time but right now our developer is not available.
    I hope to have included all the information you need, I don't know how to include these libraries in the zip so that everything is included and ready to compile, I tried but without result.

    Thanks

  19. #19
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    20,771
    I looked at this again today. Looks like I still don't have the right ArduinoJson.h library, so it doesn't fully compile, but I was able to get the LED part figured out.

    The main problem you're facing is the syntax for creating the objects within SSLEDsClass.

    Replace this:

    Code:
        WS2812Serial LEDs(LEDs_LENGTH, displayMemory, drawingMemory, LEDs_PIN, WS2812_GRB);
        WS2812Serial LEDsMatrix(MATRIX_LENGTH, MatrixDisplayMemory, MatrixDrawingMemory, MATRIX_PIN, WS2812_GRB);
    With this:

    Code:
        WS2812Serial LEDs = WS2812Serial(LEDs_LENGTH, displayMemory, drawingMemory, LEDs_PIN, WS2812_GRB);
        WS2812Serial LEDsMatrix = WS2812Serial(MATRIX_LENGTH, MatrixDisplayMemory, MatrixDrawingMemory, MATRIX_PIN, WS2812_GRB);
    With this change, the class definition compiles, but then the LED code has tons of errors because WS2812Serial and Adafruit_NeoPixel have slightly different functions. I've added the Adafruit functions you need. The WS2812Serial.h file is attached, and also committed to github (so these will be in future Teensyduino releases).

    This still doesn't give you LEDs.setBrightness(). WS2812Serial doesn't have this feature and it's not something I can do quickly. For now, I recommend you comment out that part of your project and just go with full brightness until you get the sound and LEDs are playing together nicely.

    I'm not sure if this is really all the errors, since I'm missing the correct ArduinoJson, but hopefully it helps you get past this hurdle and move forward with fixing the sound problems?
    Attached Files Attached Files

  20. #20
    Senior Member
    Join Date
    Nov 2015
    Posts
    187
    Hi Paul!
    It'works!

    We have to cover the led, are too bright (my partner and I canceled our short-term memory by watching them :-) )
    Is not perfect but starts to look like a drum
    here is a short video made today, the drum sends a trig signal to the keystep that controls the neutron

    https://www.facebook.com/faselunarei...4376895208529/

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •