Files
tactility_apps/Apps/BookPlayer
Adolfo Reyna ef9d4e8de9
Main / Build (AudioTest) (push) Has been cancelled
Main / Build (BibleVerse) (push) Has been cancelled
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 (EspNowBridge) (push) Has been cancelled
Main / Build (GPIO) (push) Has been cancelled
Main / Build (GameBoy) (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 (McpScreen) (push) Has been cancelled
Main / Build (MediaKeys) (push) Has been cancelled
Main / Build (Mp3Player) (push) Has been cancelled
Main / Build (MystifyDemo) (push) Has been cancelled
Main / Build (PocketDungeon) (push) Has been cancelled
Main / Build (ReynaBot) (push) Has been cancelled
Main / Build (RobotArm) (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 / Build (VoiceRecorder) (push) Has been cancelled
Main / Bundle (push) Has been cancelled
Main / PublishApps (push) Has been cancelled
fix(bookplayer): keep audio stream open across page turns + fade-in/out
Close and re-creating the codec on every page change caused an audible pop
between pages. Now open_output_stream reuses an already-open stream when the
format matches, the codec is left open on a natural page finish (only torn
down on user stop / back / app close), and a short fade-in/out is applied at
each page boundary. Also fixes pre-existing device API renames (device_find_*
-> device_get_* out-param style).

Docs: record where the Tactility SDK actually lives and that the fresh CDN
0.8.0-dev SDK is broken for this setup (app-module resolution), with the
cached working copy workaround.
2026-08-19 21:09:21 -04:00
..

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×240 pixels (or scaled to match standard aspect ratios).
  • Audio: Mono MP3 or uncompressed standard WAV files. For ESP32-S3 systems, lower sampling rates (e.g. 16 kHz mono) are recommended for memory efficiency.