8f46e03070
Main / Build (BookPlayer) (push) Has been cancelled
Main / Build (Brainfuck) (push) Has been cancelled
Main / Build (Breakout) (push) Has been cancelled
Main / Build (Calculator) (push) Has been cancelled
Main / Build (Diceware) (push) Has been cancelled
Main / Build (EpubReader) (push) Has been cancelled
Main / Build (GPIO) (push) Has been cancelled
Main / Build (GraphicsDemo) (push) Has been cancelled
Main / Build (HelloWorld) (push) Has been cancelled
Main / Build (M5UnitTest) (push) Has been cancelled
Main / Build (Magic8Ball) (push) Has been cancelled
Main / Build (MediaKeys) (push) Has been cancelled
Main / Build (MystifyDemo) (push) Has been cancelled
Main / Build (SerialConsole) (push) Has been cancelled
Main / Build (Snake) (push) Has been cancelled
Main / Build (TamaTac) (push) Has been cancelled
Main / Build (TodoList) (push) Has been cancelled
Main / Build (TwoEleven) (push) Has been cancelled
Main / Bundle (push) Has been cancelled
- Mp3Player: sdk 0.7->0.8.0-dev, find audio-stream device, open_output with resampler (hz/ch), write via audio_stream_write, close on pause - BookPlayer: close/open per format change via AudioStreamConfig, write via stream - VoiceRecorder: input_handle open_input 16k/mono via audio_stream_read, output_handle open_output file rate via write/resampler - ES8311 native 44100, old direct I2S at 16k caused 4.096MHz MCLK vs 11.29MHz -> fast playback - Brick game correct because it uses audio-stream resampler path
Tactility Book Player App
The Book Player app for Tactility OS plays children's books stored on the SD card. Each book is organized in its own subfolder and contains a sequential layout of pages with both visual illustrations (images) and narration (audio).
SD Card Layout
Books must be stored under /sdcard/books/ on the device SD card with the following structure:
/sdcard/books/
book_slug_1/
manifest.json
page001.png
page001.mp3
page002.png
page002.mp3
...
book_slug_2/
manifest.json
page001.jpg
page001.wav
page002.jpg
page002.wav
...
Manifest Format
Each book subfolder must contain a manifest.json file. Here is a sample format:
{
"title": "Princess Grace and Poppy",
"author": "Reyna Family",
"id": "grace-poppy",
"format": "tactility-book-manifest-v1",
"display": {
"width": 320,
"height": 240
},
"audio": {
"encoding": "mp3",
"sample_rate_hz": 16000,
"channels": 1,
"bitrate_kbps": 24
},
"pages": [
{
"image": "page001.png",
"audio": "page001.mp3",
"caption": "Once upon a time, in a magnificent castle perched high on a hill above the sea, there lived five princesses..."
},
{
"image": "page002.png",
"audio": "page002.mp3",
"caption": "This is the story of Princess Grace..."
}
]
}
Content Requirements
- Images: PNG or JPG format. Recommended size is
320×240pixels (or scaled to match standard aspect ratios). - Audio: Mono
MP3or uncompressed standardWAVfiles. For ESP32-S3 systems, lower sampling rates (e.g. 16 kHz mono) are recommended for memory efficiency.