Skip to content

DoktorP3st/TAC-MP4-Studio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TAC MP4 Studio

Générateur de vidéos musicales réactives — local, rapide, sans abonnement.

Transforme n'importe quel fichier audio en vidéo visualisée frame par frame,
synchronisée beat par beat, exportée en qualité broadcast.

Version Python OpenCV CustomTkinter FFmpeg Platform


Pipeline

Audio ──► Analyse librosa ──► Features (bass / kick / rms / spec / raw)
                                        │
                               Rendu OpenCV + PIL  30 fps
                   ┌────────────────────┼────────────────────┐
                   │        Spectre     │     Atmosphère      │
                   │        Pochette    │     Particules      │
                   │        Texte       │     Vinyle          │
                   │        Fond        │     Glow / Vignette │
                   └────────────────────┴────────────────────┘
                                        │
                         FFmpeg ──► MP4  (NVENC GPU · libx264 CPU)

Fonctionnalités

Visuels

Composant Détail
10 styles de spectre Barres premium · Barres néon · Symétrie miroir · Cercle radial · Arc plasma · Onde plasma · Waveform miroir · Oscilloscope · Ligne fine · Cercle + barres
Spectre tricolor 3 bandes indépendantes (bass · mid · high) avec flash réactif aux kicks
7 effets atmosphère Aucune · Légère · Cinématique · Dense · Voiles · Lueur ambiante · Traces plasma
Particules 5 presets · cycle de vie · fade in/out · drift organique · bloom two-pass
Disque vinyle Rotatif · réactif aux beats · gradient radial + sillons colorisés · arc spéculaire · ombre dynamique kick · rim light aigus · label vignette · tailles disque/pochette indépendantes · 19 paramètres
Fond Photo floue · Dégradé · Image perso · Fond flottant · Micro-oscillation
Texte Artiste + Titre + Sous-titre · 12+ polices · taille · position XY · ombre paramétrable

Fond — 3 modes

Mode Comportement
📷 Photo floue La pochette album est utilisée comme fond, floutée et assombrie
🌈 Dégradé Fond uni deux couleurs, personnalisable via color pickers
📂 Image perso Image de fond indépendante de la pochette, avec flou et luminosité

Export — 4 modes

Mode Résolution Durée Usage
SHORT 1080 × 1920 ~1 min (centre audio) Reel · Story · Short
VERTICAL 1080 × 1920 Fichier entier Vertical complet
COMPLET 1920 × 1080 Fichier entier Publication finale
DUAL 1920×1080 + 1080×1920 Complet + ~1 min Les deux en un seul export
  • Encodage GPU automatique (NVIDIA NVENC) si disponible, sinon CPU libx264
  • Preview live 30 fps dans l'éditeur avant export
  • Historique des exports avec miniatures

Bibliothèque de presets

Preset Style Ambiance
Dark Premium Cercle radial Cinématique sombre
Clean White Barres premium Épuré lumineux
Neon Club Barres néon Club · Énergie
Reggae Smoke Arc plasma tricolor Rouge · Jaune · Vert
Chill Lo-Fi Onde plasma Doux · Relaxant
Short Vertical Symétrie miroir Format 9:16
Vinyl Classic Barres premium Vinyle noir · Dégradé
Vinyl Gold Cercle + barres Vinyle doré · Flottant
Acid Wave Oscilloscope Vert néon · Dégradé
Purple Dream Cercle radial Vinyle · Violet
Midnight Vinyl Symétrie miroir Vinyle · Bleu nuit
Neon Tricolor Barres néon Rose · Violet · Cyan
Sunrise Symétrie miroir Orange · Or

Les presets intégrés sont cachables individuellement et restaurables en un clic.
Les presets personnels sont sauvegardables, étoilables (★) et supprimables.


Démarrage rapide

Prérequis

Installer FFmpeg (étapes)
  1. Télécharger ffmpeg-release-essentials.zip
  2. Extraire dans C:\ffmpeg\
  3. Ajouter C:\ffmpeg\bin au PATH Windows :
    • DémarrerVariables d'environnementPath → Nouveau → C:\ffmpeg\bin
  4. Vérifier dans un terminal : ffmpeg -version

Installation

git clone https://github.com/DoktorP3st/TAC-MP4-Studio
cd TAC-MP4-Studio
pip install -r requirements.txt
python main.py

Ou via le lanceur Windows :

double-clic sur TAC.bat

Utilisation

1.  ✦ NOUVELLE CRÉATION
2.  Importer un fichier audio     MP3 · WAV · FLAC · OGG · M4A · AAC · WMA
3.  Importer une pochette         PNG · JPG · WEBP · BMP
4.  Régler les visuels
5.  🚀 Export → nommer → choisir le mode → GÉNÉRER

Onglets de l'éditeur

Onglet Contenu
Presets Bibliothèque unifiée intégrés + perso · favoris · sauvegarde · suppression
📸 Image Taille pochette · Réactivité · Vinyle · Fond (flou · luminosité · dégradé · image perso · oscillation)
Effets Particules · Atmosphère · Couleur atmosphère
📊 Spectre Style · Taille · Position · Couleur mono ou 3 bandes · Flash beats
📝 Texte Artiste · Titre · Sous-titre · Police · Taille · Position · Ombre
🚀 Export Dossier de sortie · Mode (grille 2×2) · Génération

Raccourcis clavier

Touche Action
Espace Play / Pause preview audio
R Recharger la preview
Échap Retour accueil

Architecture

TAC-MP4-Studio/
│
├── main.py                    Point d'entrée
├── TAC.bat                    Lanceur Windows
├── requirements.txt
│
├── img/                       Assets (logo, disque vinyle, icône)
├── fonts/                     Polices TTF incluses (Liberation, Carlito, Caladea)
│
└── app/
    ├── audio.py               Analyse audio — librosa · soundfile · scipy
    ├── config.py              Persistance JSON — AppData (écriture atomique)
    ├── errors.py              Exceptions métier — TACError et sous-classes
    ├── exporter.py            Pipeline export — rendu + FFmpeg
    ├── loading.py             Écran de chargement animé
    ├── logger.py              Logging centralisé — fichier rotatif + console
    ├── models.py              RenderSettings (dataclass)
    ├── particles.py           Particules · Fumée · Voiles · Plasma · Lueur
    ├── presets.py             Constantes · Presets visuels · Palettes
    ├── renderer.py            Rendu frame — image · texte · fond · vignette · glow
    ├── spectrum.py            10 styles de spectre + orbe audio
    ├── vinyl.py               Disque vinyle rotatif + pochette
    │
    └── ui/
        ├── app.py             App — état · lifecycle · navigation · éditeur
        ├── editor.py          EditorMixin — onglets + callbacks + gestion presets
        ├── pages.py           PagesMixin — accueil · historique · turbo
        ├── preview.py         PreviewMixin — preview live · waveform · audio
        └── widgets.py         Widgets réutilisables

Flux de dépendances

App
 ├─ EditorMixin · PagesMixin · PreviewMixin
 ├─ renderer ──► spectrum · vinyl · particles
 ├─ exporter ──► renderer · audio
 ├─ errors · logger
 └─ config · models · presets

Gestion des erreurs

Chaque composant utilise des exceptions métier typées. Les messages utilisateur sont affichés en popup, les détails techniques sont loggués dans :

%APPDATA%\DoktorP3st\TAC_MP4\logs\tac.log
Exception Déclencheur
AudioImportError Fichier absent · format invalide · lecture librosa échouée
ImageImportError Image absente · corrompue · format non supporté
FFmpegError FFmpeg introuvable · crash encodage
ExportError Dossier absent · permission refusée · export interrompu
ConfigError Config JSON corrompue · écriture impossible
PreviewError Crash preview · widget détruit · callback tardif
RenderError Dimensions invalides · erreur OpenCV frame
PresetError Preset invalide ou incomplet

Configuration

Sauvegarde automatique dans :

%APPDATA%\DoktorP3st\TAC_MP4\config.json

Dossier de sortie par défaut (modifiable dans l'app) :

%APPDATA%\DoktorP3st\TAC_MP4\Creations\

Packaging .exe

pip install pyinstaller

pyinstaller --onefile --windowed --name "TAC_MP4_Studio" ^
  --add-data "img;img" ^
  --add-data "fonts;fonts" ^
  --collect-data customtkinter ^
  --collect-data tkinterdnd2 ^
  --icon "img/icone.ico" ^
  main.py

Le .exe se trouve dans dist/TAC_MP4_Studio.exe.
FFmpeg doit être installé séparément sur la machine cible.


Stack technique

Lib Rôle
numpy Calcul vectorisé — audio et rendu
opencv-python Pipeline vidéo frame par frame
Pillow Traitement image · texte · polices
librosa Analyse audio (STFT · onset · RMS)
soundfile Chargement WAV/FLAC/OGG (fast path)
scipy Resampling audio · interpolation
customtkinter Interface dark theme moderne
tkinterdnd2 Drag & drop fichiers (optionnel)
FFmpeg Encodage MP4 (NVENC / libx264)

Changelog

v2.1 — Vinyle VYNLE Studio v2

  • Gradient radial sur le corps du disque (8 → 36 gris, teinte couleur dominante de la pochette)
  • Sillons concentriques colorisés (nombre, teinte, contraste réglables)
  • Arc spéculaire à position fixe — reflet de source de lumière naturelle, réactif aux basses
  • Ombre dynamique sous le disque, blur qui s'intensifie sur les kicks
  • Label vignette — bords assombris + anneau de séparation label/sillons
  • Rim light sur la pochette — liseré coloré (couleur dominante) réactif aux aigus
  • Tailles indépendantes — 2 sliders séparés : Disque / Pochette (non synchronisés)
  • 19 nouveaux paramètres dans l'onglet 📸 : Taille · Sillons · Label · Reflet · Ombre · Bordure

v2.0 — Refonte Onyx Studio + améliorations design

  • Nouvelle palette Onyx Studio : fonds indigo-noirs (#050507 → #1a1a24), accent indigo #6366f1
  • Séparateur header dégradé animé (ACCENT → BORDER → ACCENT horizontal)
  • Dot de statut animé : pulse indigo pendant les analyses et exports
  • Waveform colorisée : basses indigo, médiums violet clair, aigus blanc doux
  • Halo preview : cadre indigo qui s'allume autour de la preview quand elle est active
  • Carte succès export : overlay centré avec ✓, nom du fichier, bouton dossier, auto-fermeture 8s
  • Suppression du mode plein écran preview (bouton ⛶ et raccourci F11)
  • Fix freeze bouton 16:9/9:16 — double render loop résolu via after_cancel
  • Fix _stop_audio() non-bloquant — wait() déporté dans thread daemon

v1.9 — Bibliothèque de presets unifiée + export cards

  • Onglet ⚡ refactorisé : bibliothèque unifiée intégrés + perso dans une seule liste
  • Presets intégrés cachables individuellement (✕) et restaurables en un clic
  • Badge intégré / perso · bande couleur · favoris (★) remontent en tête
  • Modes d'export redessinés en grille 2×2 : icône + résolution + badge durée
  • Sélection d'export colorée par mode (chaque mode a sa propre couleur de bordure)

v1.8 — Texte amélioré

  • Taille de police ajustable par curseur
  • Sous-titre indépendant
  • Ombre paramétrable : intensité · couleur · décalage XY

v1.7 — Fond image personnalisé + robustesse

  • Nouveau mode fond Image perso : image de fond indépendante de la pochette album
  • Couche d'erreurs centralisée (errors.py) avec 8 exceptions métier typées
  • Logger rotatif (logger.py) — trace complète dans tac.log

v1.6 — Optimisations performances

  • Cache LRU sur compute_audio_features — refresh preview instantané
  • Cache disque vinyle (~12 ms/frame économisés)
  • Vectorisation numpy de l'oscilloscope
  • Redimensionnement preview BILINEAR (~2.5 ms/tick)

v1.5 — Spectre tricolor + réactivité beats

  • 3 couleurs indépendantes par bande (bass · mid · high)
  • Flash couleur synchronisé sur les kicks

v1.4 — Disque vinyle

  • Vinyle rotatif réactif aux beats
  • Choix image pochette ou noir classique

v1.3 — Fond dégradé + historique

  • Fond dégradé avec color pickers
  • Historique des exports avec miniatures
  • Mode plein écran preview

Développé par DoktorP3st

About

TAC MP4 Studio – Lightweight tool to create, edit or manage MP4 video content for streaming and content creation workflows

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages