arduino-audio-tools
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Attributes | List of all members
AudioSourceArray< FileType > Class Template Reference

Audio Data Source managing a static array of file names (const char*). Designed for PROGMEM storage on Arduino platforms with static file lists. This class is a template to support multiple SD libraries and other Streams. More...

#include <AudioSource.h>

Inheritance diagram for AudioSourceArray< FileType >:
AudioSource

Public Types

typedef FileType *(* FileToStreamCallback) (const char *path, FileType &file)
 

Public Member Functions

 AudioSourceArray ()=default
 
template<size_t N>
 AudioSourceArray (const char *(&nameArray)[N], FileToStreamCallback callback)
 Constructor with array and callback.
 
 AudioSourceArray (const char *const *nameArray, size_t size, FileToStreamCallback callback)
 Constructor with array pointer, size and callback.
 
virtual bool begin () override
 Reset actual stream and move to root.
 
FileTypegetCurrentFile ()
 
const chargetFilePath (int index) const
 Get file path at index.
 
virtual int index () override
 Returns the actual index of the stream.
 
int indexOf (const char *path)
 Find index of file by path.
 
virtual bool isAutoNext ()
 Returns default setting go to the next.
 
bool isEmpty () const
 Check if empty.
 
const charname (int index)
 provides the name at the given index
 
virtual FileTypenextStream (int offset) override
 Returns next audio stream.
 
Streamoperator[] (int idx)
 access with array syntax
 
virtual StreampreviousStream (int offset)
 Returns previous audio stream.
 
virtual FileTypeselectStream (const char *path) override
 Returns audio stream by path.
 
virtual FileTypeselectStream (int index) override
 Returns audio stream at the indicated index.
 
template<size_t N>
void setArray (const char *(&nameArray)[N])
 Set the array of file names.
 
void setArray (const char *const *nameArray, size_t size)
 Set the array with pointer and size.
 
virtual void setAutoNext (bool flag)
 
virtual StreamsetIndex (int index)
 same as selectStream - I just prefer this name
 
virtual bool setMetadataCallback (void(*fn)(MetaDataType info, const char *str, int len), ID3TypeSelection sel=SELECT_ICY)
 
void setNameToStreamCallback (FileToStreamCallback callback)
 Set the callback for converting file path to stream.
 
virtual void setTimeout (int millisec)
 Sets the timeout of Stream in milliseconds.
 
virtual void setTimeoutAutoNext (int millisec)
 
int size () const
 Get the number of files.
 
virtual int timeoutAutoNext ()
 Provides the timeout which is triggering to move to the next stream.
 
virtual const chartoStr () override
 provides the actual stream (e.g. file) name or url
 

Protected Attributes

size_t array_size = 0
 
int current_index = 0
 
FileTypecurrent_stream = nullptr
 
const char *constfile_array = nullptr
 
bool is_auto_next = true
 
FileToStreamCallback nameToStreamCallback = nullptr
 
int timeout_auto_next_value = 500
 

Detailed Description

template<typename FileType>
class audio_tools::AudioSourceArray< FileType >

Audio Data Source managing a static array of file names (const char*). Designed for PROGMEM storage on Arduino platforms with static file lists. This class is a template to support multiple SD libraries and other Streams.

Note
A mandatory callback function must be provided to convert a file path (and optionally an old file instance) into a stream or file object. This callback is set via the constructor or setNameToStreamCallback().

Example callback signature: FileType* callback(const char* path, FileType& oldFile);

Without this callback, the class cannot open or access files for playback. Also don't forget to close the old file to prevent any memory leaks.

Author
Phil Schatzmann

Member Typedef Documentation

◆ FileToStreamCallback

template<typename FileType >
typedef FileType *(* FileToStreamCallback) (const char *path, FileType &file)

Constructor & Destructor Documentation

◆ AudioSourceArray() [1/3]

template<typename FileType >
AudioSourceArray ( )
default

◆ AudioSourceArray() [2/3]

template<typename FileType >
template<size_t N>
AudioSourceArray ( const char *(&)  nameArray[N],
FileToStreamCallback  callback 
)
inline

Constructor with array and callback.

◆ AudioSourceArray() [3/3]

template<typename FileType >
AudioSourceArray ( const char *const nameArray,
size_t  size,
FileToStreamCallback  callback 
)
inline

Constructor with array pointer, size and callback.

Member Function Documentation

◆ begin()

template<typename FileType >
virtual bool begin ( )
inlineoverridevirtual

Reset actual stream and move to root.

Implements AudioSource.

◆ getCurrentFile()

template<typename FileType >
FileType & getCurrentFile ( )
inline

◆ getFilePath()

template<typename FileType >
const char * getFilePath ( int  index) const
inline

Get file path at index.

◆ index()

template<typename FileType >
virtual int index ( )
inlineoverridevirtual

Returns the actual index of the stream.

Reimplemented from AudioSource.

◆ indexOf()

template<typename FileType >
int indexOf ( const char path)
inline

Find index of file by path.

◆ isAutoNext()

virtual bool isAutoNext ( )
inlinevirtualinherited

◆ isEmpty()

template<typename FileType >
bool isEmpty ( ) const
inline

Check if empty.

◆ name()

template<typename FileType >
const char * name ( int  index)
inline

provides the name at the given index

◆ nextStream()

template<typename FileType >
virtual FileType * nextStream ( int  offset)
inlineoverridevirtual

Returns next audio stream.

Implements AudioSource.

◆ operator[]()

Stream * operator[] ( int  idx)
inlineinherited

access with array syntax

◆ previousStream()

virtual Stream * previousStream ( int  offset)
inlinevirtualinherited

Returns previous audio stream.

Reimplemented in AudioSourceFTP< ClientType >, and AudioSourceURL.

◆ selectStream() [1/2]

template<typename FileType >
virtual FileType * selectStream ( const char path)
inlineoverridevirtual

Returns audio stream by path.

Implements AudioSource.

◆ selectStream() [2/2]

template<typename FileType >
virtual FileType * selectStream ( int  index)
inlineoverridevirtual

Returns audio stream at the indicated index.

Reimplemented from AudioSource.

◆ setArray() [1/2]

template<typename FileType >
template<size_t N>
void setArray ( const char *(&)  nameArray[N])
inline

Set the array of file names.

◆ setArray() [2/2]

template<typename FileType >
void setArray ( const char *const nameArray,
size_t  size 
)
inline

Set the array with pointer and size.

◆ setAutoNext()

virtual void setAutoNext ( bool  flag)
inlinevirtualinherited

Reimplemented in AudioSourceCallback.

◆ setIndex()

virtual Stream * setIndex ( int  index)
inlinevirtualinherited

same as selectStream - I just prefer this name

◆ setMetadataCallback()

virtual bool setMetadataCallback ( void(*)(MetaDataType info, const char *str, int len)  fn,
ID3TypeSelection  sel = SELECT_ICY 
)
inlinevirtualinherited

Reimplemented in AudioSourceURL.

◆ setNameToStreamCallback()

template<typename FileType >
void setNameToStreamCallback ( FileToStreamCallback  callback)
inline

Set the callback for converting file path to stream.

◆ setTimeout()

virtual void setTimeout ( int  millisec)
inlinevirtualinherited

Sets the timeout of Stream in milliseconds.

Reimplemented in AudioSourceURL, and AudioSourceSDFAT< AudioFs, AudioFile >.

◆ setTimeoutAutoNext()

virtual void setTimeoutAutoNext ( int  millisec)
inlinevirtualinherited

Sets the timeout which is triggering to move to the next stream. - the default value is 500 ms

◆ size()

template<typename FileType >
int size ( ) const
inline

Get the number of files.

◆ timeoutAutoNext()

virtual int timeoutAutoNext ( )
inlinevirtualinherited

Provides the timeout which is triggering to move to the next stream.

◆ toStr()

template<typename FileType >
virtual const char * toStr ( )
inlineoverridevirtual

provides the actual stream (e.g. file) name or url

Reimplemented from AudioSource.

Member Data Documentation

◆ array_size

template<typename FileType >
size_t array_size = 0
protected

◆ current_index

template<typename FileType >
int current_index = 0
protected

◆ current_stream

template<typename FileType >
FileType* current_stream = nullptr
protected

◆ file_array

template<typename FileType >
const char* const* file_array = nullptr
protected

◆ is_auto_next

bool is_auto_next = true
protectedinherited

◆ nameToStreamCallback

template<typename FileType >
FileToStreamCallback nameToStreamCallback = nullptr
protected

◆ timeout_auto_next_value

int timeout_auto_next_value = 500
protectedinherited

The documentation for this class was generated from the following file: