Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
f2349bc
Add solo reader bookshelf catalog
dancockrell Sep 1, 2026
97c5433
Add Git book plugin loader
dancockrell Sep 1, 2026
b50ed84
Add reader-first bookshelf
dancockrell Sep 1, 2026
a7d02dc
Load bookshelf books into reader shell
dancockrell Sep 1, 2026
694283a
Add separate literary explainer experience
dancockrell Sep 1, 2026
be185e1
Rebuild app around solo reading loop
dancockrell Sep 1, 2026
f15a44a
Remove classroom shell and focus navigation on reading
dancockrell Sep 1, 2026
b7af2d6
Use per-line storyboard art when available
dancockrell Sep 1, 2026
5c4ed84
Add uninterrupted solo story track
dancockrell Sep 1, 2026
1969857
Add storyboard visual contract to reading beats
dancockrell Sep 1, 2026
6ef2486
Play authored visual clips with narration
dancockrell Sep 1, 2026
911e04d
Simplify reader to uninterrupted story playback
dancockrell Sep 1, 2026
ade58f7
Frame books with Wren and Grandpa Ambrose
dancockrell Sep 1, 2026
b3c6160
Replace three-pass gate with solo book home
dancockrell Sep 1, 2026
d3b54e9
End books with final thoughts and optional exploration
dancockrell Sep 1, 2026
38cd9e1
Wire motion setting into solo reader
dancockrell Sep 1, 2026
d7d43c7
Resolve remote storyboard media from Git packs
dancockrell Sep 1, 2026
2d1de63
Style solo bookshelf and reading experience
dancockrell Sep 1, 2026
4f27f1a
Stop advertising uncommitted Raven art
dancockrell Sep 1, 2026
9d4df1f
Decorate bundled books with bookshelf metadata
dancockrell Sep 1, 2026
c1fdab3
Give Wren and Ambrose warm book framing
dancockrell Sep 1, 2026
34b5811
Apply curated intro and afterword framing
dancockrell Sep 1, 2026
c107268
Allow text-only framing while recordings are authored
dancockrell Sep 1, 2026
01f1523
Handle text-first Wren and Ambrose framing cleanly
dancockrell Sep 1, 2026
6bcc859
Run bundled books through the same pack decorator
dancockrell Sep 1, 2026
0de46e4
Show honest media readiness on bookshelf
dancockrell Sep 1, 2026
60bdaf5
Protect uninterrupted solo reading contract
dancockrell Sep 1, 2026
22d44a6
Make Explore an expert literary companion
dancockrell Sep 1, 2026
d263201
Author Ambrose exploration notes for launch books
dancockrell Sep 1, 2026
cfa61dc
Apply curated Explore notes to book packs
dancockrell Sep 1, 2026
1974944
Add exact Grok storyboard for Gift scene 1
dancockrell Sep 1, 2026
741ab60
Add storyboard template generator from real book cues
dancockrell Sep 1, 2026
9bb417f
Add storyboard planning command
dancockrell Sep 1, 2026
b7d49b9
Type custom storyboard animation style safely
dancockrell Sep 1, 2026
ba33e4e
Keep ending outside scene progress
dancockrell Sep 1, 2026
770b19f
Add CI for solo reader redesign
dancockrell Sep 1, 2026
4d52323
Add exact Grok storyboard for Gift scene 2
dancockrell Sep 1, 2026
5fc2451
Preserve CI typecheck diagnostics
dancockrell Sep 1, 2026
24cfe46
Type the solo book and storyboard contract
dancockrell Sep 1, 2026
7e1cda7
Type storyboard beat options explicitly
dancockrell Sep 1, 2026
eee4ecb
Refocus book-context tests on solo reader
dancockrell Sep 1, 2026
9e6eb48
Type legacy track options during migration
dancockrell Sep 1, 2026
10314fb
Make solo reader integration hooks optional
dancockrell Sep 1, 2026
bbad438
Preserve test and build CI diagnostics
dancockrell Sep 1, 2026
d6adb68
Run all solo reader CI checks before failing
dancockrell Sep 1, 2026
d57a28b
Test the new catalog boundary instead of the old bundled-book registry
dancockrell Sep 1, 2026
8faa253
Validate the bundled Magi pack without external audio staging
dancockrell Sep 1, 2026
966b239
Make track tests describe the solo reading contract
dancockrell Sep 1, 2026
284f9f5
Remove the legacy three-pass reading track
dancockrell Sep 1, 2026
1606a70
Keep speech only for book framing
dancockrell Sep 1, 2026
ef13c0a
Test Wren and Ambrose only as framing voices
dancockrell Sep 1, 2026
f1b94ba
Match storyboard tests to line-only segments
dancockrell Sep 1, 2026
9f6ee5c
Remove classroom UI
dancockrell Sep 1, 2026
b68fe9c
Remove classroom UI tests
dancockrell Sep 1, 2026
382bd8c
Remove gradebook UI
dancockrell Sep 1, 2026
ea30be0
Remove classroom learning guide
dancockrell Sep 1, 2026
f0c055f
Remove classroom learning guide tests
dancockrell Sep 1, 2026
69f7305
Remove hand-in UI
dancockrell Sep 1, 2026
cb573a6
Remove assessment question UI
dancockrell Sep 1, 2026
1fbc162
Remove classroom sheet setup
dancockrell Sep 1, 2026
9eef6f3
Remove classroom sign-in UI
dancockrell Sep 1, 2026
3df1d4c
Remove classroom sign-in tests
dancockrell Sep 1, 2026
481a583
Remove writing assessment UI
dancockrell Sep 1, 2026
9cd7b26
Remove classroom persistence tests
dancockrell Sep 1, 2026
c9c9b2a
Remove classroom join keys
dancockrell Sep 1, 2026
97e8ce2
Remove classroom join-key tests
dancockrell Sep 1, 2026
c3f7215
Remove classroom submission outbox
dancockrell Sep 1, 2026
b97dd9a
Remove classroom roster storage
dancockrell Sep 1, 2026
03740e6
Remove classroom roster tests
dancockrell Sep 1, 2026
ff07862
Remove classroom submission sender
dancockrell Sep 1, 2026
1231803
Remove classroom sender tests
dancockrell Sep 1, 2026
403973f
Remove classroom student identity storage
dancockrell Sep 1, 2026
fecb7a2
Remove gradebook cell helpers
dancockrell Sep 1, 2026
2113071
Remove collected gradebook helpers
dancockrell Sep 1, 2026
b2d19c8
Remove gradebook CSV export
dancockrell Sep 1, 2026
ab31e7e
Remove gradebook tests
dancockrell Sep 1, 2026
a8b78ea
Remove gradebook submission model
dancockrell Sep 1, 2026
fdcbaf6
Remove gradebook workbook model
dancockrell Sep 1, 2026
48b3611
Remove gradebook workbook tests
dancockrell Sep 1, 2026
78cfbd4
Remove gradebook XLSX export
dancockrell Sep 1, 2026
c0c67fc
Remove gradebook XLSX tests
dancockrell Sep 1, 2026
38baf1b
Remove classroom guide outline
dancockrell Sep 1, 2026
f738d44
Remove classroom guide outline tests
dancockrell Sep 1, 2026
822cd7a
Remove reading assessment engine
dancockrell Sep 1, 2026
9836409
Remove reading assessment tests
dancockrell Sep 1, 2026
897bf60
Remove assessment attempt persistence
dancockrell Sep 1, 2026
741e0fd
Remove assessment attempt tests
dancockrell Sep 1, 2026
be529a2
Remove reading grader
dancockrell Sep 1, 2026
2fbe0ac
Remove classroom QR encoder
dancockrell Sep 1, 2026
bea206f
Remove classroom QR encoder tests
dancockrell Sep 1, 2026
68435e8
Remove legacy QR parity tests
dancockrell Sep 1, 2026
fec385e
Remove classroom QR SVG renderer
dancockrell Sep 1, 2026
9eee8e0
Remove classroom QR SVG tests
dancockrell Sep 1, 2026
8b5bb93
Remove classroom Apps Script backend
dancockrell Sep 1, 2026
83180ef
Remove classroom backend tests
dancockrell Sep 1, 2026
e1db984
Validate Magi plate references without staging assets
dancockrell Sep 1, 2026
f9a4d64
Remove prototype parity gate
dancockrell Sep 1, 2026
36905ca
Align cues only against narrated literary lines
dancockrell Sep 1, 2026
c0609bc
Make extracted-book tests protect the solo reading pack
dancockrell Sep 1, 2026
5c4324e
Keep translation tests focused on reading and vocabulary
dancockrell Sep 1, 2026
21d04b7
Remove the last gradebook type
dancockrell Sep 1, 2026
fdd983d
Return solo reader CI to normal verification
dancockrell Sep 1, 2026
5fb1b60
Fix storyboard type name
dancockrell Sep 1, 2026
4ff42e8
Release only the solo reader
dancockrell Sep 1, 2026
cebf35c
Simplify reader development commands
dancockrell Sep 1, 2026
d1df533
Lazy-load bundled books and prune classroom tooling
dancockrell Sep 1, 2026
1e56f7c
Package cinematic Magi reader and standalone portfolio film
dancockrell Sep 6, 2026
e510f80
Document native-frame film edits and source archive boundaries
dancockrell Sep 6, 2026
8463cad
Preserve main documentation history alongside film-first reader
dancockrell Sep 6, 2026
5cfeee8
Verify production playback and complete installable app assets
dancockrell Sep 6, 2026
e8e3d29
Type browser-only smoke-test callbacks accurately
dancockrell Sep 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
36 changes: 36 additions & 0 deletions .github/workflows/solo-reader-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Solo reader CI

on:
push:
branches:
- solo-reader-redesign
pull_request:
branches:
- main

jobs:
verify:
runs-on: ubuntu-latest
timeout-minutes: 15

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Use Node 22
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm

- name: Install dependencies
run: npm ci --ignore-scripts

- name: Typecheck
run: npm run typecheck

- name: Unit tests
run: npm test

- name: Production build
run: npm run build
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ dev*.log
#
# When the art becomes something we author rather than extract, this
# decision should be revisited — probably with git-lfs.
public/art/
public/magi-audio/
# Curated reading media now ships with source for reproducible builds.
public/vtt/
public/video/**/*.mp4
production/
tools/ffmpeg/
406 changes: 0 additions & 406 deletions PLAN.md

This file was deleted.

52 changes: 30 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,51 @@
# Magi Reader

Magi Reader's current direction is a polished solo literary reading experience: illustrated stories and poems, narration with synchronized text, tappable vocabulary, multilingual support, and a personal vocabulary trainer.
**A film to watch. A story to read.**

The story should remain uninterrupted. Wren and Grandpa Ambrose frame the book before and after; optional literary/context discussion belongs in a separate Explore experience.
O. Henry’s *The Gift of the Magi*, adapted into a narrated short film and a quiet, installable reading app.

## Current direction and implementation status
[**Open the app**](https://dancockrell.github.io/magi-reader-engine/) · [**Watch the film**](https://dancockrell.github.io/magi-reader-engine/film.html) · [**Download the 1080p film**](https://github.com/dancockrell/magi-reader-engine/releases/download/v0.9.0-portfolio/the-gift-of-the-magi.mp4)

**As of 5 September 2026, the solo redesign is in [draft PR #7](https://github.com/dancockrell/magi-reader-engine/pull/7), on `solo-reader-redesign`.** The default branch still contains the earlier classroom implementation. A checkout of `main` therefore does not yet give you the finished solo product. Consult the PR's current status and checks before assuming that transition has landed.
[![Della counting her savings](public/art/storyboard/s1/s1-a-counting.jpg)](https://dancockrell.github.io/magi-reader-engine/film.html)

New product work follows the solo direction. Class/teacher UI, sign-in and rosters, quiz/writing passes, hand-in/outbox flows, gradebooks, marking exports, and Apps Script are outside that direction. Do not restore them to satisfy old prototype-parity expectations.
## The experience

The existing tests and old classroom code remain evidence for that implementation until the reviewed redesign replaces them. This documentation change does not merge the redesign or certify its full application suite.
- **Watch:** the complete narrated film, with English captions, seeking, volume and fullscreen controls.
- **Read:** the original story at your own pace, with vocabulary support.
- **Keep a bookshelf:** one adaptation is the focus. Other titles are deferred.
- **Install:** use your browser’s install-app command where supported. The film streams on demand; downloading the MP4 is the reliable offline viewing option.

## Run the checked-out version
No account, classroom workflow, explanatory host characters, or sentence-driven video playback.

```bash
npm install
## The work behind the film

This is a portfolio project by **Dan Cockrell**, combining application development with an AI-assisted film production workflow. Generated footage was treated as source material: selected, rejected, reshot and cut into an authored timeline.

Picture, narration and music are baked into one film. The application does not stretch clips, loop shots or pause picture to catch individual sentences. The delivery is **1920 × 1080 at 24 fps**, approximately **14 minutes 42 seconds** including the closing coda.

[Read the production case study](docs/FILM-PRODUCTION.md) · [Release checks](docs/PORTFOLIO-RELEASE.md)

## Run locally

```sh
npm ci
npm run dev
npm test
npm run typecheck
npm run build
```

Read `package.json` on your branch for the actual checks and release scripts. Avoid copying historical test totals into acceptance claims: missing book media and branch-specific tests can change what a run covers.

## Architecture and content
The repository includes reading media and captions. Download the film from Releases and place it at `public/video/films/magi-reader-film-final.mp4` for local playback. Production builds use the release-hosted film; set `VITE_FILM_URL` to supply a different delivery URL.

The engine separates reusable reading behavior from book-specific text and media. The solo branch's README describes its bookshelf, safe Git-hosted data packs, uninterrupted story track, vocabulary, and storyboard tooling.
The app is `index.html`; the standalone cinema presentation is `film.html`. Both are built together. Raw generations and intermediate renders are kept outside the shipped app.

On `main`, `src/lib/` still includes classroom and gradebook modules; `src/backend/` and `legacy/` retain the older implementation. These are not requirements for the solo architecture.
## Credits and license

- [Book format](docs/BOOK-FORMAT.md) documents the contract on this branch. Use the solo branch's version when authoring for the redesign; its validator is the corresponding executable contract.
- [Historical teaching design](docs/PEDAGOGY.md) preserves learning-design rationale and the earlier classroom decisions. It is not the current feature roadmap.
- [Classroom toolkit](https://github.com/dancockrell/magi-reader-classroom-toolkit) preserves the original standalone classroom machinery.
- [The Gift of the Magi](https://github.com/dancockrell/the-gift-of-the-magi-o-henry-magi-reader) and [The Raven](https://github.com/dancockrell/the-raven-edgar-allan-poe-magi-reader) preserve book content, media, and earlier packaging work. Check each pack's actual published assets before promising complete narration or art.
Story: **O. Henry**. Adaptation, editing and application: **Dan Cockrell**. Visuals, narration and score use AI-assisted production.

## History and documentation authority
Application code is MIT licensed. The story is public domain in the United States. Generated media is separate from the code license; contact the project author about reuse.

The frozen single-file prototype remains valuable regression and development history. It is no longer the product specification. The earlier README and classroom screenshots are preserved in Git; new documentation should explain the current reader rather than promote the retired assessment workflow.

## Licence
## Project history

MIT. The stories are public domain. Illustrations and recordings travel with the book pack; inspect their provenance and distribution records separately.
[Historical teaching design](docs/PEDAGOGY.md) preserves earlier classroom research; it is not the current app specification. The film-first solo reader supersedes that interface without erasing its Git history.
2 changes: 1 addition & 1 deletion docs/BOOK-FORMAT.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# The book pack format

> **Version scope:** this is the pack contract for the classroom-era code on this branch. For new solo-reader packs, use [the contract on `solo-reader-redesign`](https://github.com/dancockrell/magi-reader-engine/blob/solo-reader-redesign/docs/BOOK-FORMAT.md) and its matching validator. Questions and teaching passes below are not a mandate to restore classroom features. The [README](../README.md) explains the transition.
> **Version scope:** this document preserves the broader book-data contract. The current app uses its solo-reading subset and the matching validator; historical questions and teaching passes are not current UI requirements. The [README](../README.md) describes the shipped experience.

The engine reads books. It does not contain one. Everything a particular
title is made of, the text, the pictures, the glossary, the questions, the
Expand Down
32 changes: 32 additions & 0 deletions docs/FILM-PRODUCTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Making The Gift of the Magi

The brief: turn a literary story into a coherent narrated film, then give viewers a useful reading app around it.

## Editorial approach

The narration is the story spine, but individual sentences do not control video playback. Clips are cut at native speed and assembled into one continuous film with its soundtrack. Major actions should land close to the corresponding narration without forcing every line to become a shot.

The production process uses character and location anchors, short generated takes, ordered visual inspection, adjacent-frame diagnostics, reshoots, and explicit source-frame edit decisions. Automated motion reports flag candidates for review; they cannot certify believable acting, correct anatomy or narrative meaning.

## Concrete revisions

- Replaced detached-hair manipulation with Della tending her attached short hair.
- Removed a confusing street passage with inconsistent hat continuity.
- Replaced an embrace whose generated dissolve created overlapping figures.
- Recut the conversation so “Christmas Eve, boy” addresses Della’s adult husband, and the embrace arrives beside its narration.
- Recut the waiting passage: coffee, chain, footsteps, prayer, entrance and reactions.
- Added a one-second picture-and-lettering fade to black near 14:40.

## Source and delivery

Local source archive: approved anchors, generated takes, rejected takes, audit reports and frame-range edit lists. Rejected clips and production previews do not belong in the viewer’s download.

Repository: application source, reader media, captions, build tools and editorial documentation.

GitHub Pages: the app and standalone cinema presentation.

GitHub Release: the full-quality MP4 and downloadable web application.

## Limits of the review

Frame diagnostics are not artistic sign-off. A zero-reversal result does not prove anatomical or narrative correctness. Release notes distinguish technical checks from reviewed passages; further viewer feedback may still justify a better cut.
12 changes: 12 additions & 0 deletions docs/PORTFOLIO-RELEASE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Portfolio release checklist

- [ ] Complete waiting-scene export and verify its story landmarks.
- [ ] Review source motion and exported joins.
- [ ] Verify 1080p / native 24 fps / soundtrack / final black.
- [ ] Pass app unit tests, typecheck and production build.
- [ ] Check desktop and narrow-screen bookshelf, film and text routes.
- [ ] Check published film playback and seeking, not merely HTTP success.
- [ ] Verify GitHub Pages app and cinema URLs.
- [ ] Verify release MP4 and web-app archive downloads.

This checklist is intentionally not an assertion that an automated audit makes a film perfect.
101 changes: 101 additions & 0 deletions docs/film-edits/full-film.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
{
"schema": 1,
"date": "2026-09-06",
"rules": [
"Native 24 fps picture throughout",
"No holds, loops, reversals, interpolation, or speed fitting",
"Continuous authored movie; reader logic does not control picture timing"
],
"storyFrames": 20589,
"storySeconds": 857.875,
"creditsSeconds": 24.01,
"deliverySeconds": 881.906,
"units": [
{
"unit": 1,
"frames": 1201,
"pictureSeconds": 50.041666666666664,
"narrationSeconds": 50.04,
"driftSeconds": 0.0016666666666651508
},
{
"unit": 2,
"frames": 1650,
"pictureSeconds": 68.75,
"narrationSeconds": 68.76000000000002,
"driftSeconds": -0.010000000000019327
},
{
"unit": 3,
"frames": 2258,
"pictureSeconds": 94.08333333333333,
"narrationSeconds": 94.08,
"driftSeconds": 0.0033333333333303017
},
{
"unit": 4,
"frames": 1538,
"pictureSeconds": 64.08333333333333,
"narrationSeconds": 64.07999999999998,
"driftSeconds": 0.0033333333333445125
},
{
"unit": 5,
"frames": 1221,
"pictureSeconds": 50.875,
"narrationSeconds": 50.85600000000001,
"driftSeconds": 0.018999999999991246
},
{
"unit": 6,
"frames": 1742,
"pictureSeconds": 72.58333333333333,
"narrationSeconds": 72.6,
"driftSeconds": -0.01666666666666572
},
{
"unit": 7,
"frames": 1281,
"pictureSeconds": 53.375,
"narrationSeconds": 53.37599999999999,
"driftSeconds": -0.000999999999990564
},
{
"unit": 8,
"frames": 2043,
"pictureSeconds": 85.125,
"narrationSeconds": 85.12799999999999,
"driftSeconds": -0.002999999999985903
},
{
"unit": 9,
"frames": 2882,
"pictureSeconds": 120.08333333333333,
"narrationSeconds": 120.07200000000003,
"driftSeconds": 0.011333333333297446
},
{
"unit": 10,
"frames": 2242,
"pictureSeconds": 93.41666666666667,
"narrationSeconds": 93.43200000000002,
"driftSeconds": -0.015333333333344967
},
{
"unit": 11,
"frames": 1266,
"pictureSeconds": 52.75,
"narrationSeconds": 52.751999999999995,
"driftSeconds": -0.001999999999995339
},
{
"unit": 12,
"frames": 1265,
"pictureSeconds": 52.708333333333336,
"narrationSeconds": 52.70399999999999,
"driftSeconds": 0.004333333333342182
}
],
"output": "public/video/films/magi-reader-film-final.mp4",
"captions": "public/video/films/magi-reader-film-final.vtt"
}
115 changes: 115 additions & 0 deletions docs/film-edits/scene-10.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
{
"fps": 24,
"frames": 2242,
"duration": 93.41666666666667,
"narrationSeconds": 93.43200000000002,
"shots": [
{
"name": "The parcel",
"path": "production/magnific/gift-of-the-magi/scene-10/raw/01-parcel.mp4",
"in": 0,
"out": 224,
"timelineStart": 0,
"timelineEnd": 9.333333333333334
},
{
"name": "Nothing could change my love",
"path": "production/magnific/gift-of-the-magi/scene-10/raw/02-reassurance.mp4",
"in": 0,
"out": 224,
"timelineStart": 9.333333333333334,
"timelineEnd": 18.666666666666668
},
{
"name": "Della unwraps it",
"path": "production/magnific/gift-of-the-magi/scene-10/raw/03-unwrap.mp4",
"in": 0,
"out": 224,
"timelineStart": 18.666666666666668,
"timelineEnd": 28
},
{
"name": "Joy and tears",
"path": "production/magnific/gift-of-the-magi/scene-10/raw/04-joy-tears.mp4",
"in": 0,
"out": 224,
"timelineStart": 28,
"timelineEnd": 37.333333333333336
},
{
"name": "The combs",
"path": "production/magnific/gift-of-the-magi/scene-10/raw/05-combs-reveal.mp4",
"in": 0,
"out": 225,
"timelineStart": 37.333333333333336,
"timelineEnd": 46.708333333333336
},
{
"name": "The Broadway window",
"path": "production/magnific/gift-of-the-magi/scene-10/raw/06-shop-memory.mp4",
"in": 0,
"out": 225,
"timelineStart": 46.708333333333336,
"timelineEnd": 56.083333333333336
},
{
"name": "Jeweled tortoiseshell",
"path": "production/magnific/gift-of-the-magi/scene-10/raw/07-combs-macro.mp4",
"in": 0,
"out": 224,
"timelineStart": 56.083333333333336,
"timelineEnd": 65.41666666666667
},
{
"name": "Too short for them",
"path": "production/magnific/gift-of-the-magi/scene-10/raw/08-mirror-combs.mp4",
"in": 0,
"out": 224,
"timelineStart": 65.41666666666667,
"timelineEnd": 74.75
},
{
"name": "Jim comforts her",
"path": "production/magnific/gift-of-the-magi/scene-10/raw/09-comfort.mp4",
"in": 0,
"out": 224,
"timelineStart": 74.75,
"timelineEnd": 84.08333333333333
},
{
"name": "My hair grows fast",
"path": "production/magnific/gift-of-the-magi/scene-10/raw/10-hair-grows.mp4",
"in": 0,
"out": 224,
"timelineStart": 84.08333333333333,
"timelineEnd": 93.41666666666667
}
],
"voices": [
"public/magi-audio/n_s10_0.mp3",
"public/magi-audio/n_s10_1.mp3",
"public/magi-audio/n_s10_2.mp3",
"public/magi-audio/n_s10_3.mp3",
"public/magi-audio/n_s10_4.mp3",
"public/magi-audio/n_s10_5.mp3",
"public/magi-audio/n_s10_6.mp3",
"public/magi-audio/n_s10_7.mp3",
"public/magi-audio/n_s10_8.mp3",
"public/magi-audio/n_s10_9.mp3",
"public/magi-audio/n_s10_10.mp3",
"public/magi-audio/n_s10_11.mp3",
"public/magi-audio/n_s10_12.mp3",
"public/magi-audio/n_s10_13.mp3",
"public/magi-audio/n_s10_14.mp3",
"public/magi-audio/n_s10_15.mp3",
"public/magi-audio/n_s10_16.mp3",
"public/magi-audio/n_s10_17.mp3",
"public/magi-audio/n_s10_18.mp3",
"public/magi-audio/n_s10_19.mp3",
"public/magi-audio/n_s10_20.mp3",
"public/magi-audio/n_s10_21.mp3",
"public/magi-audio/n_s10_22.mp3",
"public/magi-audio/n_s10_23.mp3",
"public/magi-audio/n_s10_24.mp3"
]
}
Loading
Loading