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.

Changez le tempo!

  1. Regardez votre station de travail audionumérique. Vous verrez que la ligne du haut mesure le temps en secondes et la ligne du bas indique les marqueurs de mesure.
    Combien de secondes y a-t-il dans chaque mesure sur votre station audionumérique? La réponse dépend de votre tempo. Si vous réglez votre tempo sur 120 bpm, vous devriez voir 2 secondes pour chaque mesure.
  2. Essayez de modifier votre tempo en utilisant la fonction setTempo() et voyez comment le nombre de secondes change pour chaque mesure.
    Une mesure (dans EarSketch) aura toujours 4 temps, mais le temps nécessaire pour jouer ces quatre temps changera en fonction du tempo.
  3. OK! Remplacez-le par setTempo(120)!

Dans EarSketch, chaque mesure contient 4 temps réguliers. Après avoir exécuté un script dans EarSketch, vous pouvez activer ou désactiver le métronome pour écouter le rythme régulier de votre chanson pendant qu’elle joue!

Pour en savoir plus sur les mesures, consultez les approfondissements B et C!

Activité 4 : 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, ils ont une forme ABAB et joueront la même chanson.

Exemple 1 (Sans fonctions personnalisées)

#music

#Create une section de couplet de 4 mesures entre les mesures 1 et 5←A

fitMedia(tambour,1, 1, 5)

fitMedia(basse, 2, 1,5)

#Create une section de refrain de 4 mesures entre les mesures 5 et 9←B

fitMedia(vox,4,5,9)

fitMedia(tape1,5,5,9)

#Back à une section de couplet de 4 mesures entre les mesures 9 et 13←A

fitMedia(tambour,1, 9, 13)

fitMedia(basse, 2, 9,13)

#Back à une section de refrain de 4 mesures entre les mesures 13 et 17←B

fitMedia(vox,4,13,17)

fitMedia(tape1,5,13,17)

finish()

Exemple 2 (Avec des fonctions personnalisées)

#verset

def verse (début, fin) :

fitMedia(tambour, 1, début, fin)

fitMedia(basse, 2, début, fin)

#chorus

def chorus (début, fin) :

fitMedia(vox, 4, début, fin)

fitMedia(tape1, 5, début, fin)

#Function Appels (mise en place d’une forme musicale ABAB par le biais d’appels de fonction)

couplet(1,5) A

refrain(5,9) B

couplet(9,13) A

refrain(13,17) ←B

finish()

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

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

Si vous avez choisi l’exemple n° 2, vous avez raison! L’exemple de code n° 1 (sans fonctions personnalisées) est beaucoup plus long et plus complexe. (Pour être honnête, les avantages sont plus évidents s’il est plus complexe! Vous trouverez un exemple plus complexe dans 27.5 : Introduction to Custom Functions [Introduction aux fonctions personnalisées])

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é.

Exécutons et jouons ce code!

  1. Ouvrez le Tutoriel EarSketch 27.6 : Writing Custom Functions (Écrire des fonctions personnalisées) 
  2. Faites défiler vers le bas jusqu’à ce que vous voyiez l’exemple de code.
  3. Cliquez sur le presse-papiers bleu, puis cliquez sur le bouton IMPORTER POUR ÉDITER (IMPORT TO EDIT) qui apparaît sur votre ÉDITEUR DE CODE.
  4. Vous verrez un nouveau script apparaître, et le code où deux sections de chansons sont définies : couplet et refrain.

    Alternativement, créez un nouveau script pour cette activité!
  5. Cliquez sur le signe + en haut de votre ÉDITEUR DE CODE!
  6.  Nommez-le par exemple « Essai de fonction personnalisée ». Copiez et collez l’exemple de code suivant dans votre éditeur de code.

    REMARQUE : Il est préférable de le faire à partir du Tutoriel EarSketch, car le copier-coller peut ne pas indenter correctement les fonctions fitMedia()!
  7. Sélectionnez RUN (EXÉCUTER) et PLAY
  8. Vous entendrez que la section couplet joue de la mesure 1 à 5 et à nouveau de la mesure 9 à 13. 
  9. Vous devriez également entendre que le refrain est joué de la mesure 5 à 9 et de la mesure 13 à 17.  
  10. Si vous regardez la section dans votre code, #Function Calls, vous verrez que le couplet et le refrain ont été appelés pour jouer sur ces mesures.

Remarque : Dans cet exemple de code, le refrain est le même à chaque fois qu’il est joué. C’est ce que nous attendons.  Mais, dans une vraie chanson, le couplet ne sera probablement pas le même. Nous pourrions avoir un couplet1 et un couplet2

#python code
# script_name : Functions in YVIP
#author: EarSketch Team

from earsketch import *
init()
setTempo(120)

#Soundbank
drum=ENTREP_BEAT_DRUMBEAT
bass=ENTREP_THEME_BASS_1
vox=ENTREP_VOX_BK_FALSETTO
clap1=CIARA_SET_PERC_CLAP_3

#music
#verse1
def verse (start,end) :
  fitMedia(drum,1, start, end)
  fitMedia(bass, 2, start,end)

#chorus
def chorus (start,end) :
  fitMedia(vox,4,start,end)
  fitMedia(clap 1,5,start,end)

#Function Calls
verse(1,5)
chorus(5,9)
verse(9,13)
chorus(13,17)

finish()

Qu’en est-il des variables START et END (DÉBUT et FIN)?

Les fonctions dans EarSketch ont besoin d’entrées ou de paramètres (arguments). Nous utilisons le start et le end pour « garder la place » pour la mesure à utiliser lorsque nous « appelons » notre fonction. Il est ainsi très facile de modifier les « timings » au gré de votre créativité!

Cette fonction personnalisée définit un couplet. Elle demande à l’ordinateur de jouer un clip audio de basse et de batterie pendant un certain nombre de mesures.

Vous avez déjà utilisé des fonctions dans EarSketch, comme fitMedia() — mais maintenant vous allez réellement créer vos propres fonctions. C’est une vraie programmation! 

Les fonctions personnalisées sont écrites par le programmeur ou la programmeuse pour accomplir une tâche reproductible spécifique avec une seule « commande » qui exécute plusieurs lignes de code. 

Les fonctions sont nommées par le programmeur ou la programmeuse, peuvent avoir de nombreuses entrées (paramètres/arguments) et peuvent être appelées n’importe où dans un script — en supposant que vous ayez défini cette fonction avant d’essayer de l’appeler! 

Les fonctions permettent non seulement de raccourcir votre code, mais aussi de créer un code complexe qui peut être facilement répété sans erreur.

Les fonctions sont un exemple d’abstraction, car elles regroupent de nombreuses petites commandes ou actions pour créer une seule tâche. Un exemple d’abstraction consiste à combiner des idées ou des tâches plus petites pour créer un concept unique et moins complexe.

Seymour Papert, le créateur du premier langage de programmation pour les élèves a appelé ces abstractions les « mind-sized bites ».

Pensez au concept simple de « se brosser les dents ». Le brossage des dents est en fait une série d’actions telles que mettre du dentifrice sur la brosse, mouiller la brosse à dents, etc. Cependant, lorsque vous dites à quelqu’un de se brosser les dents, vous n’incluez pas toutes ces étapes. Les étapes sont comprises dans le cadre de la commande « Brossez-vous les dents ». C’est un exemple d’abstraction, ou « mind-sized bites »!

À l’intérieur de la définition du verse() se trouvent des instructions, ou le corps de la fonction. Ces instructions sont indentées. Dans cet exemple, nous avons sélectionné des extraits sonores et des pistes et utilisé fitMedia(), mais utiliserons nos entrées de début et de fin pour noter le timing des extraits sonores. fitMedia() a été utilisé dans le corps de la fonction. (Cependant, vous pouvez également inclure makeBeat(), des boucles, setEffect() et d’autres fonctions/variables dans l’API. Vous pourrez faire des recherches à ce sujet plus tard!)

La définition de la fonction n’exécute pas automatiquement les instructions du corps de la fonction. Pour utiliser la fonction, nous allons « l’appeler ».

L’appel d’une fonction indique à l’ordinateur quand il doit l’exécuter. L’écriture de votre fonction personnalisée indique seulement à l’ordinateur quels clips lire sur des pistes spécifiques, mais pas quand les lire. L’appel de votre fonction indique à l’ordinateur quand lire les extraits sonores et pendant combien de temps. Vous pouvez également appeler cette fonction à tout moment sans réécrire tout le code qui y est intégré.

Pour en savoir plus sur le codage des fonctions personnalisées avec des mesures START et END décalées, voir l’approfondissement C ci-dessous.

Ce n’est pas grave si vous êtes un peu embrouillé·e! Les fonctions personnalisées sont le concept de codage le plus compliqué que vous ayez jamais vu! Vous pouvez commencer par créer des fonctions codées en dur pour votre couplet ou votre refrain, et si cela fonctionne, mettez-vous au défi d’ajouter le début (start) et la fin (end), mais sachez que l’option codée en dur est acceptable pour la compétition. 

Activité 5 : Codage des fonctions personnalisées dans EarSketch (30 minutes + devoirs)

Maintenant, VOUS allez coder vos propres fonctions personnalisées comme le couplet et le refrain! Pour la soumission au concours, vous devrez avoir au moins une fonction personnalisée dans votre code pour définir une section de votre chanson.

Cette activité est similaire à 27.7 Coding Custom Function dans EarSketch (Coder des fonctions personnalisées dans EarSketch) dans le programme EarSketch.  

Structure de la chanson?

Ok. Tout d’abord, réfléchissons à la structure de la chanson!

Faisons comme si c’était la même chose que l’exemple. Mais vous avez peut-être déjà une #intro. Alors on va la mettre! Vous y reviendrez plus tard. 

Bien sûr, vous pourrez « monter d’un cran » plus tard avec des ponts, des transitions, une outro, etc. Mais, nous allons commencer simplement.

Donc, cela signifie essentiellement que nous pouvons définir des fonctions pour chacune de ces parties de chanson. Ensuite, tout ce dont nous avons besoin pour taper notre ÉDITEUR DE CODE (CODE EDITOR) (avec les numéros de début et de fin — s’ils ne sont pas « codés en dur ») est :

#Function Calls

Intro()

Verse()

Chorus()

Verse()

Chorus()

Ce sont des « mind-sized bites »!! :-) C’est certainement plus facile à lire que TOUTES les lignes de code pour chaque partie! Et, si nous voulons changer quelque chose à l’intérieur de l’une de ces parties de chanson, nous pouvons le faire, mais cela ne changera pas les appels de fonction! Ces derniers peuvent rester inchangés.

Codage de fonctions personnalisées pour votre REFRAIN

  1. Ouvrez le script Ta voix est puissante [Vos initiales] (ou cliquez sur l’onglet Ouvrir pour ce script).
  2. Décidez du message que vous voulez faire passer dans le refrain de votre chanson.
    – Il est important d’avoir un message clair et puissant dans le refrain. Vous pourrez y réfléchir plus en profondeur plus tard et considérer cette activité comme un simple exercice d’apprentissage.
  3. Rassemblez tous vos extraits sonores, y compris vos paroles. Pour l’instant, vous pouvez simplement ajouter rapidement des clips existants pour vous entraîner.
    – Ajoutez-les à votre #SOUNDBANK
    – Attribuez-leur des variables (surnoms).
  4. Tapez #chorus dans votre éditeur de code.
  5. Appuyez sur Entrée pour créer une ligne vide.
  6. Tapez def chorus(start,end) : pour définir la fonction chorus avec les entrées start et end. Veillez à inclure les deux points :
  7. Appuyez sur la touche Entrée. Votre prochaine ligne devrait être indentée. Si ce n’est pas le cas, appuyez sur la touche tab.
  8. Ajoutez vos extraits sonores en utilisant les fonctions fitMedia() sur les lignes sous def chorus (début, fin) :
  9. Ajoutez vos paramètres de mesurefitMedia().
    – Utilisez start, end pour les deux derniers paramètres. Exemple : fitMedia(drum,1, start, end)
    – Faites attention à vos numéros de piste!
  10. Répétez ce processus pour toutes les pistes de votre refrain.
    – Assurez-vous d’indenter toutes vos pistes fitMedia().

    Remarque : (S’il y a des fonctions fitMedia() que vous ne voulez pas dans le refrain, supprimez-les ou mettez un signe dièse # devant elles afin qu’elles ne soient pas jouées.)
  11. Appuyez sur la touche Entrée pour créer une nouvelle ligne et supprimer l’indentation.
  12. Appelez votre fonction comme suit :
    - Tapez #Function Calls 
    – Tapez chorus(5,9) et appuyez sur Entrée,
    – Tapez chorus(9,13)

    Nous vous recommandons d’appeler chaque fonction et de séparer les numéros de début et de fin avec des multiples de 4. Ceci suppose que vous avez toujours votre #intro dans les mesures 1 à 5! Si ce n’est pas le cas, ajustez-les en conséquence!
  13. Exécutez votre script. 
    – Votre « refrain » a-t-il joué deux fois?  
    – Est-ce qu’il sonne comme vous aviez l’intention de le coder?
    – Votre code ressemble-t-il à l’exemple ci-dessous?

#CHORUS

def chorus(start,end) :

fitMedia(drums,6,start,end)

fitMedia(bass,7,start,end)

fitMedia(cymbal,8,start,end)

fitMedia(lyric,9,start,end)

#Function Calls

chorus(5,9)

chorus(9,13)

Maintenant, définissez le couplet  

Répétez les instructions ci-dessus (Codage des fonctions personnalisées pour un REFRAIN) pour écrire une nouvelle fonction personnalisée pour le COUPLET.

  1. Rassemblez tous vos extraits sonores.
  2. Ajoutez-les à votre #SOUNDBANK
  3. Attribuez-leur des variables (surnoms).
  4. Tapez #verse dans votre éditeur de code
  5. Appuyez sur Entrée pour créer une ligne vide.
  6. Tapez def verse(start,end) : pour définir le couplet avec les entrées start et end. Veillez à inclure les deux points :
  7. Appuyez sur Entrée. Votre prochaine ligne devrait être indentée. Si ce n’est pas le cas, appuyez sur la touche tab.
  8. Ajoutez vos extraits sonores à l’aide des fonctions fitMedia() sur les lignes sous def verse(début, fin) :
  9. Ajoutez vos paramètres de mesure fitMedia().
    – Utilisez start, end pour les deux derniers paramètres. Exemple : fitMedia(sfx,11, start, end)
    – Faites attention à vos numéros de piste! 
  10. Répétez ce processus pour toutes les pistes de votre couplet.
    – Assurez-vous d’indenter toutes vos pistes fitMedia().

    Remarque : (S’il y a des fonctions fitMedia() que vous ne voulez pas dans le couplet, supprimez-les ou mettez un signe dièse # devant elles afin qu’elles ne soient pas jouées.)
  11. Appuyez sur Entrée pour créer une nouvelle ligne et supprimer l’indentation.
  12. Important : Modifiez les temps de début et de fin de l’appel de la fonction refrain!
    – Changement de refrain(5,9) à refrain(9,13)
    – Changement de refrain(9,13) à refrain(17,21)
  13. Appelez votre fonction de couplet.  
    – Tapez verse(5,9) et appuyez sur Entrée,
    – Tapez verse(13,17)
  14. Vous devriez obtenir quelque chose qui ressemble à la structure suivante :
    verse(5,9)
    chorus(9,13)
    verse(13,17)
    chorus(17,21)
  15. Exécutez votre script. 
  16. Cliquez sur Play!

Cela résulterait en « Function Calls » comme ci-dessous :

intro()

verse(5,9)

chorus(9,13)

verse(13,17)

chorus(17,21)

Remarque importante : si vous aviez les fonctions fitMedia() décalées, vous devrez modifier quelques paramètres! Consultez les approfondissements B et C!

Continuez d’ajouter des fonctions personnalisées pour allonger vos chansons et ajouter plus de variété. Vous pouvez ajouter une intro, une outro, plus de couplets, ou un pont à votre chanson. Pensez à ajouter quelques transitions à votre chanson entre le couplet et le refrain. Les transitions peuvent être un clip audio d’une mesure à l’aide d’une fonction fitMedia(). Il n’est pas nécessaire de l’inclure dans une fonction personnalisée. Consultez le chapitre d’EarSketch sur les transitions : 6.3 Transition Strategies (Techniques de transition)

Une fois que vous avez défini votre fonction personnalisée, vous devriez commencer à voir la structure d’une chanson se dessiner. Lorsque vous écoutez votre code, vous devriez reconnaître les sections de votre chanson. Pensez à la façon dont la structure de votre chanson reflète également le message ou l’objectif de votre chanson. Vous trouverez ci-dessous un exemple de la façon dont vous pouvez appeler vos fonctions personnalisées pour organiser la structure de votre chanson.

Intro(1,5)

verse(5,9)

chorus(9,13)

transition1(13)

verse(14,18)

chorus(18,22)

transition1(22)

bridge(22,28)

verse(28,32)

Outro (32,36)

Félicitations, vous avez transformé vos rythmes en une chanson. Votre remix est presque terminé.