Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Possible Code Modifications for Adafruit_VS1053 Files #96

Open
Warren52 opened this issue Feb 17, 2024 · 0 comments
Open

Possible Code Modifications for Adafruit_VS1053 Files #96

Warren52 opened this issue Feb 17, 2024 · 0 comments

Comments

@Warren52
Copy link

  • Arduino board: Adafruit VS1053B (https://www.adafruit.com/product/1381)
  • Arduino IDE version: 1.8.19
  • Code modifications by whh - Feb 2024
  • I was looking for an audio board to work with an AVR128DB28 MCU running
  • under Spence Konde's DxCore (https://github.com/SpenceKonde/DxCore) with
  • IR Remote support via TinyIRReceiver (Arduino-IRremote) as the basis for
  • my next projects. I looked over the Adafruit VS1053B (product 1381), the
  • various documentation Adafruit provided, how to hook it up, evaluated my
  • MCU, etc., and chose to give it a try.
  • I ended up downloading the Adafruit_VS1053.h and .cpp files from github,
  • found I also needed the Adafruit_SPIDevice.h and .cpp files, put the files
  • into my local directory (and modified includes to access the local files,
  • and tried to get things working. EVENTUALLY - I starting hearing audio
  • out of an Adafruit 3.7W amp to a set of speakers. But I could never get
  • a full file to play.
  • I went through the VS1053 code to understand what was going on and put
  • debug prints here and there. I found the interrupts were happening quite
  • rapidly and feedBuffer_noLock could take 16 ms or more. But everything I
  • tried never allowed me to have audio and IR Remote working together. So
  • I chose a different approach.
  • I made an exec() function pattered after the interrupt handler that would
  • call a runBuffer() function pattered after feedBuffer_noLock. The exec()
  • function would be called in void loop() of an .ino sketch and defines in
  • Adafruit_VS1053.h file would separate interrupt code from exec code. I had
  • wanted to put the define just before the include in the .ino file but it
  • would not pass through and be recognized in the Adafruit_VS1053.h header.
  • So long story short, using the exec() function, I can play mp3 audio files
  • from the SD Card while at the same time processing IR Remote signals via
  • IRRemote TinyIRReceiver. I can start a specific audio file (e.g. buttons
  • 1 thru 9), change the volume up or down, mute or unmute the volume, or
  • stop playing WITHOUT any interruption or degradation in playback. All
  • while only clocking my MCU at 8 MHz. (Oh yea, I also have a fair amount
  • of debug content being output while all of this is going on!)
  • I have gone back and tried the interrupt method but even with setting
  • the MCU clock to the highest frequency of 24 MHz, it will not finish
  • playing a mp3 file. I even changed the attachInterrupt parameter from
  • CHANGE to RISING. The only way I can get all I want running to run is
  • to use the exec() function.
  • Ok, so what am I doing. I am giving back to Adafruit. Comments have
  • been added to the Adafruit_VS1053.h and .cpp files I have been working
  • on. I have also tried to put my initials (e.g. whh) where I have made
  • changes. I hope I can zip these files up and submit them to github so
  • you can look them over and choose to do what you would like to with
  • the code. Maybe one day there is a new code version with instructions
  • of how to use either interrupts or the exec() function. Worst go to
  • worst, I now have working code for me. Now as soon as more VS1053
  • boards become available, I will be able to use them.
  • Warren H. Holt (whh) - 17feb2024

Adafruit_VS1053_Mods_Feb_2024.zip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant