update to 1.9.7
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
#include <Arduino.h>
|
||||
#ifdef ESP32
|
||||
|
||||
#if defined(ARDUINO_ARCH_RP2040)
|
||||
#define WIFI_OFF
|
||||
class __x { public: __x() {}; void mode() {}; };
|
||||
__x WiFi;
|
||||
#elif defined(ESP32)
|
||||
#include <WiFi.h>
|
||||
#else
|
||||
#include <ESP8266WiFi.h>
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
#include <Arduino.h>
|
||||
#ifdef ARDUINO_ARCH_RP2040
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
#else
|
||||
#include "AudioFileSourceSD.h"
|
||||
#include "AudioOutputSPDIF.h"
|
||||
#include "AudioGeneratorFLAC.h"
|
||||
@@ -8,7 +12,7 @@
|
||||
// Espressif Audio Development Framework at:
|
||||
// https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/audio-samples.html
|
||||
//
|
||||
// On ESP8266 you might need to reencode FLAC files with max '-2' compression level
|
||||
// On ESP8266 you might need to re-encode FLAC files with max '-2' compression level
|
||||
// (i.e. 1152 maximum block size) or you will run out of memory. FLAC files will be
|
||||
// slightly bigger but you don't loose audio quality with reencoding (lossles codec).
|
||||
|
||||
@@ -61,8 +65,10 @@ void loop() {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Serial.println(F("Playback form SD card done\n"));
|
||||
Serial.println(F("Playback from SD card done\n"));
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -6,7 +6,13 @@
|
||||
}
|
||||
void loop() {}
|
||||
#else
|
||||
#include <ESP8266WiFi.h>
|
||||
#if defined(ARDUINO_ARCH_RP2040)
|
||||
#define WIFI_OFF
|
||||
class __x { public: __x() {}; void mode() {}; };
|
||||
__x WiFi;
|
||||
#else
|
||||
#include <ESP8266WiFi.h>
|
||||
#endif
|
||||
#include <AudioOutputI2S.h>
|
||||
#include <AudioGeneratorMIDI.h>
|
||||
#include <AudioFileSourceLittleFS.h>
|
||||
@@ -42,7 +48,6 @@ void loop()
|
||||
{
|
||||
if (midi->isRunning()) {
|
||||
if (!midi->loop()) {
|
||||
uint32_t e = millis();
|
||||
midi->stop();
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
#include <Arduino.h>
|
||||
|
||||
// Do not build on GCC8, GCC8 has a compiler bug
|
||||
|
||||
#if defined(ARDUINO_ARCH_RP2040) || (__GNUC__ == 8)
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
#else
|
||||
#ifdef ESP32
|
||||
#include <WiFi.h>
|
||||
#include "SPIFFS.h"
|
||||
@@ -25,6 +32,7 @@ void setup()
|
||||
WiFi.mode(WIFI_OFF);
|
||||
|
||||
Serial.begin(115200);
|
||||
SPIFFS.begin();
|
||||
Serial.println("Starting up...\n");
|
||||
|
||||
audioLogger = &Serial;
|
||||
@@ -43,7 +51,6 @@ void loop()
|
||||
{
|
||||
if (midi->isRunning()) {
|
||||
if (!midi->loop()) {
|
||||
uint32_t e = millis();
|
||||
midi->stop();
|
||||
}
|
||||
} else {
|
||||
@@ -52,4 +59,4 @@ void loop()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
#include "AudioFileSourcePROGMEM.h"
|
||||
#include "AudioGeneratorMOD.h"
|
||||
#include "AudioOutputI2S.h"
|
||||
#ifdef ESP32
|
||||
#if defined(ARDUINO_ARCH_RP2040)
|
||||
#define WIFI_OFF
|
||||
class __x { public: __x() {}; void mode() {}; };
|
||||
__x WiFi;
|
||||
#elif defined(ESP32)
|
||||
#include <WiFi.h>
|
||||
#else
|
||||
#include <ESP8266WiFi.h>
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
#include <Arduino.h>
|
||||
#if defined(ARDUINO_ARCH_RP2040)
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
#else
|
||||
|
||||
#ifdef ESP32
|
||||
#include <WiFi.h>
|
||||
#include "SPIFFS.h"
|
||||
@@ -70,3 +75,4 @@ void loop()
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
#include <Arduino.h>
|
||||
#ifdef ARDUINO_ARCH_RP2040
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
#else
|
||||
#ifdef ESP32
|
||||
#include "SPIFFS.h"
|
||||
#endif
|
||||
@@ -97,3 +101,4 @@ void loop()
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
#include <Arduino.h>
|
||||
#ifdef ARDUINO_ARCH_RP2040
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
#else
|
||||
#ifdef ESP32
|
||||
#include <WiFi.h>
|
||||
#include "SPIFFS.h"
|
||||
@@ -39,3 +43,5 @@ void loop()
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -44,7 +44,7 @@ void setup() {
|
||||
// param : float (current time [sec] of the song)
|
||||
// return : float (the amplitude of sound which varies from -1.f to +1.f)
|
||||
//
|
||||
// sound function can be registerd only one or the same number with channels
|
||||
// sound function can be registered only one or the same number with channels
|
||||
// if the channels > 1 && the number of function == 1,
|
||||
// same function are used to generate the sound in every channel
|
||||
//
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
#include <Arduino.h>
|
||||
|
||||
#ifdef ESP32
|
||||
#if defined(ARDUINO_ARCH_RP2040)
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
|
||||
#else
|
||||
#if defined(ESP32)
|
||||
#include <WiFi.h>
|
||||
#else
|
||||
#include <ESP8266WiFi.h>
|
||||
@@ -104,4 +109,4 @@ void loop()
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
148
examples/StreamMP3FromHTTPToSPDIF/StreamMP3FromHTTPToSPDIF.ino
Normal file
148
examples/StreamMP3FromHTTPToSPDIF/StreamMP3FromHTTPToSPDIF.ino
Normal file
@@ -0,0 +1,148 @@
|
||||
#include <Arduino.h>
|
||||
#ifdef ARDUINO_ARCH_RP2040
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
#else
|
||||
|
||||
#if defined(ESP32)
|
||||
#include <WiFi.h>
|
||||
#else
|
||||
#include <ESP8266WiFi.h>
|
||||
#endif
|
||||
#include "AudioFileSourceICYStream.h"
|
||||
#include "AudioFileSourceBuffer.h"
|
||||
#include "AudioGeneratorMP3.h"
|
||||
//#include "AudioOutputI2SNoDAC.h"
|
||||
#include "AudioOutputSPDIF.h"
|
||||
|
||||
//
|
||||
// Stream MP3 from HTTP to SPDIF
|
||||
//
|
||||
|
||||
// To run, set your ESP8266 build to 160MHz, update the SSID info, and upload.
|
||||
|
||||
// Note:
|
||||
// If using ESP8266 NodeMCU connect LED to RX pin and GND pin
|
||||
|
||||
// Enter your WiFi setup here:
|
||||
#ifndef STASSID
|
||||
#define STASSID "your-ssid"
|
||||
#define STAPSK "your-password"
|
||||
#endif
|
||||
|
||||
const char* ssid = STASSID;
|
||||
const char* password = STAPSK;
|
||||
|
||||
// Examples URLs
|
||||
//const char *URL="http://kvbstreams.dyndns.org:8000/wkvi-am";
|
||||
|
||||
// Italian Rock Radio
|
||||
const char *URL="http://streamingv2.shoutcast.com/radiofreccia";
|
||||
|
||||
// Stream URL of Logitech Media Server, aka LMS, Version: 8.2.0 (August 2021)
|
||||
// const char *URL="http://192.168.1.121:9000/stream.mp3";
|
||||
|
||||
AudioGeneratorMP3 *mp3;
|
||||
AudioFileSourceICYStream *file;
|
||||
AudioFileSourceBuffer *buff;
|
||||
|
||||
// Output device is SPDIF
|
||||
AudioOutputSPDIF *out;
|
||||
|
||||
|
||||
// Called when a metadata event occurs (i.e. an ID3 tag, an ICY block, etc.
|
||||
void MDCallback(void *cbData, const char *type, bool isUnicode, const char *string)
|
||||
{
|
||||
const char *ptr = reinterpret_cast<const char *>(cbData);
|
||||
(void) isUnicode; // Punt this ball for now
|
||||
// Note that the type and string may be in PROGMEM, so copy them to RAM for printf
|
||||
char s1[32], s2[64];
|
||||
strncpy_P(s1, type, sizeof(s1));
|
||||
s1[sizeof(s1)-1]=0;
|
||||
strncpy_P(s2, string, sizeof(s2));
|
||||
s2[sizeof(s2)-1]=0;
|
||||
Serial.printf("METADATA(%s) '%s' = '%s'\n", ptr, s1, s2);
|
||||
Serial.flush();
|
||||
}
|
||||
|
||||
// Called when there's a warning or error (like a buffer underflow or decode hiccup)
|
||||
void StatusCallback(void *cbData, int code, const char *string)
|
||||
{
|
||||
const char *ptr = reinterpret_cast<const char *>(cbData);
|
||||
// Note that the string may be in PROGMEM, so copy it to RAM for printf
|
||||
char s1[64];
|
||||
strncpy_P(s1, string, sizeof(s1));
|
||||
s1[sizeof(s1)-1]=0;
|
||||
Serial.printf("STATUS(%s) '%d' = '%s'\n", ptr, code, s1);
|
||||
Serial.flush();
|
||||
}
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
delay(1000);
|
||||
Serial.println("Connecting to WiFi");
|
||||
|
||||
WiFi.disconnect();
|
||||
WiFi.softAPdisconnect(true);
|
||||
WiFi.mode(WIFI_STA);
|
||||
|
||||
WiFi.begin(ssid, password);
|
||||
|
||||
// Try forever
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
Serial.println("...Connecting to WiFi");
|
||||
delay(1000);
|
||||
}
|
||||
Serial.println("Connected");
|
||||
|
||||
audioLogger = &Serial;
|
||||
file = new AudioFileSourceICYStream(URL);
|
||||
|
||||
// Commented out for performance issues with high rate MP3 stream
|
||||
//file->RegisterMetadataCB(MDCallback, (void*)"ICY");
|
||||
|
||||
buff = new AudioFileSourceBuffer(file, 4096); // Doubled form default 2048
|
||||
|
||||
// Commented out for performance issues with high rate MP3 stream
|
||||
//buff->RegisterStatusCB(StatusCallback, (void*)"buffer");
|
||||
|
||||
// Set SPDIF output
|
||||
out = new AudioOutputSPDIF();
|
||||
mp3 = new AudioGeneratorMP3();
|
||||
|
||||
// Commented out for performance issues with high rate MP3 stream
|
||||
//mp3->RegisterStatusCB(StatusCallback, (void*)"mp3");
|
||||
|
||||
mp3->begin(buff, out);
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
// Commented out
|
||||
//static int lastms = 0;
|
||||
|
||||
if (mp3->isRunning()) {
|
||||
/* Commented out
|
||||
if (millis()-lastms > 1000) {
|
||||
lastms = millis();
|
||||
Serial.printf("Running for %d ms...\n", lastms);
|
||||
Serial.flush();
|
||||
}
|
||||
*/
|
||||
if (!mp3->loop()) {
|
||||
mp3->stop();
|
||||
}
|
||||
} else {
|
||||
Serial.printf("MP3 done\n");
|
||||
|
||||
// Restart ESP when streaming is done or errored
|
||||
delay(10000);
|
||||
|
||||
ESP.restart();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -1,5 +1,9 @@
|
||||
#include <Arduino.h>
|
||||
#ifdef ESP32
|
||||
#if defined(ARDUINO_ARCH_RP2040)
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
#else
|
||||
#if defined(ESP32)
|
||||
#include <WiFi.h>
|
||||
#else
|
||||
#include <ESP8266WiFi.h>
|
||||
@@ -101,4 +105,4 @@ void loop()
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -30,6 +30,7 @@ class AudioOutputNullSlow : public AudioOutput
|
||||
~AudioOutputNullSlow() {};
|
||||
virtual bool begin() { samples = 0; startms = millis(); return true; }
|
||||
virtual bool ConsumeSample(int16_t sample[2]) {
|
||||
(void) sample;
|
||||
// return false (= output buffer full)
|
||||
// sometimes to let the main loop running
|
||||
constexpr int everylog2 = 10;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
#include <Arduino.h>
|
||||
|
||||
#ifdef ESP32
|
||||
#if defined(ARDUINO_ARCH_RP2040)
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
#else
|
||||
#if defined(ESP32)
|
||||
#include <WiFi.h>
|
||||
#else
|
||||
#include <ESP8266WiFi.h>
|
||||
@@ -9,10 +13,10 @@
|
||||
#include "AudioFileSourceBuffer.h"
|
||||
#include "AudioGeneratorMP3.h"
|
||||
#if AUDIO
|
||||
#pragma message("Outputting audio")
|
||||
// #pragma message("Outputting audio")
|
||||
#include "AudioOutputLinuxDSP.h"
|
||||
#else
|
||||
#pragma message("No audio")
|
||||
// #pragma message("No audio")
|
||||
#include "AudioOutputNullSlow.h"
|
||||
#endif
|
||||
|
||||
@@ -115,4 +119,4 @@ void loop()
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,7 +2,14 @@
|
||||
// https://github.com/going-digital/Talkie/blob/master/Talkie/examples/Vocab_US_Clock/Vocab_US_Clock.ino
|
||||
// Released under GPL v2
|
||||
|
||||
#ifdef ESP32
|
||||
#include <Arduino.h>
|
||||
|
||||
#if defined(ARDUINO_ARCH_RP2040)
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
#else
|
||||
|
||||
#if defined(ESP32)
|
||||
#include <WiFi.h>
|
||||
#else
|
||||
#include <ESP8266WiFi.h>
|
||||
@@ -183,3 +190,4 @@ void loop()
|
||||
sayTime(tmstruct.tm_hour, tmstruct.tm_min, talkie);
|
||||
delay(1000);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -19,7 +19,15 @@
|
||||
*/
|
||||
|
||||
#include <Arduino.h>
|
||||
#ifdef ESP32
|
||||
#if defined(ARDUINO_ARCH_RP2040)
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
#else
|
||||
|
||||
// ESP8266 server.available() is now server.accept()
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
#if defined(ESP32)
|
||||
#include <WiFi.h>
|
||||
#else
|
||||
#include <ESP8266WiFi.h>
|
||||
@@ -439,3 +447,4 @@ void loop()
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
*/
|
||||
|
||||
#include <Arduino.h>
|
||||
#if defined(ARDUINO_ARCH_RP2040)
|
||||
// Nothing here
|
||||
#else
|
||||
#ifdef ESP32
|
||||
#include <WiFi.h>
|
||||
#else
|
||||
@@ -308,7 +311,4 @@ void Read4Int(char *str, byte *p)
|
||||
str += ParseInt(str, &i); p[2] = i; if (*str) str++;
|
||||
str += ParseInt(str, &i); p[3] = i;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user