Skip to content

Releases: pschatzmann/ESP32-A2DP

May 2024 Release

14 May 06:02
Compare
Choose a tag to compare

New Functionality

  • Continue to provide Legacy examples
  • A2DPSource: support of volume buttons on Bluetooth speakers
  • A2DPSink: added avrc_rn_play_pos_callback method (thanks to zyphlar)

Error Corrections

  • Corrections to SimpleExponentialVolumeControl and LinearVolumeControl
  • Make sure that I2S is not used when it has been deactivated (is_output is set to false)

Output classes

10 Apr 09:57
Compare
Choose a tag to compare
  • Redesign output and move functionality to separate classes
  • 32bit example

Use AudioTools as Output Library

06 Apr 21:11
478aca9
Compare
Choose a tag to compare

Espressif is retiring the legacy I2S API: So with Arduino 3.0.0 my old I2S integration will not be available any more.

In order to support a unique output API which is version independent, it is recommended to install and use the AudioTools library.

The library, documentation and examples have been updated. To prevent issues in the new ESP32 release, I suggest that you start to use the new functionality.

Further information can be found here

Some minor error corrections

06 Apr 16:45
Compare
Choose a tag to compare
  • Cleanup config.h and version checks
  • Example for AudioKit
  • Support interoperability with BLE with example
  • Corrected compile error for Arduino ESP 1.0.6
  • Corrected inconsistencies in the reporting of isConnected()
  • define set_scan_mode_connectable_default as abstract
  • bt_music_receiver_datacallback.ino remove time limit
  • Support for Arduino 3.0.0: Use AudioTools for I2S
  • Cleanup version checks using ESP_IDF_VERSION
  • Obsolete i2s_mclk_pin_select() in ESP 5.1.1

Error corrections / new IDF 5 events

23 Sep 17:00
Compare
Choose a tag to compare
  • Activate SPP (Serial protocol) only on request
  • Fix set_volume being pure on A2DPNoVolumeControl; Added missing overrides
  • Prefer get_peer_name() over get_connected_source_name() for A2DPSink
  • Correct bug in set_local_name() for A2DPSource
  • Correct compile error in bt_music_sender_disconnect.ino example
  • Provide get_name() to both A2DPSink and A2DPSource
  • Added Serial.begin() to bt_music_sender_disconnect.ino example
  • New BluetoothA2DPSource example: status callback
  • BluetoothA2DPSource add lost process_user_state_callbacks
  • BluetoothA2DPSource: Unhandled events change from from Error to Warning
  • Provide compile option A2DP_I2S_SUPPORT to deactivate I2S
  • Prefer get_peer_name() over get_connected_source_name()
  • Adding option to specify device name with set_local_name()
  • Support for new IDF 5 events
  • Prevent compile error for ESP_BT_GAP_ACL_CONN_CMPL_STAT_EVT before idf 4.4.4
  • Changed the default setting, so that there is not automatic reconnect!

New Functionality & Error Corrections

22 May 13:22
Compare
Choose a tag to compare

I haven't published a new release for quite some time.

Here is the content:

  • New raw_stream_reader callback to provide data before volume is applied. Thanks to ArthurKoba
  • Remove warnings, fix failing examples, Github Action to auto compile. Thanks to designer2k2
  • Task Shutdown on Sink::end(). Thanks to rbuehlma
  • New set_ssid_callback() method to select unknown ssid dynamically
  • Added missing #pragma once guards to BluetoothA2DPSinkQueued.h
  • (Re)Added support for obsolete Channels, so that old examples copied from the Web still compile
  • prevent i2s_write if i2s was not started
  • Support for include "I2S.h"
  • Create compile error for S3
  • Move set_event_queue_size (int size) and set_event_stack_size (int size) to common; increase values for source
  • Class Documentation using modules

BluetoothA2DPSinkQueued and more Callbacks

29 Nov 00:58
Compare
Choose a tag to compare
  • Provide BluetoothA2DPSinkQueued class which uses an additional Queue between A2DP and I2S
  • Redesign reconnect logic to prevent an automatic reconnect after a disconnect has been requested via the API or from the remote system
  • increased volume for bt_music_receiver_32bit_ext example
  • Added support for a post I2S init callback (thanks to adam-puleo)

I2S output in separate task with ringbuffer & new functionality

24 Jun 14:27
Compare
Choose a tag to compare
  • I2S output in separate task with ringbuffer: Thanks to mitchjs
  • Support to determine RSSI with example: set_rssi_active(), set_rssi_callback(), get_last_rssi()
  • Provide new method get_avrc_peer_rn_cap_bits()
  • Correct esp-idf version check: Thanks to cfint
  • Fixed Bluetooth Source pairing so it works with more devices: Thanks to Rob Shockency
  • Added fast_forward and rewind commands: Thanks to Clark Bremer
  • Cache volume factor: Thanks to cfint

New methods and Error Corrections

29 Mar 09:30
Compare
Choose a tag to compare
  • Renamed CURRENT_ESP_IDF to ESP_IDF_4
  • Added not supported compile errors for ESP32C3 and ESP32S2
  • Resolved BluetoothA2DPSource connection issues to some devices (thanks to Rob Shockency)
  • new AVRC methods: fast_forward() and rewind() (thanks to Clark Bremer)
  • Add missing SRC for idf (thanks to Anis Jonischkeit)
  • corrected some missing connection_state callbacks (thanks to Geert Roumen)
  • Issue error to log when esp_avrc_tg_set_rn_evt_cap fails
  • Enable easy detection of failed authentication (thanks to hogthrob)
  • additional parameters for set_auto_reconnect method to better control the auto reconnect: void set_auto_reconnect(bool reconnect, bool afterNormalDisconnect=false, int count=AUTOCONNECT_TRY_NUM ).
  • use different last_bda names for source and sink
  • provided get_connected_source_name() method thanks to Clark Bremer
  • added set_volume to bt_music_sender_write example
  • new class OneChannel8BitSoundData with bt_music_sender_write_8bit example
  • new method set_swap_lr_channels() to swap left and right channels
  • example for status callbacks: bt_music_receiver_status_callback.ino
  • Removed DEPRECATED methods: isConnected, set_on_connected2BT, set_on_dis_connected2BT

Enhanced A2DP Source & Volume Control & Error Corrections Latest

27 Oct 22:38
Compare
Choose a tag to compare
  • Additional functionality in A2DPSource (thanks to limneos for helping with the testing)
    • set_auto_reconnect (bool active)
    • set_auto_reconnect (esp_bd_addr_t addr)
    • set_volume (uint8_t volume)
    • get_volume()
    • set_on_connection_state_changed (void(*callBack)(esp_a2d_connection_state_t state))
    • set_on_audio_state_changed (void(*callBack)(esp_a2d_audio_state_t state))
    • get_audio_state ()
    • get_connection_state ()
  • set_on_connected2BT set_on_dis_connected2BT are obsolete! Please use set_on_audio_state_changed()
  • Improved volume control (thanks to elehobica)
  • Improved 32 bit hifi example (thanks to elehobica)
  • Provided the abstract VolumeControl class with alternative subclass implementations
  • added debounce() method to handle button input
  • confirm_pin_code() was broken. It's working again and we provide an example
  • Provide the set_avrc_metadata_attribute_mask() method to fine tune the meta_data
  • Callbacks for audio state and connection state changes
  • The Channels structure has been renamed to Frame to better describe it's content