name: emoji-party description: Erstelle ein beat-synchronisiertes Emoji-Welt-Lyric-Musikvideo in Blender Grease Pencil aus jedem Song und jedem Genre: Emoji-Charaktere mit Style, eine Welt und Palette pro Szene, animierte Lyrics, vollständiger Render.
Emoji Party (beat-synchronisiertes Emoji-Welt-Lyric-Video, Blender Grease Pencil)
Der Benutzer gibt einen Song in einem beliebigen Genre (Audio-Datei) und dessen Lyrics an, oder keine Lyrics für ein Instrumental. Du lieferst ein vollständiges 1080p-Video: ein erkennbares Emoji-Gesicht pro Abschnitt, jedes in seiner eigenen Welt und Farbschema, das etwas Nachvollziehbares tut, auf den Beat tanzt, mit den Lyrics, die auf dem Bildschirm erscheinen und mit dem Bass wackeln. Bewährt mit "Mr Me" (150 BPM, 4:12, 15 Szenen, ~840 Objekte, gerendert in etwa 10 Minuten).
0. Kreativregeln (vom Benutzer gelernt)
- Hauptfiguren sind Emoji-Gesichter, die eine Emotion tragen, ein anderes pro Szene (ängstlich, Grinsen, bandagiert, keuchend, weinend-lachend, pssst, sprachlos, Nerd, wütend, heiß, Sternenaugen, Reißverschluss-Mund, Geld-Mund, Heiligenschein, Party). Objekte (Kerze, Kompass, Diamant) sind nur Requisiten, niemals die Hauptfigur.
- Style für jede Hauptfigur: jede Hauptfigur trägt etwas. Für Rap ist das eine Kette mit Anhänger, Grills, Gesichtstattoos, Ohrringe und ein Hut (Cap, Durag, Bucket, Beanie, Krone); für andere Genres siehe Abschnitt 0b.
- Nachvollziehbare Aktion pro Szene: Autofahren, Fahrrad fahren, eine Prüfung schreiben, mit Handys filmen, angeln, DJ spielen, Gewichte heben, Selfie, Geld werfen.
- Eine Palette pro Szene, gewählt aus der Stimmung des Liedtextes. Das Lyric-Styling bleibt über die Szenen hinweg konstant, damit das Video als einheitliches Stück wirkt.
- Eine wiederkehrende Hauptfigur (Sonnenbrillen-Emoji) besitzt den Refrain und kehrt im letzten Refrain mit der gesamten Besetzung dahinter zurück.
- Zeichne originelle Emoji-ähnliche Charaktere. Kopiere keinen Emoji-Satz eines Anbieters.
- Zeige zuerst eine einzelne Testszenen (oder 3 Palettenoptionen) und hole ein OK, bevor du alles baust. Sende Vorschaustandbilder mit SendUserFile.
0b. An die Musik anpassen (jedes Genre)
Lies den Track, bevor du etwas auswählst. Genre ist eine Eingabe, keine Annahme.
- Tempobestimmung: Suche 60-180 BPM, löse dann Halb-/Doppelzeit basierend darauf, wo die Snare oder Clap liegt (Beat 2 und 4). Trap und Hip-Hop lesen sich oft als 140-150, fühlen sich aber halb so schnell an; Drum and Bass liest 170+, kann aber mit halber Geschwindigkeit animiert werden. Speichere sowohl
FPB(gefühlter Beat) als auch den Grid-Beat. - Taktart: Standard 4 Beats pro Takt; mache Beats-pro-Takt zu einem Parameter (3 für Walzer, 6 für 6/8) und verwende ihn in
FR(takt)und den Taktlängen-Ausdrücken. - Tempodrift (Live-Bands, ältere Aufnahmen): Wenn der Kammfilter-Score schwach ist oder driftet, verwende eine getrackte Beat-Liste und weise jedem Beat eine
beat_phase-Eigenschaft zu, anstelle der Ausdrücke mit fester Periode. - Bildrate: Wähle die fps, die ganze Frames pro gefühltem Beat ergibt; ansonsten 25 und akzeptiere gebrochene Beats.
- Bewegung nach Gefühl:
- Four-on-the-Floor (House, Techno, Disco, Amapiano): gleichmäßiger Hüpfer auf jedem Beat, stetiges Wiegen.
- Half-Time (Trap, Hip-Hop, Drill, Dubstep): großer Einschlag auf Beat 1, zurücklehnen auf 3, kleine HiHat-Details.
- Off-Beat (Reggae, Dancehall, Afrobeats, Ska): Hüpfen auf OFFB, Hüften schwingen mit einer 2-Beat-Periode.
- Schnell (Drum and Bass, Punk, Hardcore): halb so schneller Körper, volle Geschwindigkeit bei Händen und Requisiten.
- Langsam (Ballade, R&B, Soul, Lo-Fi): nur wiegen, lange Perioden, wenig Quetschen, langsame Lyric-Fades statt Poppen.
- Swing/Triple (Jazz, Blues, Shuffle): Verzögere den Off-Beat auf zwei Drittel des Beats.
- Schnittrate nach Energie: 8-16 Takte pro Szene in ruhigen Passagen, 4 Takte in Refrains, 1-2 Takte in Drops und Höhepunkten.
- Look nach Genre und Lyrics: Wähle Paletten, Welten, Hüte und Accessoires, die zur Musik gehören (Ketten und Grills für Rap, Kopfhörer und Visiere für Dance-Musik, Cowboyhut für Country, Blumen für Folk, Nieten für Rock). Behalte immer das Emoji-Gesicht als Hauptfigur und halte die Style-Regel ein: jede Hauptfigur trägt etwas.
- Lyric-Stil: harte Pops und Shake für basslastige Tracks; sanfter Slide und Fade für ruhige Tracks; größere Schrift für Gesänge und Hooks. Die Sprache folgt den Lyrics wie vorgegeben (dialektale oder Pidgin-Formen niemals "korrigieren").
- Instrumentals: keine Lyric-Ebene; verwende den Titel, Abschnittsnamen oder kurze Stimmungswörter bei Drops und lass Requisiten die Geschichte erzählen.
- Bestätige die Interpretation mit dem Benutzer in einer Zeile (BPM, Gefühl, Abschnittszuordnung), bevor du baust.
1. Den Song analysieren (Workspace)
pip install --break-system-packages -q librosa, dann eine Kammfilter-Suche über niederfrequenten Fluss (<130 Hz) über einen BPM-Bereich ergibt exakten BPM und Offset des ersten Beats; drucke pro Takt Kick (K) und Lautstärke (R), um Intro, Groove, Drops und Dropouts zu sehen. Vertraue nicht dem im Prompt geschriebenen BPM (der Suno-Prompt sagte 140; der Track hatte 150).- Verwende 25 fps, wenn es ganze Frames pro Beat ergibt (120, 125, 150 BPM tun das).
- Lyric-Timings: Sprachmodelle können im Workspace nicht heruntergeladen werden, und Uploads zu Descript-Speichern sind von der Shell aus blockiert. Rufe
Descript file_upload_uiauf, bitte den Benutzer, das Audio abzulegen,wait_for_job, dannexport_transcriptals srt. Erwarte zeilenweises Timing für klare Rap/gesprochene Teile und blockweises (oder fehlendes) Timing für dichte oder gesungene Teile; ordne die echten Lyrics des Benutzers diesen Zeitstempeln manuell zu und schätze den Rest gleichmäßig über die Takte auf. Teile dem Benutzer mit, welche Abschnitte geschätzt sind. - Schreibe eine Szenetabelle: Abschnitt, Starttakt, Emoji, Welt, Aktion, Palette. Szenengrenzen liegen auf Takten (halbe Takte sind in Ordnung). Füge instrumentale Szenen (Titelkarte, Drop) hinzu, wo die Stimme leise ist.
2. Blender-Setup
- Überprüfe die Verbindung mit
blender__get_scene_info. Frage nach, bevor du eine gespeicherte Datei löschst. Speichere frühzeitig (frage nach einem Ordner; Blenders Python kann die Benutzerordner direkt lesen, also weise den Soundstrip direkt auf das Audio an Ort und Stelle zu, anstatt es zu kopieren). - Flaches 2D: orthografische Kamera bei y=-20, blickt entlang +Y,
ortho_scale16 (Ansicht ist 16 x 9 Einheiten). Alles wird in der XZ-Ebene gezeichnet; Tiefe ist das Y des Objekts (größeres Y ist weiter hinten). - Jede Szene lebt bei X = Index * 40 in ihrer eigenen Collection
S01_...; die Kamera springt zwischen ihnen mit LINEAR-Keyframes auf der X-Position (plus einer kleinen Drift innerhalb jeder Szene) und einem Timeline-Marker pro Schnitt. - Farbe:
view_transform='Standard', Look None. Speichere wiederverwendbaren Code inbpy.data.textsund führe ihn am Anfang jedes Aufrufs mitexecaus.
3. Grease Pencil-Regeln, die Zeit kosten (Blender 5.x)
- Daten sind
bpy.data.grease_pencils;layer.frames.new(1).drawing;drawing.add_strokes([n]); setzepoint.position=(x,0,z)undpoint.radius; rufedrawing.tag_positions_changed()auf. - Flächen werden nicht gerendert, es sei denn, jeder gefüllte Stroke hat eine nicht-null
fill_id. Setzestroke.fill_id = eindeutige Zahlfür Flächen und 0 für Linien, undstroke.hide_stroke = Truebei reinen Flächen-Strokes. Gib allen Schleifen einer Schriftglyphe dieselbefill_id, damit Buchstabenlöcher ausgeschnitten werden. - Materialien:
bpy.data.materials.create_gpencil_data(m);show_fill/show_stroke; radialer Verlauf viafill_style='GRADIENT'. Materialfarben sind linear: konvertiere Hex mit(v/255)**2.2, sonst sieht alles ausgewaschen aus. layer.use_lights = Falseauf jeder Ebene.- Schrift-/Kurventext-Objekte werden in Rendern hinter Grease Pencil versteckt. Konvertiere Text zu GP: erstelle eine temporäre FONT-Kurve,
evaluated_get(dg).to_curve(dg), sampel Bezier-Splines mitmathutils.geometry.interpolate_bezier, zeichne die Schleifen als GP-Strokes (zuerst Umriss-Strokes, dann Flächen). Erledige die temporäre Arbeit in einer separaten Scratch-Szene, damit der Depsgraph der großen Szene nicht für jedes Wort neu ausgewertet wird (486 Wörter brauchten so 3 s). - Transluzente Flächen über anderen transluzenten Flächen sehen matschig aus; bevorzuge undurchsichtige dunklere Farben für Strahlen und Glühen.
- Treiber: Auto-Run Python ist normalerweise aus, daher muss jeder Treiber ein einfacher Ausdruck sein (
sin abs exp fmod min max pi frame); behauptedriver.is_simple_expression.
4. Beat-Ausdrücke (F0 = Frame des ersten Beats, FPB = Frames pro Beat)
PULSE = exp(-fmod(frame-F0+BIG, FPB)/(FPB*0.25)) # 1 auf jedem Beat, klingt ab
OFFP = dasselbe, um einen halben Beat verschoben # Off-Beat
HALF = exp(-fmod(frame-F0+BIG, 2*FPB)/(FPB*0.45)) # alle 2 Beats
OFFB = HALF um einen Beat verschoben
SWAY(per,ph) = sin(pi*(frame-F0)/(FPB*per)+ph)
FR(takt) = F0 + round(4*FPB*takt)
dance(obj): Position Z += HüpferPULSE, Skalierung X (1+QuetschenPULSE), Skalierung Z (1-QuetschenPULSE), Rotation Y += WiegenSWAY. Wechsle PULSE und OFFP zwischen Nachbarn ab. Hände zucken auf HALF/OFFB. Kamera ortho_scale = 16*(1 - Zoom*PULSE) mit einer getregen zoom-Custom-Property (größer in Drops und Refrains).
5. Hilfsbibliothek zum einmaligen Bauen
- Formen:
ell,rect,rrect,star,drop;F(Füllung),S(Linie),P(Füllung + Tintenumriss). emo(C,name,x,z,r,mood): Schatten, gelber Farbverlaufskreis, Glanz, dann Merkmale pro Stimmung. Speichereo["r"]=r, damit Accessoires skaliert werden.- Swag:
chain(o,pendant,ice),grills(o),tattoo(o,kind,side)(Träne, Kreuz, Stern, Linien, Text),earring(o,side),hat(o,kind,col,col2,tilt)als Kind-Objekt,headphones(o),hand(...)mit Ringen und optionaler Uhr. - Welt:
sky(C,X,top,mid,bot)als 16 Farbbänder,ground,citySkyline mit beleuchteten Fenstern,wheelmit einem Rotationstreiber,phone. preview(shots)rendert Standbilder mit 33% nach /tmp undmontage(pfade)kachelt sie mit numpy zu einem Bild; betrachte es mitblender__look(image=path). Überprüfe jede Szene auf diese Weise vor dem Rendern.
6. Lyric-Ebene
- Daten: Liste von
(art, t0, t1, text)mit ArtenLZeile,AAd-lib,HHook-Wort,Bgroßer Ruf. Speichere sie als JSON in einem Textblock. L: Teile in Wörter auf, umbreche auf 14,4 Einheiten Breite bei Größe 0,78 mit einem Abstand von 0,44, oben im Bild. Jedes Wort ist sein eigenes GP-Objekt, das beistart + i*schritterscheint (Schritt aus Zeilendauer, 2 bis 8 Frames) und zu Beginn der nächsten Zeile oder beim Szenenschnitt ausgeblendet wird.- Pro-Wort-Treiber:
scale = vis * pop * (1+0.10*PULSE)wobeiviseine 2-Frame-Ein-/Ausblendrampe undpopein 6-Frame-Überschwinger ist;Position X/Z += shake*sin(frame*k+ph)*PULSEfür den Bass-Vibrato. A: pink, geneigt, wechselnd links und rechts.H: gelb, unten, fällt von oben ein.B: gold, Größe 1,5, oben.- Lege die Lyric-Objekte jeder Szene in
LYR_Sxx-Collections, damit Render-Chunks den Rest ausblenden können.
7. Rendern (schneller Pfad)
- Ein Vollbild-Render dauert ~1,3 s/Frame, weil jedes GP-Objekt ausgewertet wird. Rendere einen Chunk pro Szene parallel stattdessen: ein Hintergrund-Blender pro Szene, der
hide_renderfür jede Collection außerSxx_,LYR_SxxundCAMERAsetzt, den Soundstrip entfernt und H264 ohne Audio schreibt. Starte 5 gleichzeitig aus einem abgekoppelten Runner-Prozess (start_new_session=True), der inrender_log.txtprotokolliert. - Dann montiere in einer leeren Factory-Szene mit Filmstreifen am Startframe jeder Szene plus dem Soundstrip, H264 + AAC. Setze die View-Transform dieser Szene auf Standard, sonst kommt das endgültige Video dunkel und entsättigt heraus (Factory-Standard ist AgX).
- Lösche Chunks erst, wenn die endgültige Datei verifiziert ist.
- Verifiziere: Lade die mp4 als Movieclip (Frame-Anzahl, fps, Größe) und als Sound (Rate, Kanäle); ziehe ~16 Frames durch eine temporäre Sequencer-Szene mit Standard-View-Transform in ein Kontaktblatt und betrachte es. Der
bgl-Add-on-Traceback in Hintergrundlogs ist harmlos. - Warte nicht in einer engen Schleife; schlafe ~5 Minuten zwischen den Überprüfungen und teile dem Benutzer die erwartete Zeit mit.
8. Liefern
- Sage, wo die mp4 und die .blend-Datei sind (normale Worte plus ein computer://-Link) und sende das Kontaktblatt.
- Gib an, was nicht überprüft wurde (du hast Standbilder gesehen, keine Wiedergabe) und welche Lyric-Abschnitte geschätzt sind.
- Biete Korrekturen nach Szene oder nach Lyric-Zeile an; Timeline-Marker sind die Schnitte und das Lyric-JSON enthält die Timings.