{% 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 %}{% 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) %}{% 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 %}{{ t.anmeldung_fehlgeschlagen }}
{% endif %} {% if start_hinweis in ("abgemeldet", "geloescht") %}{{ t.anm[start_hinweis] }}
{% endif %}{% endmacro %} {% if menue_c %}{% if usp.hoeren %}{{ A.player_claim }}{% else %}{{ A.eyebrow }}{% endif %}
{{ B.klang }}
{{ knoepfe(1) }}{{ B.usp }}
{% if usp.hoeren %}{{ A.player_claim }}{% else %}{{ A.eyebrow }}{% endif %}
{{ B.klang }}
{{ knoepfe() }} {{ huerde() }} {# Beispiel zur Klangfarbe (Maintainer 07.11.2026): zwei erfundene Tracks, gleiches Tempo und gleiche Tonart, anderer Klang #}{{ B.usp }}
{{ 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] }}
{{ t.ios_hinweis.text }}
{{ t.desktop_oe["start_" ~ dh] }}
{{ fo.eyebrow }}
{{ fo.start.lead }}
{{ fo.start.kopf }}
Liner Notes
{{ unter }}
{{ 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 }}
{{ A.player_lead }}
{{ txt }}
{{ A.player_ios }}
{% if demo %}{{ weiter(A.player_demo, "/demo") }}{% endif %}{{ S.loesung }}
{{ S.beta_tag }} {{ S.beta }}
{{ S.option }}
{{ A.vertrauen_lead }}
{{ V[0][1] if speicher_weg else L.files_text }}
{{ U.s5_links }}{{ U.s5_rechts }}
{{ U.s5_satz }}
{{ V[1][1] if usp.hoeren else A.vertrauen_ohne[1] }}
{% if usp.hoeren %}{{ U.vf_klein }}{{ U.ds_klein }}{{ U.menge_vf }}{{ U.menge_ds }}
{{ U.menge }}
{{ L.ohne_speicher_text }}
{{ A.beispiel }}
{% endif %}{{ V[2][1] }}
{{ ls.katalog_gesamt }} {{ t.kz_katalog }}
{% endif %}{{ txt }}
{{ A.kommt }} {{ A.kommt_text }}
{% endif %}{{ t.earlybird.faq_kosten if earlybird and loop.index0 == 3 else a }}
{{ t.earlybird.so_konto if neutral and loop.first else text }}
{% if bald and not store_app %}{{ A.bald }} {{ bald }}
{% endif %}{{ t.earlybird.vergleich_lead if neutral else B.vergleich_lead }}
| {% for k, u in B.spalten %} | {{ t.store.konto_kopf if neutral and loop.index == 2 else k }}{{ t.store.konto_unter if neutral and loop.index == 2 else u }} | {% endfor %}
|---|---|
| {{ z }} | {% for w in (a, b) %}{% if w == "ja" %}{% elif w == "nein" %}{% else %}{{ B.keine }}{% endif %} | {% endfor %}
{{ 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 }}