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

Flexible Audio Data Source using a Vector of (file) names with minimal RAM usage. Files are stored with separated path index and name to minimize memory consumption. Identical paths are stored only once in a shared path registry. This class is a template to support multiple SD libraries and other Streams. More...

#include <AudioSource.h>

Inheritance diagram for AudioSourceVector< FileType >:
AudioSource PathNamesRegistry

Public Types

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

Public Member Functions

 AudioSourceVector (FileToStreamCallback callback)
 Constructor with callback for file to stream conversion.
 
void addName (const char *nameWithPath) override
 Add a file with full path (path and name will be separated automatically)
 
template<typename T , size_t N>
void addNames (T(&nameArray)[N])
 Add multiple files at once.
 
virtual void begin () override
 Reset actual stream and move to root.
 
void clear ()
 Clear all files and path registry.
 
bool deleteIndex (size_t idx)
 Remove a file by index.
 
bool deleteName (const char *nameWithPath)
 Remove a file by full path.
 
FileType & getCurrentFile ()
 Get the current file reference for use in callback.
 
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 ()
 Check if empty.
 
const char * name (int index)
 provides the name at the given index
 
virtual FileType * nextStream (int offset) override
 Returns next audio stream.
 
Streamoperator[] (int idx)
 access with array syntax
 
virtual StreampreviousStream (int offset)
 Returns previous audio stream.
 
virtual FileType * selectStream (const char *path) override
 Returns audio stream by path.
 
virtual FileType * selectStream (int index) override
 Returns audio stream at the indicated index.
 
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 ()
 Get the number of files.
 
virtual int timeoutAutoNext ()
 Provides the timeout which is triggering to move to the next stream.
 
virtual const char * toStr () override
 provides the actual stream (e.g. file) name or url
 

Protected Member Functions

int findOrAddPath (const char *path)
 Find existing path in registry or add new one, returns index.
 
FileEntrygetFileEntry (int index) const
 Get file entry at index.
 
Str getFullPath (int index)
 Get full path of file at index.
 
const char * getPath (int pathIndex)
 Get path from registry at index.
 

Protected Attributes

int current_index = 0
 
Str current_path
 
FileType * current_stream = nullptr
 
Vector< FileEntryfiles
 
FileToStreamCallback nameToStreamCallback = nullptr
 
Vector< Strpath_registry
 
int timeout_auto_next_value = 500
 

Detailed Description

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

Flexible Audio Data Source using a Vector of (file) names with minimal RAM usage. Files are stored with separated path index and name to minimize memory consumption. Identical paths are stored only once in a shared path registry. 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 Function Documentation

◆ addName()

template<typename FileType >
void addName ( const char *  nameWithPath)
inlineoverridevirtual

Add a file with full path (path and name will be separated automatically)

Implements PathNamesRegistry.

◆ begin()

template<typename FileType >
virtual void begin ( )
inlineoverridevirtual

Reset actual stream and move to root.

Implements AudioSource.

◆ index()

template<typename FileType >
virtual int index ( )
inlineoverridevirtual

Returns the actual index of the stream.

Reimplemented from AudioSource.

◆ isAutoNext()

virtual bool isAutoNext ( )
inlinevirtualinherited

◆ nextStream()

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

Returns next audio stream.

Implements AudioSource.

◆ 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.

◆ 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

◆ toStr()

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

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

Reimplemented from AudioSource.


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