{% extends "messung_basis.html" %} {# Leitseite „/“, Variante A „Booth“ (Entscheidung Maintainer 24.10.2026; Prototyp, Faktencheck und Evaluation: .superpowers/sdd/2026-10-24-startseite-redesign). Hero mit der Tagline „timbre. rediscover your music“ (27.10.2026 „What’s really in your tracks.“, seit 07.11.2026 des Maintainers Zeile „Sortiere deine Library nach Klangfarbe, Genreanteilen & Energie.“ in der Seitensprache, texte_buehne.py „held“; darunter der USP-Satz), danach (seit 06.11.2026, Zweig start-scrolly) die Animation „vorher → nachher“ in fünf Kapiteln statt der fünf Akte (start_szenen.html; Belege der Live-Demo `la` nur noch für Player, Speicher und Vergleich). Ohne JavaScript steht alles im Endzustand da; Bedienelemente, die nur mit Skript etwas tun, tragen data-nur-js. Keine Preise, nichts Ungebautes außer der Zeile „Kommt: Phrasen in Takten“. #} {% import "start_szenen.html" as SZ with context %}{% import "start_vinyl.html" as VY with context %}{% import "start_geraete.html" as GE with context %} {% macro mehr(anker) %}

{{ t.leit.mehr }} {% for a in anker %}{{ t.hilfe.links[a] }}{% if not loop.last %}{% endif %}{% endfor %}

{% endmacro %} {# Knöpfe (Maintainer 24.10.2026): Hauptknopf „Live-Demo öffnen · ohne Konto“, „Kostenlos loslegen“ daneben; seit 08.11.2026 Texte Fassung A (texte_leitseite, texte.py start.einstieg) #} {% macro knoepfe(teil=0) %}{% set e = t.start.einstieg %}{% set A = t.leitseite %}{% set los = t.store.los if neutral else e.los %}{% set los_sub = t.earlybird.knopf_unter if neutral else "" %} {#- teil 0: alle Knöpfe in einer Reihe (wie bisher); neuer Hero (11.11.2026): teil 1 = nur der Hauptknopf, teil 2 = der Rest -#} {% if nutzer and gesperrt %}{% set k = [("/freigabe", e.stand, "")] %} {% elif nutzer %}{% set k = [("/bibliothek", e.zur_library, ""), ("/quellen", e.quellen, "")] %} {% elif demo_an() %}{% set k = [("/demo", A.cta_demo, A.cta_demo_sub), ("/registrieren", los, los_sub)] %} {% else %}{% set k = [("/registrieren", los, los_sub)] %}{% endif %} {% if app_oeffentlich and not store_app %}{% set k = k + [("/desktop", e.app, "")] %}{% endif %} {% set k = k[:1] if teil == 1 else (k[1:] if teil == 2 else k) %} {%- if k %}
{% for href, text, sub in k %}{{ text }}{% if sub %}· {{ sub }}{% endif %}{% endfor %}
{% endif %}{% endmacro %} {% macro huerde() %}{% set L = t.leit %}{% if not nutzer %}

{% if neutral %}{{ t.earlybird.erst_demo }}{% if not store_app %} {{ t.earlybird.preis }}{% endif %}{% else %}{{ L.kostenlos }} {{ L.von_hand }}{% endif %} {{ t.start.einstieg.musik_rein }}

{% endif %}{% endmacro %} {% macro weiter(text, href) %}

{{ text }}

{% endmacro %} {% block titel %}{{ t.titel }} – {{ t.leitseite.kern }}{% endblock %} {% block kopf %}{% if not nutzer %}{% set ih = ios_hinweis() %}{% if ih and ih.app_id %}{% endif %}{% if ih and desktop_hinweis() %}{% endif %}{% endif %}{% endblock %} {% block lampe %}{% if lampe_an %}{% endif %}{% endblock %} {% block inhalt %}{% set L = t.leit %}{% set x = t.start %}{% set e = x.einstieg %}{% set A = t.leitseite %}{% set U = L.usp %} {% set werte = L.messband_werte | replace("{dauer}", ls.dauer) | replace("{bpm}", ls.bpm | string) | replace("{key}", ls.key) | replace("{energie}", ls.energie_z) %} {% set demo = demo_an() and not nutzer %}{% set B = t.buehne %} {# ---------- Hero (Maintainer 24.10.2026: „der USP der USPs darf nicht untergehen“): Kicker „Der Music Player für DJ-Profis“, Tagline als H1, der Kernsatz „Timbre macht sichtbar, was einen Track ausmacht – gemessen und auf einen Blick.“ groß, daneben der Beweis: das echte Track-Blatt eines Demo-Tracks, umschaltbar zwischen 3–5 Techno-Tracks. Herkunft ehrlich: gemessen (Tempo, Tonart, Bänder) bzw. Modell (Genre-Mix, Energie, Charakter, Vocals, Genre-Verlauf). Startseite „wie Apple“, Variante A „Bühne“ (Maintainer 25.10.2026): bis 1439 px zentriert, die Tagline groß (--s-held, 48 → 96 px), das Track-Blatt darunter wie ein Produktfoto; ab 1440 px zweispaltig (1 : 1.272). Nur CSS (start.css, werkzeuge/tokens_start.py). ---------- #} {# Hero „Produkt auf dem ersten Bildschirm“ (11.11.2026, Zweig eindruck-start; Rang 4 in docs/konzepte/2026-11-11-eindruck/, Mockup 1-start.html Variante B): im Browser (menue_c) steht das Library-Fenster direkt unter dem Hauptknopf (Handy: Fensterkante in der ersten Bildschirmhöhe), am Desktop rechts als Beweis-Säule Fenster → Klang-Paar → USP mit Genre-Mix-Band. Die drei datierten Entscheidungen bleiben: Reihenfolge Zeile → Erklärsatz → Knöpfe (07.11.), Player-Kicker (24.10., Schalter usp.hoeren), USP-Satz wörtlich (27.10.) – nur der Ort von Klang-Beispiel und USP wechselt in die Säule. Die zweite Wortmarke „timbre.“ in der H1 entfällt (das Logo steht im Kopf). Lesereihenfolge = Reihenfolge am Handy: Kopf (bis Hauptknopf) → Fenster → Fuß (weitere Knöpfe, Hürdenzeile) → Belege. Kein Skript: Umschalter „Ordner | Klang“ sind zwei Radio-Felder (start_szenen.html fenster_wahl, werkzeuge/tokens_held.py). App-Hüllen ohne die Fähigkeit native_leiste_playlists (menue_c False: iOS 1.0 und Mac 1.0 in Apples Prüfung) bekommen den Hero unverändert wie vorher (Zweig darunter). #} {% macro hinweise() %}{% if anmeldung_fehlgeschlagen %}{% endif %} {% if start_hinweis in ("abgemeldet", "geloescht") %}

{{ t.anm[start_hinweis] }}

{% endif %}{% endmacro %} {% if menue_c %}
{{ hinweise() }}

{% if usp.hoeren %}{{ A.player_claim }}{% else %}{{ A.eyebrow }}{% endif %}

{{ B.held }}

{{ B.klang }}

{{ knoepfe(1) }}
{{ SZ.fenster_wahl(t.szenen) }}
{% set fuss %}{{ knoepfe(2) }}{{ huerde() }}{% endset %}{% if fuss | trim %}
{{ fuss }}
{% endif %}

{{ B.usp }}

{{ t.szenen.weiter }}

{% else %}
{{ hinweise() }}
{# Positionierung belegbar, ohne Superlativ – „Best …“ erst nach Kanzlei-Freigabe (K-Claim-1) #}

{% if usp.hoeren %}{{ A.player_claim }}{% else %}{{ A.eyebrow }}{% endif %}

timbre.{{ B.held }}

{# Klangfarbe erklärt (Maintainer 07.11.2026, Fassung B): ein Satz, sichtbar ohne Klick, fest im HTML (CLS 0). Reihenfolge seit 07.11.2026: Zeile → Erklärsatz → Knöpfe (Desktop: alles in der ersten Bildschirmhöhe), danach das Beispiel zur Klangfarbe und der USP-Satz mit seinem Genre-Mix; vorher standen die Knöpfe in .la-heldfuss unter USP und Mix #}

{{ B.klang }}

{{ knoepfe() }} {{ huerde() }} {# Beispiel zur Klangfarbe (Maintainer 07.11.2026): zwei erfundene Tracks, gleiches Tempo und gleiche Tonart, anderer Klang #} {# Zentraler USP (Maintainer 27.10.2026, wörtlich): der Satz unter der Hero-Zeile, darunter seine drei Anteile als Genre-Mix-Band wie im Track-Blatt (gleiche Farben, gleiche Legende) – als Beispiel gekennzeichnet, fest im HTML (CLS 0) #}

{{ B.usp }}

{# Hero „Library-Fenster“ (Startseiten-Animation 06.11.2026, Entscheidung Maintainer): statt des Track-Blatts ein schräg gestelltes Library-Fenster, das sich selbst füllt und den ersten Track spielt (nur CSS). Ab 1440 px rechts neben beiden Karten. #}

{{ t.szenen.weiter }}

{{ SZ.fenster(t.szenen) }}
{% endif %} {# Kennzahlen-Block entfernt 27.10.2026 (Maintainer: „braucht kein Mensch als Info“) – auch keine Bento-Kacheln dieser Art #} {# Tagline-Komponente (25.10.2026): ein Markensatz englisch, groß; die folgende H2 ist die Funktion, die ihn einlöst (.la-tagline + .titel) #} {% macro tagzeile(satz) %}

{{ satz }}

{% endmacro %} {# ---------- Vorher → nachher (Startseiten-Animation, Bau 06.11.2026, Zweig start-scrolly; Konzept und Prototypen: docs/konzepte/2026-11-06-start-scrolly/): ersetzt die fünf Akte. Fünf Kapitel Chaos · Analyse · Klang · Ordnen · Zurück mit fester Bühne und Zeitleiste ab 960 px, darunter linear. Makros und Geometrie: start_szenen.html, startseite_szenen.py; Texte: texte_szenen.py. static/szenen.js lädt start.js erst nach (TimbreLader), wenn der Bereich einen Bildschirm entfernt ist. ---------- #} {{ SZ.scrolly(t.szenen) }} {# ---------- Und was ist mit Vinyl?! (09.11.2026, Zweig startvinyl): der Einwurf direkt nach „Zurück nach Rekordbox“ – wer die Files bis in Rekordbox begleitet hat, fragt als Vinyl-DJ genau hier. start_vinyl.html, startseite_vinyl.py (Schalter VINYL_LIVE, MITHOEREN_LIVE), texte_vinyl.py, werkzeuge/tokens_vinyl.py. Gebaut, aber noch nicht live: nie in den Store-Apps und nie in der Desktop-App (App-Prüfung), im Web mit Kennzeichen „Kommt bald“. ---------- #} {% if vy and not (store_app or desktop_app) %}{{ VY.abschnitt(t.vinyl) }}{% endif %} {# ---------- Timbre auf deinen Geräten (08.11.2026, Variante B „Raster mit lebenden Kacheln“ + roter Faden aus A; Galerie .superpowers/sdd/2026-11-08-startseite-apple/): direkt nach „Zurück nach Rekordbox“. start_geraete.html, startseite_geraete.py, texte_geraete.py, werkzeuge/tokens_geraete.py; static/geraete.js nachgeladen. ---------- #} {{ GE.abschnitt(t.geraete) }}{# Hinweis „Timbre fürs iPhone und iPad“ (13.11.2026): nur ohne Anmeldung und nur mit TIMBRE_IOS_STORE_URL (app._ios_hinweis: nie Store-Fassungen, Live-Demo, Offline-Paket) – ist sie leer, steht hier nichts. Vorhandene Klassen, kein Badge-Bild. #}{% set dh = desktop_hinweis() %}{% set ih = none if nutzer else ios_hinweis() %}{# Einstieg „Desktop-App für Mac und Windows“ (13.11.2026): nur mit TIMBRE_DESKTOP_OEFFENTLICH und bereitliegender Datei (app._desktop_hinweis: nie Store-Fassungen, Live-Demo, Offline-Paket, App-Fenster) – sonst steht hier nichts. Der Satz nennt nur Plattformen, die es wirklich gibt. Vorhandene Klassen. #}{# Runde 2 (13.11.2026): Sind beide sichtbar, stehen sie als EIN Abschnitt mit zwei Karten (static/start_laden.css, nur dann geladen – Block kopf); ist nur einer sichtbar, bleibt er Byte für Byte wie bisher. #}{% if ih and dh %}

{{ t.ios_hinweis.text }}

{{ t.desktop_oe["start_" ~ dh] }}

{% else %}{% if ih %}

{{ t.ios_hinweis.text }}

{% endif %}{% if dh %}

{{ t.desktop_oe["start_" ~ dh] }}

{% endif %}{% endif %} {# ---------- Standing on the shoulders of giants (24.10.2026, Variante A „Credits“ wie auf dem Plattencover; Prototyp .superpowers/sdd/2026-10-24-schultern/): direkt nach Akt II – wer fünf Messungen gesehen hat, fragt „woher kommt das?“. Eigene Klassen (sh-*) und IDs, kein Eingriff in Akt III, die Oktagon-Karte oder start.js. Drei Spalten zu je fünf Zeilen: Forschung (MTG) · Werkzeuge · Gebaut von Timbre. Zitat englisch in allen Sprachen, ohne Zuschreibung (steht auf /forschung). Bewegung einmal beim Hineinscrollen (Leitpunkte scaleX, Zeilen opacity); reduzierte Bewegung oder ohne Skript steht alles. Texte: texte_forschung.py. Bis zur Klärung durch die Kanzlei kein KLANGMODELL/AudioMuse; seit 07.11.2026 die Lizenz der MTG-Modelle (CC BY: Urheberschaft, Lizenz mit Link, unverändert genutzt), ausführlich auf /forschung#lizenz. ---------- #} {% set fo = t.forschung %}

{{ fo.eyebrow }}

Standing on the shoulders of giants.

{{ fo.start.lead }}

{{ fo.start.kopf }}

Liner Notes

{% for kopf, unter, zeilen in fo.start.spalten %}

{{ kopf }}

{{ unter }}

{% for was, wer, wo in zeilen %}
{{ was }}
{{ wer }}{{ wo }}
{% endfor %}
{% endfor %}
{{ fo.start.link }}

{{ fo.start.danke }} {{ fo.unabhaengig }}

{% for teil in fo.start.lizenz %}{% if loop.index0 is odd %}{% set l = fo.mtg.lizenzen[teil] %}{{ l.name }}{% else %}{{ teil }}{% endif %}{% endfor %} {{ fo.lizenz.titel }}

{# ---------- Der Music Player für DJ-Profis (Maintainer 24.10.2026): roter Faden zum Hero-Claim – nur, wenn Abspielen im Browser an ist. Jede Karte belegt eine Live-Funktion und verlinkt die passende Hilfe-Frage (nur_live-Anker). ---------- #} {% if usp.hoeren %}
{{ tagzeile(la.taglines.player) }}

{{ A.player_titel }}

{{ A.player_lead }}

{{ A.player_ios }}

{% if demo %}{{ weiter(A.player_demo, "/demo") }}{% endif %}
{% endif %} {# ---------- Timbre-Speicher (Maintainer 27.10.2026: „Riesige Library aber nie unterwegs dabei oder nur auf dem Laptop?“): ruhige Szene nach dem Player – erst kommt, wie du hörst, dann wo deine Musik sein kann – und direkt vor „Deine Musik bleibt deine“, das die Einwände beantwortet. Ehrlich: Beta, auf Anfrage, festes Kontingent ohne Zahl, eigener Onlinespeicher bleibt möglich. Der Name kommt aus EINER Konstante (texte_buehne.SPEICHER_MARKE). Bild: Laptop und Handy mit derselben Library (echte Demo-Tracks), reines CSS, fest im HTML (CLS 0). Nur, wenn Abspielen im Browser an ist. ---------- #} {% if usp.hoeren and not store_app %}{% set S = B.speicher %}
{{ tagzeile(la.taglines.speicher) }}

{{ S.problem }}

{{ S.loesung }}

{% set liste = la.blaetter[:3] %}

{{ S.beta_tag }} {{ S.beta }}

{{ S.option }}

{% endif %} {# ---------- Deine Musik bleibt deine (3): Speicher, Abspielen, Herkunft – beantwortet die Einwände vor dem Schluss ---------- #} {% set V = A.vertrauen %}

{{ A.vertrauen_titel }}

{{ A.vertrauen_lead }}

{# ---------- Was sonst noch drin ist (5) – alles live; darunter die einzige „Kommt“-Zeile ---------- #}

{{ A.kiste_titel }}

{% if not store_app %}

{{ A.kommt }} {{ A.kommt_text }}

{% endif %}
{# ---------- Fragen aus der Booth (5 Einwände) ---------- #}

{{ A.faq_titel }}

{% for f, a in A.faq %}{# App-Store-Fassungen: ohne Frage 4 „Was kostet das?“ (Preis + Spenden, tests/test_store_app.py) #}{% if not (store_app and loop.index0 == 3) %}
{{ f }}

{{ t.earlybird.faq_kosten if earlybird and loop.index0 == 3 else a }}

{% endif %}{% endfor %}
{{ mehr(["loslegen", "export", "was-misst-timbre"]) }}
{# ---------- So läuft’s (Maintainer 24.10.2026): fünf Schritte direkt vor „Leg los.“ – nach den Einwänden (Fragen) steht der Weg, und der Schluss-Knopf folgt ohne Umweg. „Bald“-Teile tragen die Marke und stehen getrennt vom Vorhandenen. ---------- #}
{{ tagzeile(la.taglines.so) }}

{{ A.so_titel }}

{# Weg 1 → 5 bis zum Ziel (Image-Schema SOURCE–PATH–GOAL, Empfehlung 4): Wörter aus so_zeile, schmal nur die Ziffern #}
    {% for w in A.so_zeile.split(" → ") %}
  1. {{ w }}
  2. {% endfor %}
  3. {{ la.taglines.ziel }}
    {% for titel, text, bald in A.so %}
  1. {{ titel }}

    {{ t.earlybird.so_konto if neutral and loop.first else text }}

    {% if bald and not store_app %}

    {{ A.bald }} {{ bald }}

    {% endif %}
  2. {% endfor %}
{# ---------- Live-Demo oder Konto (Startseite „wie Apple“, Apple M11 abgewandelt): kostenlos in der Beta, ohne Preise und ohne Versprechen für später (F4: Satz gestrichen). Zeilen nur mit Live-Funktionen; kein Timbre-Speicher. ---------- #} {% if not nutzer %}

{{ t.earlybird.vergleich_titel if neutral else B.vergleich_titel }}

{{ t.earlybird.vergleich_lead if neutral else B.vergleich_lead }}

{% for k, u in B.spalten %}{% endfor %}{% for z, a, b in B.zeilen %}{% for w in (a, b) %}{% endfor %}{% endfor %}
{{ B.vergleich_name }}
{{ t.store.konto_kopf if neutral and loop.index == 2 else k }}{{ t.store.konto_unter if neutral and loop.index == 2 else u }}
{{ z }}{% if w == "ja" %}{{ B.ja }}{% elif w == "nein" %}{{ B.nein }}{% else %}{{ B.keine }}{% endif %}
{{ knoepfe() }}
{% endif %} {# ---------- Schlusskarte (Titel seit 11.11.2026 „Hör mal rein.“, Abgang „Der Rest ist Auflegen.“) ---------- #}

{{ L.akt5_titel }}

{{ A.schluss_lead if demo else A.schluss_lead_ohne_demo }}

{{ knoepfe() }} {% if not nutzer %}

{% if not neutral %}{{ L.von_hand }} {% endif %}{{ e.schon_konto }} {{ t.anmelden }}

{% endif %} {% if not store_app and paypal %}

{{ L.spenden_willkommen }} {{ t.spenden }}

{% endif %}

{{ L.wer }} {{ L.wer_text }}

{{ x.abschluss }}

{% endblock %} {% block skripte %} {% endblock %}