osutipe/pptx/presentation.md

3.5 KiB
Raw Permalink Blame History

title topic author theme header-includes
Construction automatique de niveaux pour le jeu de rythme osu! à partir de fichiers audio osu Aboujaib Alexandre - 28173 Copenhagen
\AtBeginDocument{\title[Construction automatique de niveaux pour osu!]{Construction automatique de niveaux pour le jeu de rythme osu! à partir de fichiers audio}}

Presentation du problème

Le jeu osu!

  • Jeu de rythme pour PC
  • Sorti le 16 septembre 2007, adapté d'un jeu pour DS
  • Environ 500 000 joueurs actifs
  • Se joue avec une souris/tablette et clavier logo{ width=50% } tablet{ width=40% }

Les beatmaps (niveaux)

::: columns :::: column Définition d'une beatmap{ width=110% } Beatmap en jeu :::: :::: column Liste de nouvelles beatmaps{ width=110% } ::::

:::

Exemples de cercles

Exemples de sliders

{ width=50% } { width=50% }

Formulation du problème

Nous nous proposons de créer deux programmes permettant au mieux, à partir dun fichier audio donné, de construire un niveau pour osu!.

Partie I : Analyse de musique

Approche en deux temps

Spécifications

Entrée : un fichier audio (format quelconque)

Sortie : des données relatives à la musique permettant le placement des notes :

(double | (double * double)) list

Processus retenu ici

Schéma du processus

Filtres physiques & Transformée de Fourier

::: columns :::: column Un exemple de filtre{ width=90% } :::: :::: column Illustration de la FFT :::: :::

Résultats

{ width=60% }

Résultat de l'extraction sur une musique (Bad Apple) pendant 15s

Résultats

Résultat de l'extraction sur la même musique pendant 120s

Résultats

Complexité

{ width=95% }

Limites, saturation et améliorations

Limites, saturation et améliorations

les fréquences ne sont pas correctement détéctées ici (car trop d'harmoniques)

Limites, saturation et améliorations

Limites, saturation et améliorations

une musique "dense" fait que la méthode d'extraction des amplitudes n'est pas précise

Partie II : placement spatial

Annexe : code Python

librairies utilisées ici

{ width=70% }

quelques fonctions utiles

parse music : extraction de la liste des amplitudes et du "sample rate"

::: columns :::: column { width=80% } :::: :::: column :::: :::

cleaning : retirer les fréquences trop basses et hautes

{ width=60% }

get amp distribution : usage de files de priorité pour extraire les maxima

{ width=50% }

get frequency distribution : fréquence maximale pour chaque point

{ width=60% }

get sliders : fusionner les notes trop proches en des 'sliders'

{ width=75% }

draw : afficher les résultats

{ width=60% }

quelques données de test

::: columns :::: column { width=75% } :::: :::: column :::: :::

interface