- Drehbuch: Umsetzungsplan für Remotion statt Higgsfield-Bildliste - src/folge01/: Texte in drei Sprachen, Intro, Szene 2 „Wer raschelt da?“, Outro - Orte garten_herbst und garten_herbst_abend (volle Herbstkrone, ohne Holzstapel) - natur.tsx: Apfel, Blume, Laubhaufen (wackelt, wird gestaucht) - figur.tsx: fehlt eine Clip-Datei, nimmt die Figur Standbilder (Gehen: die vier Geh-Bilder) – so lässt sich auch ohne /shared rendern - Root: Ort-Kompositionen mit mehreren Unterstrichen Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
29 lines
1.2 KiB
TypeScript
29 lines
1.2 KiB
TypeScript
import {SPRACHE, type FolgenTexte} from '../baukasten/sprache';
|
|
import {plane as basis, type PlanOptionen, type Zeile} from '../baukasten/zeit';
|
|
import DE from './texte/de.json';
|
|
import ES from './texte/es.json';
|
|
import FR from './texte/fr.json';
|
|
import STIMMEN_DE from './stimmen/de.json';
|
|
import STIMMEN_ES from './stimmen/es.json';
|
|
import STIMMEN_FR from './stimmen/fr.json';
|
|
|
|
// Sprechtexte stehen nur in texte/<sprache>.json (Schlüssel „szene/zeile“),
|
|
// die Szenen enthalten nur Ablauf und Bewegung. Aufnahmen je Sprache in
|
|
// stimmen/<sprache>.json bzw. public/stimmen/folge01/<sprache>/ (erzeugt von
|
|
// werkzeuge/stimmen.mts).
|
|
|
|
export const TEXTE: FolgenTexte = {de: DE, es: ES, fr: FR}[SPRACHE];
|
|
const AUFNAHMEN = {de: STIMMEN_DE, es: STIMMEN_ES, fr: STIMMEN_FR}[SPRACHE];
|
|
|
|
export const TITEL = TEXTE.titel;
|
|
|
|
// Zeitplan einer Szene dieser Folge, mit den Texten der gewählten Sprache
|
|
export const plane = (szene: string, zeilen: Zeile[], opt: PlanOptionen = {}) =>
|
|
basis(
|
|
zeilen.map((z) => {
|
|
if (z.text !== undefined || !z.wer) return z;
|
|
const text = TEXTE.zeilen[`${szene}/${z.id}`];
|
|
return {...z, text: text ?? `[fehlt: ${szene}/${z.id}]`};
|
|
}),
|
|
{...opt, szene, aufnahmen: AUFNAHMEN, ordner: `stimmen/folge01/${SPRACHE}`},
|
|
);
|