Skip to content

Documentation

Sindy345 edited this page May 22, 2024 · 36 revisions

Cette page est dédiée à la description du fonctionnement de chaque fonctionnalité de SmartSounds.

🎵 Génération de musique

Accord et progression

chaque tonalité contient 7 accords basiques qui sont utilisés dans les progressions d'accords.
Une progression d'accords commence généralement par la tonique, suit une séquence d'accords, et se termine souvent par une cadence parfaite.

Rythme

Class Rythme génère des notes de différentes durées.
Les durées des notes possibles comprennent la ronde, qui dure quatre temps, la blanche, qui dure deux temps, la noire, qui dure un temps, et la croche, qui dure la moitié d'un temps.
Cette classe est utilisée pour créer une mélodie avec un simple accompagnement.

Modulation

La modulation dans une gamme majeure se fait vers la dominante (nous utilisons la tonalité relative la plus courante).
L'accord pivot est le sous-dominant. En ce qui concerne la modulation, elle commence et se termine par des accords pivots afin de la rendre fluide.
La tonique de la tonalité principale est le sous-dominant dans la tonalité relative.
La modulation dans une gamme mineure se fait vers la sixte (nous utilisons la tonalité relative la plus dramatique 😇).
Même idée qu'une gamme majeure

La vérification de la modulation est la même que le contrepoint

Contrepoint de première espèce 🎶

Le contrepoint de première espèce consiste à écrire une note contre chaque note de la mélodie principale ou cantus firmus
Le contrepoint qui sert à accompagner le cantus firmus suit approximativement les mêmes règles.
Une fois que ces deux voix sont bien structurées, corrige verticalement l'ensemble du contrepoint, où une note du cantus firmus est accompagnée d'une note du contrepoint.

Pour en savoir plus sur les règles: 👀

Mélodie 🎶

En utilisant la progression d'accords générée, le program choisit les notes en fonction de probabilités et du nombre de notes par mesure.
Le rythme généré est utilisé dans la classe Mélodie

Source d'inspiration

Celebrate Theory 9: Harmony. Theory Syllabus, 2016 Edition 📘
Celebrate Theory 10: Harmony & Counterpoint. Theory Syllabus, 2016 Edition 📘

🪟 Interface

Paramètres de la génération ⚙️

Choix de la tonalité

  • La liste des tonalités possible ne comprend que les tonalités qui existent.
  • Certaines tonalités sont forcées à Majeur ou Mineur : Ré♭ Maj, Fa♯ Min, Do♯ Min, Sol♭ Maj.
  • À partir des paramètres sélectionnés, détermine la tonalité utilisée pour la génération.

Nombre de mesures

  • Le nombre de mesures maximum, soit 32, est le nombre maximal de mesures qui rentrent sur une seule page de partition. Cela évite que le code plante.
  • Convertit le nombre choisi en nombre utilisable par la génération.

Titre de la partition

  • Obligatoire pour démarrer la génération.
  • Récupère le texte dans cette case pour en faire le titre de la Composition et des fichiers liés au programme (autant internes que générés par l’utilisateur).

Exportation ⏏️

Cliquer sur la touche située en bas au milieu permet d'exporter et d'enregistrer une copie de la partition dans le format choisi, récupéré de la boîte de choix en dessous.

  • Exportation PNG et PDF : Conversion de la composition en format utilisable par le module LilyPond, ajustement manuel de l'affichage et utilise LilyPond pour convertir le résultat dans le format désiré.
  • Exportation en MIDI : Utilise le module midi_file_out de mingus pour convertir la Composition en fichier MIDI.
  • Exportation en WAV : Utilise la conversion en MIDI, puis FluidSynth pour convertir le MIDI en WAV, puis supprime le MIDI.

Affichage de la partition 📄

Affiche la partition à la droite de l'interface.
Utilise LilyPond pour générer un PNG de l'image (voir ci-haut), convertit cette image en une image affichable par tkinter avec le module ImageTk de PIL, puis affiche l'image à l'aide du module PhotoImage de tkinter. Supprime le fichier de l'image par la suite.

Lecture de la partition ▶️

Convertit la partition en MIDI (voir ci-haut), puis utilise le module mixer de pygame pour jouer le fichier MIDI en question. Supprime le fichier MIDI par la suite.

Modification de la partition 📝

À chaque modification, rafraîchit l’interface de modification avec les changements effectués.

Augmentation ⬆️ et diminution ⬇️ de note

Augmente ou diminue la note d’un demi-ton.

  • Change la valeur de la note à la portée et mesure indiquée pour la note augmentée ou diminuée.
  • Dans le cas de double dièse, double bémol ou de demi-ton blanche à blanche, change la note pour la note sans altération.
  • Avant le changement, vérifie si la limite du clavier (8 octaves) est atteinte

Allongement de note ⤴️

Double la durée de la note sélectionnée.

  • L’allongement entraîne le raccourcissement de la ou des notes subséquentes dans la mesure.
  • Si l’allongement entraînerait le dépassement de la mesure, commence à absorber les notes précédant la note à allonger.
  • Cas particulier : Si plusieurs notes du même ton sont présentes dans la mesure, leur durée ne sera pas combinée au total, mais la modification essaiera de respecter le plus possible la durée originale et l’ordre de ces notes.
  • Compose une nouvelle mesure selon les notes originales et les nouvelles notes, puis remplace la mesure en modification par cette nouvelle mesure.

Rétrécissement de note ⤵️

Réduit de moitié la durée de la note sélectionnée.

  • Place toutes les notes précédent la note à rétrécir dans la nouvelle mesure.
  • Rétrécit la note à rétrécir et la duplique, afin de garder une mesure complète.
  • Ajoute les notes après la note à rétrécir dans la nouvelle mesure.
  • Remplace la mesure en modification par la nouvelle mesure.

Note suivante ⏭️ ou précédente ⏮️

Passe à la note suivante ou précédente dans la mesure choisie.

  • Si la limite de la mesure est dépassée après le changement, change de mesure.
  • Avertissement si l’on atteint le début ou la fin de la portée.

Changement de portée ↕️

Change la portée étant modifiée.

  • Si la portée change alors que des changements ne sont pas confirmés, les changements seront perdus.

Réinitialiser ↩️

Réinitialise la partition complète à son état avant l’ouverture de l’interface de modification.

  • À partir de la partition préouverture de l’interface, remplace la partition en modification par cette première, en remplaçant les métadonnées de la partition en modification sans la lier avec la partition originale.

Confirmer ✅

Confirme les changements faits dans la portée actuelle.

  • Renvoie au programme la partition modifiée, mais ne se sauvegarde comme partition par défaut que lors de la fermeture de l’interface de modification.