Aller au contenu
Module 6 : Messages, refrains et fonctions personnalisées

Action : Modèles autochtones et connaissances musicales

Activité 2 : Découverte de la galerie des modèles autochtones (20 minutes)

Nous allons maintenant explorer tout un ensemble de modèles autochtones qui défient les obstacles, luttent pour la justice raciale, et bien plus encore!

Les informations à propos des modèles se trouvent dans la section Ressources. Mettez-les à la disposition de vos élèves comme moyen de découvrir la galerie en les imprimant et en les affichant dans la salle.

Demandez aux élèves de réfléchir ensemble aux questions suivantes :

  • Pourquoi la personne que vous avez étudiée est-elle considérée comme un.e entrepreneur.e, un.e activiste ou les deux?
  • Selon vous, dans quel(s) état(s) d’esprit est cette personne, et quelle(s) conviction(s) a-t-elle?
  • Qu’est-ce qui vous a paru le plus intéressant chez cet.te entrepreneur.e?
  • Si votre entrepreneur·se avait une chanson-thème, quel tempo musical lui donneriez-vous? Rapide ou lent? Pourquoi?

Afin de favoriser l’équité et de susciter un changement pour les peuples autochtones au sein de nos communautés, nous devons tous et toutes en apprendre davantage sur les peuples autochtones et sur le travail incroyable qu’ils accomplissent pour provoquer le changement.

Envisagez d'effectuer l'approfondissement D (facultatif) pour réaliser un cercle de partage

Activité 3 : Apprendre les mesures (10 minutes)

Cette activité est tirée de 26.6 : Définir des mesures dans le programme EarSketch

On parle souvent de construire la chanson par blocs de 4 et de 8. Pourquoi? En musique, les temps sont regroupés en groupes de 4. Chaque groupe de 4 temps est appelé une mesure (ou note). Chaque temps est une noire dans un morceau de musique. Une mesure comporte 4 noires ou 4 temps.

Continuez avec le code que vous aviez à la fin du Module 4 ou créez un nouveau script en utilisant le code suivant :

# description: 

from earsketch import *

setTempo(120)

# BANQUE DE SONS

#batteries

batterie = SAMIAN_PEUP_BEAT_FULL

#basse

basse = TFLAMES_OC_BASS_CHOR

#flute

flute = SAMIAN_PEUP_THEME_FLUTE

#instruments a corde

corde = SAMIAN_PEUP_THEME_STRINGS_3

#vocals

vocal1 = TFLAMES_OC_VOX_BKUP_CHOR_1

#intro

fitMedia(batterie,1,1,5)

fitMedia(basse,2,1,5)

fitMedia(flute,3,1,5)

fitMedia(corde,4,1,5)

fitMedia(vocal1,5,1,5)

  1. EXECUTER (RUN) pour voir les extraits sonores dans le STATION DE TRAVAIL AUDIONUMERIQUE (DIGITAL AUDIO WORKSTATION)
  2. Regardez en haut de votre STATION DE TRAVAILAUDIONUMERIQUE (DIGITAL AUDIO WORKSTATION).

La rangée du haut mesure le temps en secondes

La ligne suivante montre les marqueurs de mesure.

Changez le tempo!

  1. Combien de secondes y a-t-il dans chaque mesure sur votre station audionumérique?
  2. Le nombre de secondes par mesure dépendra de votre tempo. Une mesure (dans EarSketch) aura toujours 4 battements, mais le temps nécessaire pour jouer ces quatre battements changera en fonction du tempo.
  3. Si votre tempo est de 120 battements par minute et il y a 4 battements par mesure. Il y aura 30 mesures par minute (120 battements par minute / 4 battements par mesure).  Si une minute comporte 30 mesures, chaque mesure dure 2 secondes (60 secondes / 30 mesures).
  4. Modifiez les battements par minutes (tempo) à l'aide de la fonction setTempo() et remarquez comment le nombre de secondes change pour chaque mesure.
  5. Remettez les battements par minute (tempo) a 120  setTempo (120) pendant que nous continuons à travailler sur notre chanson.

Activité 4: Découverte des mesures de début et de fin décalées (20 minutes)

Tutoriels vidéo associés 

  1. EXECUTEZ (RUN) votre code et Jouez (Play) votre chanson de l'activité 3. Remarquez comment tous les extraits sonores jouent en même temps. Cela peut paraître génial ou terrible. Nous avons besoin de pouvoir démarrer et arrêter les extraits sonores à différents moments de la chanson.
  2. N’oubliez pas fitMedia() attend les paramètres suivants:
  • sound (l’extrait sonore à jouer)
  • track (quel numéro de piste placer l’extrait sonore)
  • start (la mesure à laquelle l’extrait sonore commence)
  • end (la mesure à laquelle l’extrait sonore se termine). 

  1. Si nous modifions les paramètres start et end, nous pouvons faire démarrer et arrêter les extraits sonores à différentes parties de la chanson.
  2. Choisissez un ou plusieurs extraits sonores pour commencer à la mesure 1 et terminer à la mesure 3
  3. Choisissez un ou plusieurs extraits sonores pour commencer à la mesure 3 et terminer à la mesure 5
  4. Choisissez un ou plusieurs extraits sonores pour commencer à la mesure 1 et terminer à la mesure 5
  5. EXECUTEZ (RUN) votre code pour voir les extraits sonores dans le STATION DE TRAVAILAUDIONUMERIQUE (DIGITAL AUDIO WORKSTATION).  Les extraits sonores commencent et terminent à différents endroits de la chronologie
  6. Jouez (Play) la chanson, entendez-vous quand un extrait sonore se termine ? Pouvez-vous entendre quand un autre extrait sonore commence ?
  7. Changez les mesures de début et de fin pour vos extraits sonores jusqu'à ce que vous ayez une intro de chanson que vous aimez.
Staggered Stop and End Measures
Votre code devrait ressembler à ce qui suit:

# description: 

from earsketch import *

setTempo(120)

# BANQUE DE SONS

#batteries

batterie = SAMIAN_PEUP_BEAT_FULL

#basse

basse = TFLAMES_OC_BASS_CHOR

#flute

flute = SAMIAN_PEUP_THEME_FLUTE

#instruments a corde

corde = SAMIAN_PEUP_THEME_STRINGS_3

#vocals

vocal1 = TFLAMES_OC_VOX_BKUP_CHOR_1


#intro

fitMedia(batterie,1,1,5)

fitMedia(basse,2,1,5)

fitMedia(flute,3,1,3)

fitMedia(corde,4,1,3)

fitMedia(vocal1,5,3,5)

Activité 5 : Introduction aux fonctions personnalisées (20 minutes) 

Dans un module précédent, nous avons examiné la STRUCTURE DE LA CHANSON avec des modèles tels que ABAB. Il est temps de transformer votre code en chanson. Comment faire cela sans écrire des lignes et des lignes de code? Imaginez que vous voulez coder une chanson de 2 minutes — vous pourriez vous retrouver avec 150 lignes de code! Wouah, c’est épuisant rien que d’y penser!

Nous allons utiliser des fonctions personnalisées pour définir les sections de notre chanson. Il y a une série d’étapes qui sont résumées dans une commande ou une fonction, Refrain ou Couplet, qui auront une série d’extraits sonores qu’ils joueront pendant un temps assigné.

Regardez cette vidéo sur la structure de la chanson, « Song Structure », pour mieux visualiser le processus.

Regardez ces deux exemples de code ou dans ce tutoriel EarSketch dans le programme : 27.6 : Writing Custom Functions (Écrire des fonctions personnalisées).

Les deux ensembles de code sont corrects et tous les deux joueront la même chanson.

Code sans fonctions personnalisées

# intro

fitMedia(batterie,1,1,5)

fitMedia(basse,2,1,5)

fitMedia(flute,3,1,3)

fitMedia(corde,4,1,3)

fitMedia(vocal1,5,3,5)

# refrain

fitMedia(JWOLF_COTG_BEAT_FULL,6,5,9)

fitMedia(TFLAMES_OC_VOX_BKUP_CHOR_1,7,5,9)

Code avec des fonctions personnalisées

# Definition de la fonction intro

def intro():

    fitMedia(batterie,1,1,5)

    fitMedia(basse,2,1,5)

    fitMedia(flute,3,1,3)

    fitMedia(corde,4,1,3)

    fitMedia(vocal1,5,3,5)

# Definition de la fonction refrain

def refrain():

    fitMedia(JWOLF_COTG_BEAT_FULL,6,9,11)

    fitMedia(TFLAMES_OC_VOX_BKUP_CHOR_1,7,9,11)

# section musique

intro()

refrain()

Quel code est le plus facile à lire et à suivre? 

Quel code sera plus facile à modifier si vous souhaitez apporter une modification?

À première vue, les avantages des fonctions ne sont pas clairs, mais plus votre code devient complexe, plus les avantages de l'utilisation de fonctions personnalisées sont importants.

Apprendre à écrire un code efficace et logique fait partie de l’apprentissage du métier de programmeur·se.

Qu’est-ce qu’une fonction personnalisée?

Écrit par le programmeur ou la programmeuse pour accomplir une tâche spécifique, souvent une tâche qui doit être effectuée plus d’une fois. Les fonctions prennent de nombreuses petites tâches répétitives et les assignent à un nom personnalisé.

Écrivez votre propre fonction personnalisée

Tutoriels vidéo associés 

Ajout de fonctions sans paramètres (Adding functions with no parameters)

  1. Dans votre banque de sons, ajoutez deux nouvelles variables pour contenir un extrait sonore de voix et de batterie supplémentaire (vous pouvez utiliser les extraits répertoriés ci-dessous ou choisir vos propres sons.) Nous utiliserons ces nouveaux sons pour ajouter un refrain (chorus) à notre chanson.

# BANQUE DE SONS

# Sons de refrain

batterieRefrain = JWOLF_COTG_BEAT_FULL

vocalRefrain = TFLAMES_OC_VOX_BKUP_CHOR_1

  1. Après votre commande setTempo(), ajoutez un commentaire pour indiquer que vous créez une fonction pour le  refrain (chorus)

# Fonction Refrain

  1. Sur la ligne suivante, utilisez la commande def pour définir une fonction avec le nom de refrain (chorus), n'oubliez pas les deux points après le nom de la fonction.

def refrain():

  1. Sur la ligne suivante, ajoutez en retrait vos nouveaux extraits sonores (ou tout autre son de votre choix dans le refrain) à la fonction refrain (chorus) en utilisant fitMedia(). 

REMARQUE: Pour que Python sache quels commandes font partie de la fonction, vous DEVEZ mettre en retrait les commandes fitMedia() ! Les commandes en retrait font partie de la fonction. Dès que Python voit une commande qui n'est pas en retrait, il sait que ce n’est plus une commande qui fait partie de la fonction.

N’oubliez pas fitMedia() attend les paramètres suivants:

  • sound (l’extrait sonore à jouer)
  • track (quel numéro de piste placer l’extrait sonore)
  • start (la mesure à laquelle l’extrait sonore commence)
  • end (la mesure à laquelle l’extrait sonore se termine). 


Utilisez des numéros de piste (track)  pour lesquels aucun extrait sonore n’est déjà diffusé. 

Spécifiez les mesures de début (start)  et de fin (end) qui joueront le refrain APRÈS la fin de la lecture des extraits sonores existants de votre chanson qui composent l'intro. J'ajoute mon refrain une fois mon intro terminée, en commençant à la mesure 5 et en terminant à la mesure 9.

La fonction terminée ressemblera à ce qui suit :

# Fonction Refrain

def refrain():

    fitMedia(batterieRefrain,6,5,9)

    fitMedia(vocalRefrain,7,5,9)

  1. EXECUTEZ (RUN) votre code. Regardez les pistes 6 et 7, mesures 5 à 8. Pourquoi ne voyez-vous pas le nouveau refrain que vous venez de créer ?

Vous ne pouvez pas voir les nouveaux extraits sonores car la définition d'une fonction n'exécute pas le code à l'intérieur de la fonction. Le code est exécuté lorsque vous appelez la fonction.

  1. Ajoutez une ligne de code après les instructions fitMedia() de votre #intro pour appeler la fonction refrain(), n'oubliez pas d'ajouter un commentaire pour garder une trace de ce que fait le code

# Jouez le refrain

refrain()

  1. EXECUTEZ (RUN) votre code de nouveau et Jouer (play) votre chanson pour entendre le refrain.
Le code terminé devrait ressembler à ce qui suit

# description: 

from earsketch import *

setTempo(120)

# BANQUE DE SONS

#batteries

batterie = SAMIAN_PEUP_BEAT_FULL

#basse

basse = TFLAMES_OC_BASS_CHOR

#flute

flute = SAMIAN_PEUP_THEME_FLUTE

#instruments a corde

corde = SAMIAN_PEUP_THEME_STRINGS_3

#vocals

vocal1 = TFLAMES_OC_VOX_BKUP_CHOR_1

# Sons de refrain

batterieRefrain = JWOLF_COTG_BEAT_FULL

vocalRefrain = TFLAMES_OC_VOX_BKUP_CHOR_1

# Fonction Refrain

def refrain():

    fitMedia(batterieRefrain,6,5,9)

    fitMedia(vocalRefrain,7,5,9)

# SECTION MUSIQUE

# ajouter l’intro

fitMedia(batterie,1,1,5)

fitMedia(basse,2,1,5)

fitMedia(flute,3,1,3)

fitMedia(corde,4,1,3)

fitMedia(vocal1,5,3,5)

# ajouter le refrain

refrain()

Vous pouvez créer des fonctions pour chaque section de votre chanson, une pour jouer les sons de votre intro, une pour jouer les sons de votre premier couplet, une pour jouer le refrain, et ainsi de suite. Cela aide à organiser votre code.

Vous pouvez créer une chanson entière sans utiliser de fonctions personnalisées ! Mais comme Ta Voix est Puissante est un concours de codage et de musique, vous devez créer au moins deux fonctions personnalisées si vous souhaitez participer au concours. Ainsi, lorsque vous créez votre chanson, vous souhaiterez peut-être créer des fonctions pour chaque section de la chanson : Intro, couplet1, refrain1, couplet2, refrain2, Outro.

DÉFI BONUS OPTIONNEL: Créez une fonction personnalisée pour votre introduction

Pouvez-vous déplacer les sons de l'introduction de votre chanson dans une fonction appelée intro() 

  1. Créez une nouvelle fonction appelée intro() 
  2. Déplacez les commandes fitMedia() pour les extraits sonores joués au début de votre chanson dans la fonction intro()
  3. Appelez la fonction intro()dans votre section #musique
  4. EXECUTEZ (RUN) votre code et jouez (play) votre chanson. Est-ce que ça a marché ?

VOUS RAPPELEZ VOUS DE

  • Mettre le « : » après la définition de la fonction ?
  • Indenter les commandes qui font partie de la fonction ?
  • Appelez votre fonction pour que les commandes de la fonction s'exécutent ?
  • Ajouter des commentaires pour que quelqu'un qui lit votre code le comprenne ?


Diviser chaque section de ma chanson en différentes fonctions permet de suivre plus facilement la structure de la chanson et la structure de mon code.