J'en ai assez de
regarder le passé. Il existe de nombreux guides pour recréer l'apparence d'artefacts historiques, mais nous oublions souvent qu'il s'agit d'un acte créatif. Peut-être sommes-nous trop attachés à nos écrans, nous attachons trop d'importance à l'apparence. Essayons plutôt d'
entendre quelque chose du passé.
La riche littérature sur l'archéoacoustique et les paysages sonores aide à recréer le son du lieu
tel qu'il était (par exemple, voir
la cathédrale virtuelle Saint-Paul ou
les travaux de Jeff Veitch sur l'ancienne Ostie ). Mais je souhaite «exprimer» les données elles-mêmes. Je veux définir la syntaxe de représentation des données sous forme sonore afin que ces algorithmes puissent être utilisés en science historique. Drucker a dit que la
célèbre phrase selon laquelle «données» n'est pas vraiment ce qui est donné, mais plutôt ce qui est capturé, transformé, c'est-à-dire «capta». En exprimant des données, je
reproduis littéralement
le passé dans le présent. Par conséquent, les hypothèses et les transformations de ces données viennent au premier plan. Les sons résultants sont une «performance déformée» qui vous fait entendre les couches modernes de l'histoire d'une manière nouvelle.
Je veux entendre le sens du passé, mais je sais que c'est impossible. Cependant, quand j'entends l'instrument, je peux physiquement imaginer le musicien; par des échos et des résonances, je peux distinguer l'espace physique. Je sens la basse, je peux bouger en rythme. La musique couvre mon corps, toute mon imagination. Les associations avec des sons, de la musique et des sons déjà entendus créent une expérience temporelle profonde, un système de relations incarnées entre moi et le passé. Visualité? Nous avons depuis si longtemps des représentations visuelles du passé que ces grammaires ont presque perdu leur expressivité artistique et leur aspect performatif.
Dans cette leçon, vous apprendrez à faire du bruit à partir des données historiques.
L'importance de ce bruit, eh bien ... dépend de vous. Une partie du but est de rendre vos données inconnues à nouveau. En les traduisant, en les recodant, en les
restaurant , nous commençons à voir des éléments de données qui sont restés invisibles lors de l'examen visuel. Cette déformation est conforme aux arguments avancés, par exemple, par Mark Sample sur la
déformation de la société ou Bethany Nouwiski sur la
«résistance des matériaux» . La notation nous conduit des données à la «légende», des sciences sociales à l'art,
du pépin à l'esthétique . Voyons à quoi ça ressemble.
Table des matières
Buts et objectifs
Dans ce tutoriel, je vais discuter de trois façons de générer du son ou de la musique à partir de vos données.
Premièrement, nous utiliserons le système d'algorithmes musicaux libre et ouvert développé par Jonathan Middleton. Nous y découvrirons les principaux problèmes et termes. Ensuite, nous prendrons une petite bibliothèque Python pour «traduire» les données sur le clavier à 88 touches et apporter un peu de créativité au travail. Enfin, téléchargez les données dans le programme de traitement du son et de la musique en temps réel de Sonic Pi, pour lequel de nombreux didacticiels et ressources de référence ont été publiés.
Vous verrez comment le travail avec les sons nous fait passer d'une simple visualisation à un environnement vraiment efficace.
Les outils
Échantillons de données
Une petite introduction au doublage
La sonification est une méthode de traduction de certains aspects des données en signaux audio. En général, une méthode peut être appelée «notation» si elle remplit certaines conditions. Il s'agit notamment de la reproductibilité (d'autres chercheurs peuvent traiter les mêmes données de la même manière et obtenir les mêmes résultats) et ce que l'on peut appeler «intelligibilité» ou «intelligibilité», c'est-à-dire lorsque des éléments significatifs des données originales sont systématiquement reflétés dans le son résultant (voir
Hermann, 2008 ). Les travaux de
Mark Last et Anna Usyskina (2015) décrivent une série d'expériences pour déterminer quelles tâches analytiques peuvent être effectuées lors de la notation des données. Leurs
résultats expérimentaux ont montré que même les étudiants non formés (sans formation musicale formelle) peuvent distinguer les données auditives et tirer des conclusions utiles. Ils ont constaté que les auditeurs étaient capables d'exécuter à l'oreille les tâches générales de l'exploration de données, telles que la classification et le regroupement (dans leurs expériences, ils diffusaient des données scientifiques de base à l'échelle de la musique occidentale).
Last et Usyskina se sont concentrés sur la série chronologique. Selon leurs résultats, les données de séries chronologiques sont particulièrement bien adaptées à la notation, car il existe ici des parallèles naturels. La musique est cohérente, elle a une durée et évolue avec le temps; également avec des données de séries chronologiques (
Last, Usyskina 2015: p. 424 ). Reste à comparer les données avec les sorties audio correspondantes. Dans de nombreuses applications, la méthode de mappage des paramètres est utilisée pour combiner les aspects des données de diverses mesures auditives, telles que la hauteur, la forme variationnelle et l'intervalle (début). Le problème avec cette approche est que s'il n'y a pas de connexion temporaire (ou plutôt une connexion non linéaire) entre les points de données source, le son résultant peut se révéler "confus" (
2015: 422 ).
Remplir les blancs
En écoutant le son, une personne remplit les moments de silence de ses attentes. Considérons une vidéo où le mp3 est converti en MIDI et de retour en mp3; la musique est «aplatie», de sorte que toutes les informations audio sont reproduites avec un seul instrument (l'effet est similaire à l'enregistrement d'une page Web au format .txt, à son ouverture dans Word, puis à son enregistrement au format .html). Tous les sons (y compris les voix) sont traduits dans les valeurs de note correspondantes, puis de nouveau en mp3.
C'est du bruit, mais vous pouvez comprendre:
Que se passe-t-il ici? Si cette chanson vous était connue, vous avez probablement compris les vrais «mots». Mais la chanson n'a pas de mots! Si vous ne l'avez pas entendu auparavant, cela ressemble à une cacophonie sans signification (plus d'exemples sur
Site Web d'Andy Bayo). Cet effet est parfois appelé hallucination auditive. L'exemple montre comment, dans toute représentation de données, nous pouvons entendre / voir ce qui, à proprement parler, n'est pas. Nous comblons le vide avec nos propres attentes.
Qu'est-ce que cela signifie pour l'histoire? Si nous exprimons nos données et commençons à entendre des schémas sonores ou des explosions étranges, alors nos attentes culturelles pour la musique (souvenirs de fragments de musique similaires entendus dans certains contextes) coloreront notre interprétation. Je dirais que cela est vrai pour toutes les idées sur le passé, mais la notation est assez différente des méthodes standard, donc cette conscience de soi aide à identifier ou à exprimer certains modèles critiques dans (les données sur) le passé.
Nous considérerons trois outils pour noter les données et noterons comment le choix d'un outil affecte le résultat, et comment résoudre ce problème en repensant les données dans un autre outil. En fin de compte, la notation n'est pas plus objective que la visualisation, le chercheur doit donc être prêt à justifier son choix et à le rendre transparent et reproductible. (Pour que personne ne pense que la partition et la musique générée par algorithme sont quelque chose de nouveau, je dirige le lecteur intéressé vers
Hedges, 1978 ).
Chaque section contient une introduction conceptuelle, suivie d'une procédure pas à pas utilisant des données archéologiques ou historiques.
Algorithmes musicaux
Il existe une large gamme d'outils pour exprimer les données. Par exemple, des packages pour l'
environnement statistique R populaire tels que
playitbyR et
AudiolyzR . Mais la première n'est pas prise en charge dans la version actuelle de R (la dernière mise à jour remonte à plusieurs années), et pour que la seconde fonctionne correctement, une configuration sérieuse de logiciels supplémentaires est requise.
En revanche, le site Web
Musicalgorithms est assez facile à utiliser; il fonctionne depuis plus de dix ans. Bien que le code source n'ait pas été publié, il s'agit d'un projet de recherche à long terme sur la musique informatique par Jonathan Middleton. Il est actuellement dans la troisième version majeure (les versions précédentes sont disponibles sur Internet). Commençons par les algorithmes musicaux, car cela nous permet de télécharger et de configurer rapidement nos données pour libérer la présentation sous forme de fichiers MIDI. Avant de commencer, assurez-vous de sélectionner la
troisième version .
Site Web des algorithmes musicaux au 2 février 2016Musical Algorithms effectue une série de transformations de données. Dans l'exemple ci-dessous (par défaut sur le site), il n'y a qu'une seule ligne de données, bien qu'elle ressemble à plusieurs lignes. Ce modèle se compose de champs séparés par des virgules, qui sont séparés en interne par des espaces.
Nombre de voix, nom de la zone de texte, données de la zone de texte
1, morphBox,
, areaPitch1,2 7 1 8 2 8 1 8 2 8 4 5 9 0 4 5 2 3 5 3 6 0 2 8
, dAreaMap1,2 7 1 8 2 8 1 8 2 8 4 5 9 0 4 5 2 3 5 3 6 0 2 8
, mapArea1.20 69 11 78 20 78 11 78 20 78 40 49 88 1 40 49 20 30 49 30 59 1 20 78
, dMapArea1.1 5 1 5 1 5 1 5 1 5 3 3 6 0 3 3 1 2 3 2 4 0 1 5
, so_text_area1.20 69 11 78 20 78 11 78 20 78 40 49 88 1 40 49 20 30 49 30 59 1 20 78
Ces chiffres représentent les données source et leurs conversions. Le partage du fichier permet à un autre chercheur de répéter le travail ou de poursuivre le traitement avec d'autres outils. Si vous partez du tout début, vous n'avez besoin que des données source ci-dessous (liste des points de données):
Nombre de voix, nom de la zone de texte, données de la zone de texte
1, morphBox,
, emplacement 1,24 72 12 84 21 81 14 81 24 81 44 51 94 01 44 51 24 31 5 43 61 04 21 81
Pour nous, la clé est le champ «areaPitch1» avec les données d'entrée, qui sont séparées par des espaces. D'autres champs seront remplis au cours du travail avec divers paramètres d'algorithmes musicaux. Dans les données ci-dessus (par exemple, 24 72 12 84, etc.), les valeurs sont les calculs initiaux du nombre d'inscriptions dans les villes britanniques le long de la route romaine (plus tard, nous pratiquerons avec d'autres données).
Après avoir chargé les données dans la barre de menu supérieure, vous pouvez sélectionner diverses opérations. Dans la capture d'écran, le fait de passer la souris sur les informations affiche une explication de ce qui se passe lorsque vous sélectionnez l'opération de division pour mettre les données à l'échelle de la plage de notes sélectionnée.Désormais, lors de l'affichage de différents onglets dans l'interface (durée, translation de hauteur, translation de durée, options d'échelle), différentes transformations sont disponibles. Dans le pitch mapping, il existe un certain nombre d'options mathématiques pour traduire les données sur un clavier de piano complet à 88 touches (dans une traduction linéaire, la valeur
moyenne est convertie en C moyen, soit 40). Vous pouvez également choisir le type d'échelle: mineure ou majeure, etc. À ce stade, après avoir sélectionné diverses transformations, vous devez enregistrer le fichier texte. Dans l'onglet Fichier → Lecture, vous pouvez télécharger le fichier midi. Votre programme audio par défaut devrait pouvoir jouer en midi (souvent les notes de piano sont utilisées par défaut). Des outils midi plus sophistiqués sont attribués dans des programmes de mixage tels que GarageBand (Mac) ou
LMMS (Windows, Mac, Linux). Cependant, l'utilisation de GarageBand et LMMS dépasse le cadre de ce guide: un didacticiel vidéo LMMS est disponible
ici et les didacticiels GarageBand sont complets sur Internet. Par exemple, un
excellent guide sur Lynda.com.
Il arrive que pour les mêmes points il y ait plusieurs colonnes de données. Disons, dans notre exemple de la Grande-Bretagne, nous voulons également exprimer le calcul des types de céramiques pour les mêmes villes. Ensuite, vous pouvez recharger la ligne de données suivante, effectuer des transformations et des comparaisons - et créer un autre fichier MIDI. Étant donné que GarageBand et LMMS vous permettent de superposer des voix, vous pouvez créer des séquences musicales complexes.
Capture d'écran de GarageBand, où les fichiers midi sont des thèmes exprimés dans le journal de John Adams. Dans l'interface GarageBand (et LMMS), chaque fichier midi est glissé avec la souris à l'endroit approprié. La boîte à outils de chaque fichier midi (c'est-à-dire la piste) est sélectionnée dans le menu GarageBand. Les libellés des pistes ont été modifiés pour refléter les mots clés dans chaque sujet. La zone verte à droite est une visualisation des notes sur chaque piste. Vous pouvez regarder cette interface en action et écouter de la musique iciQuelles conversions utiliser? Si vous avez deux colonnes de données, ce sont deux votes. Peut-être que dans nos données hypothétiques, il est logique de reproduire la première voix à haute voix comme la principale: à la fin, les inscriptions nous «parlent» d'une certaine manière (les inscriptions romaines se réfèrent littéralement aux passants: «Oh toi, en passant ...»). Et la céramique est peut-être un artefact plus modeste qui peut être comparé à l'extrémité inférieure de l'échelle ou augmenter la durée des notes, reflétant son ubiquité parmi les représentants des différentes classes de cette région.
Il n'y a pas de «bonne» façon de traduire les données en sons , du moins pas encore. Mais même dans cet exemple simple, nous voyons comment les nuances de sens et d'interprétation apparaissent dans les données et leur perception.
Mais qu'en est-il du temps? Les données historiques ont souvent une certaine date obligatoire. Par conséquent, l'intervalle de temps entre deux points de données doit être pris en compte. C'est là que notre prochain outil devient utile si les points de données sont liés les uns aux autres dans l'espace temps. Nous commençons à passer de la notation (points de données) à la musique (relations entre les points).
Pratique
Dans la première colonne
de l'ensemble de données se trouve le nombre de pièces romaines et le nombre d'autres matériaux provenant des mêmes villes. Informations tirées du Portable Antiquities Scheme du British Museum. Le traitement de ces données peut révéler certains aspects de la situation économique le long de la rue Watling, la principale route traversant la Grande-Bretagne romaine. Les points de données sont situés géographiquement du nord-ouest au sud-est; ainsi, à mesure que le son se reproduit, nous entendons des mouvements dans l'espace. Chaque note représente chaque arrêt sur le chemin.
- Ouvrez thesonification-roman-data.csv dans une feuille de calcul. Copiez la première colonne dans un éditeur de texte. Supprimez les fins de ligne afin que toutes les données soient sur la même ligne.
- Ajoutez les informations suivantes:
Nombre de voix, nom de la zone de texte, données de la zone de texte
1, morphBox,
, areaPitch1,
... afin que vos données suivent immédiatement après la dernière virgule (comme pltcm ). Enregistrez le fichier sous un nom significatif, par exemple coinsounds1.csv
.
- Accédez au site Web Musicalgorithms (troisième version) et cliquez sur le bouton «Charger». Dans la fenêtre contextuelle, cliquez sur le bouton bleu «Charger» et sélectionnez le fichier enregistré à l'étape précédente. Le site téléchargera vos documents et, en cas de succès, affichera une coche verte. Si ce n'est pas le cas, assurez-vous que les valeurs sont séparées par des espaces et suivez immédiatement la dernière virgule du bloc de code. Vous pouvez essayer de télécharger le fichier de démonstration à partir de ce guide .

Après avoir cliqué sur «Charger», cette boîte de dialogue apparaît sur l'écran principal. Cliquez ensuite sur «Charger le fichier CSV». Sélectionnez votre fichier, il apparaîtra dans le champ. Cliquez ensuite sur le bouton «Charger» en bas.
- Cliquez sur 'Pitch Input' et vous verrez les valeurs de vos données. Ne sélectionnez pas d'options supplémentaires sur cette page pour le moment (les valeurs par défaut s'appliquent donc).
- Cliquez sur «Durée entrée». Ne sélectionnez aucune option ici pour le moment . Ces options effectueront diverses transformations de vos données avec un changement dans la durée de chaque note. Jusqu'à ce que vous vous inquiétiez de ces options, passez à autre chose.
- Cliquez sur «Pitch Mapping». C'est le choix le plus important, car il traduit (c'est-à-dire met à l'échelle) vos données brutes sur les touches du clavier. Laissez le
mapping
dans la valeur de «division» (les autres paramètres sont la traduction modulaire ou logarithmique). Le paramètre Range
de 1 à 88 utilise la longueur totale du clavier de 88 touches; ainsi, la valeur la plus basse correspondra à la note la plus profonde du piano et la valeur la plus élevée à la note la plus haute. Au lieu de cela, vous pouvez limiter la musique à une plage autour du do médian, puis entrer une plage de 25 à 60. La sortie changera comme suit: 31,34,34,34,25,28,30,60,28,25,26,26,25,25,60,25,25,38,33,26,25,25,25
. Ce ne sont pas vos chiffres, mais les notes sur le clavier.

Cliquez dans le champ «Plage» et entrez 25. Les valeurs ci-dessous changeront automatiquement. Dans le champ «à», définissez 60. Si vous allez dans un autre champ, les valeurs seront mises à jour
- Cliquez sur «Mappage de durée». Comme pour la traduction de la hauteur, le programme prend ici la plage de temps spécifiée et utilise divers paramètres mathématiques pour traduire cette plage en notes. Si vous survolez
i
, vous verrez quels nombres correspondent à des notes entières, des quarts, des huitièmes, etc. Laissez les valeurs par défaut pour l'instant.
- Cliquez sur «Options d'échelle». Ici, nous commençons à travailler avec ce qui correspond en quelque sorte à l'aspect «émotionnel». Habituellement, l'échelle majeure est perçue comme «joyeuse» et la mineure - comme «triste»; une discussion détaillée de ce sujet peut être trouvée ici . Pour l'instant, laissez «échelle par: majeur». Laissez «échelle» à C.
Nous avons donc annoncé une colonne de données! Cliquez sur «Enregistrer», puis sur «Enregistrer CSV».
Boîte de dialogue «Enregistrer»Vous obtiendrez quelque chose comme ce fichier:
Nombre de voix, nom de la zone de texte, données de la zone de texte
1, morphBox,
, pas de zone 1,80 128128128 1 40 77495 48 2 21 19 1 1500 1 3190115 13 5 1 3
, dAreaMap1,2 7 1 8 2 8 1 8 2 8 4 5 9 0 4 5 2 3 5 3 6 0 2
, mapArea1.31 34 34 34 25 28 30 60 28 25 26 26 25 25 60 25 25 38 33 26 25 25 25
, dMapArea1.1 5 1 5 1 5 1 5 1 5 3 3 6 0 3 3 1 2 3 2 4 0 1
, so_text_area1.32 35 35 35 25 28 30 59 28 25 27 27 25 25 59 25 25 39 33 27 25 25 25
Les données d'origine sont restées dans le champ «areaPitch1», puis les mappages créés vont plus loin. Le site vous permet de générer dans un fichier MIDI jusqu'à quatre voix à la fois. Selon les instruments que vous souhaitez utiliser ultérieurement, vous pouvez choisir de générer un fichier MIDI à la fois. Commençons la musique: cliquez sur 'Play'. Ici, vous choisissez le rythme et l'instrument. Vous pouvez écouter vos données dans un navigateur ou enregistrer en tant que fichier MIDI avec le bouton bleu «Enregistrer le fichier MIDI».
Revenons au début et chargeons les deux colonnes de données dans ce modèle:
Nombre de voix, nom de la zone de texte, données de la zone de texte
2, morphBox,
, areaPitch1,
, areaPitch2,
Nous voici sur la page avec les paramètres 'pitch pitch'. En haut de la fenêtre, spécifiez deux votes, maintenant sur n'importe quelle page avec des paramètres deux fenêtres pour deux votes ouvertes. Comme précédemment, nous chargeons les données au format CSV, mais le fichier doit être formaté pour que les valeurs «areaPitch1» et «areaPitch2» y soient indiquées. Les données de la première voix s'affichent à gauche et la seconde à droiteSi nous avons plusieurs voix, que faut-il mettre en avant? Veuillez noter qu'avec cette approche, notre jeu de voix ne prend pas en compte la distance entre les points dans le monde réel. Si vous considérez, cela affectera grandement le résultat. Bien sûr, la distance n'a pas à être liée à la géographie - elle peut être liée au temps. L'outil suivant indiquera explicitement ce facteur lors de la notation.
Configuration de Python brièvement
Cette section du manuel nécessitera Python. Si vous n'avez pas expérimenté cette langue, vous devrez passer un peu de temps à vous
familiariser avec
la ligne de commande . Voir également
le guide d'installation rapide des modules .
Python est déjà installé sur Mac. Vous pouvez vérifier: appuyez sur COMMANDE et un espace, entrez
terminal
dans la zone de recherche et cliquez sur l'application terminal. La commande
$ type python —version
montrera quelle version de Python vous avez installée. Dans cet article, nous travaillons avec Python 2.7, le code n'a pas été testé en Python 3.
Les utilisateurs de Windows doivent installer Python par eux-mêmes: commencez à partir de
cette page , bien que ce soit un peu plus compliqué que ce qu'il dit. Tout d'abord, vous devez télécharger le fichier
.msi
(Python 2.7). Exécutez le programme d'installation, il sera installé dans un nouveau répertoire, par exemple,
C:\Python27\
. Ensuite, vous devez enregistrer ce répertoire dans les chemins d'accès, c'est-à-dire indiquer à Windows où rechercher Python lorsque vous exécutez le programme Python. Il existe plusieurs façons de procéder. Le moyen le plus simple de trouver
Powershell
sur votre ordinateur (tapez 'powershell' dans la barre de recherche Windows). Ouvrez Powershell et à l'invite de commande, collez ce tout:
[Environnement] :: SetEnvironmentVariable ("Path", "$ env: Path; C: \ Python27 \; C: \ Python27 \ Scripts \", "User")
Si rien ne se produit en appuyant sur Entrée, la commande a fonctionné. Pour vérifier, ouvrez une invite de commande (voici
10 façons de le faire ) et entrez
python --version
. Vous devriez voir une réponse indiquant
Python 2.7.10
ou une version similaire.
La dernière pièce du puzzle est un programme appelé
Pip
. Les utilisateurs de Mac peuvent l'installer avec la commande dans le terminal
sudo easy_install pip
. Les utilisateurs de Windows auront un peu plus compliqué. Tout d'abord, faites un clic droit et enregistrez le fichier par
ce lien (si vous cliquez simplement sur le lien, le code
get-pip.py s'ouvrira dans le navigateur). Gardez-le quelque part à portée de main. Ouvrez une invite de commande dans le répertoire où vous avez enregistré
get-pip.py
. Tapez ensuite
python get-pip.py
à l'invite de commande
python get-pip.py
.
Lorsque vous avez le code Python que vous souhaitez exécuter, collez-le dans un éditeur de texte et enregistrez le fichier avec l'extension
.py
. Il s'agit d'un fichier texte, mais l'extension de fichier indique à l'ordinateur d'utiliser Python pour l'interpréter. Il est lancé à partir de la ligne de commande, où le nom de l'interpréteur est indiqué en premier, puis le nom du fichier:
python my-cool-script.py
.
MIDITime
MIDITime est un package Python développé par
Reveal News (anciennement appelé Center for Investigative Journalism). Dépôt
sur Github . MIDITime est spécifiquement conçu pour traiter des séries chronologiques (c'est-à-dire une séquence d'observations collectées dans le temps).
Alors que les algorithmes musicaux ont une interface plus ou moins intuitive, l'avantage ici est l'open source. Plus important encore, l'outil précédent n'est pas en mesure de prendre en compte les données en tenant compte du temps historique. MIDITime vous permet de regrouper les informations sur ce facteur.
Supposons que nous ayons un journal historique auquel un
modèle thématique a été appliqué. La sortie résultante peut contenir des entrées de journal sous la forme de lignes, et dans les colonnes, il y aura un pourcentage de contribution de chaque sujet. Dans ce cas, l'
écoute des valeurs aidera à comprendre les schémas de pensée du journal qu'il est impossible de transmettre sous la forme d'un graphique. Entendre des explosions immédiatement perceptibles ou répéter des schémas musicaux qui ne sont pas visibles sur la carte.
Réglage de MIDITime
Installation avec une commande
pip :
$ pip install miditime
pour les coquelicots;
$ sudo pip install miditime
sous Linux;
> python pip install miditime
sous Windows (si l'instruction ne fonctionne pas, vous pouvez essayer
cet utilitaire pour installer Pip).
Pratique
Prenons un exemple de script. Ouvrez un éditeur de texte, copiez et collez ce code:
Enregistrez le script sous
music1.py
. Dans un terminal ou une ligne de commande, exécutez-le:
$ python music1.py
Un nouveau fichier
myfile.mid
sera créé dans le
myfile.mid
. Vous pouvez l'ouvrir pour l'écouter à l'aide de Quicktime ou de Windows Media Player (et y ajouter des outils dans GarageBand ou
LMMS ).
Music1.py
importe miditime (n'oubliez pas de l'installer avant d'exécuter le script:
pip install miditime
). Définit ensuite le rythme. Toutes les notes sont répertoriées séparément, où le premier nombre est l'heure de début de la lecture, la hauteur (c'est-à-dire la note elle-même!), La force ou le rythme de la note jouée (attaque) et sa durée. Les notes sont ensuite enregistrées sur la piste et la piste elle-même est enregistrée dans le fichier
myfile.mid
.
Jouez avec le script, ajoutez plus de notes. Voici les notes de la chanson 'Baa Baa Black Sheep':
D, D, A, A, B, B, B, B, A
Baa, Baa, noir, mouton, avez-vous de la laine?
Pouvez-vous écrire des instructions pour que l'ordinateur joue une mélodie (voici un
diagramme pour vous aider)?
Au fait . Il existe un format de fichier texte spécial pour décrire la musique appelé
ABC Notation . Cela dépasse le cadre de cet article, mais vous pouvez écrire un script pour marquer, par exemple, dans des feuilles de calcul, comparer les valeurs des notes en notation ABC (si vous avez déjà utilisé la construction IF - THEN dans Excel, vous avez une idée de la façon de le faire), puis sur des sites
comme celui-ci, la notation ABC est convertie en un fichier .mid.
Téléchargement de vos propres données
Ce fichier contient un échantillon du modèle de thème du journal John Adams pour le site Web
Macroscope . Seuls les signaux les plus forts ont été laissés ici, arrondissant les valeurs dans les colonnes à deux décimales. Pour insérer ces données dans le script Python, vous devez les formater d'une manière spéciale. Le plus difficile est avec le champ date.
Pour ce didacticiel, laissons les noms de variables et les autres inchangés par rapport à l'exemple de script. Un exemple est conçu pour traiter les données sismiques; par conséquent, ici, la «magnitude» peut être représentée comme notre «contribution au sujet». mes_données = [
{'event_date': <objet datetime>, 'magnitude': 3.4},
{'event_date': <objet datetime>, 'magnitude': 3.2},
{'event_date': <objet datetime>, 'magnitude': 3.6},
{'event_date': <objet datetime>, 'magnitude': 3.0},
{'event_date': <objet datetime>, 'magnitude': 5.6},
{'event_date': <objet datetime>, 'magnitude': 4.0}
]
Des expressions régulières peuvent être utilisées pour formater les données, et encore plus facilement - des feuilles de calcul. Copiez l'élément avec la valeur de contribution du thème dans une nouvelle feuille et laissez les colonnes à gauche et à droite. Dans l'exemple ci-dessous, je l'ai mis dans la colonne D, puis j'ai rempli le reste:
Copiez et collez ensuite les éléments immuables en remplissant toute la colonne. L'élément avec la date doit être au format (année, mois, jour). Après avoir rempli le tableau, vous pouvez le copier et le coller dans un éditeur de texte, en l'
my_data
tableau
my_data
, par exemple:
mes_données = [
{'event_date': datetime (1753,6,8), 'magnitude': 0,0024499630},
{'event_date': datetime (1753,6,9), 'magnitude': 0,0035766320},
{'event_date': datetime (1753,6,10), 'magnitude': 0,0022171550},
{'event_date': datetime (1753,6,11), 'magnitude': 0,0033220150},
{'event_date': datetime (1753,6,12), 'magnitude': 0,0046445900},
{'event_date': datetime (1753,6,13), 'magnitude': 0,0035766320},
{'event_date': datetime (1753,6,14), 'magnitude': 0,0042241550}
]
Notez qu'il n'y a pas de virgule à la fin de la dernière ligne.
Le script final ressemblera à ceci si vous utilisez l'exemple de la page de Miditime lui-même (les extraits de code ci-dessous sont interrompus par des commentaires, mais ils doivent être insérés ensemble en tant que fichier unique dans un éditeur de texte):
from miditime.MIDITime import MIDITime from datetime import datetime import random mymidi = MIDITime(108, 'johnadams1.mid', 3, 4, 1)
Les valeurs après MIDITime sont définies comme
MIDITime(108, 'johnadams1.mid', 3, 4, 1)
, ici:
- nombre de battements par minute (108),
- fichier de sortie ('johnadams1.mid'),
- le nombre de secondes dans la musique pour représenter un an dans l'histoire (3 secondes par année civile, donc les entrées du journal pendant 50 ans sont mises à l'échelle en une mélodie de 50 × 3 secondes, soit deux minutes et demie),
- octave de base pour la musique (le C moyen est généralement représenté par C5, donc ici 4 correspond à une octave inférieure à la référence),
- et le nombre d'octaves pour comparer les hauteurs.
Maintenant, nous passons les données au script en les chargeant dans le tableau
my_data
:
my_data = [ {'event_date': datetime(1753,6,8), 'magnitude':0.0024499630}, {'event_date': datetime(1753,6,9), 'magnitude':0.0035766320},
... ici, nous insérons toutes les données et n'oubliez pas de
supprimer la virgule à la fin de la dernière ligne de
event_date
, et après les données, placez le crochet final sur une ligne distincte:
{'event_date': datetime(1753,6,14), 'magnitude':0.0042241550} ]
puis insérez le timing:
my_data_epoched = [{'days_since_epoch': mymidi.days_since_epoch(d['event_date']), 'magnitude': d['magnitude']} for d in my_data] my_data_timed = [{'beat': mymidi.beat(d['days_since_epoch']), 'magnitude': d['magnitude']} for d in my_data_epoched] start_time = my_data_timed[0]['beat']
Ce code définit la synchronisation entre les différentes entrées du journal; si les entrées du journal sont proches les unes des autres dans le temps, les notes correspondantes seront également plus proches. Enfin, nous déterminons comment les données se comparent à la hauteur. Les valeurs initiales sont indiquées en pourcentages allant de 0,01 (soit 1%) à 0,99 (99%), donc nous définissons
scale_pct
entre 0 et 1. Si nous n'avons pas de pourcentages, alors nous utilisons le plus bas et le plus haut valeurs. Ainsi, nous insérons le code suivant:
def mag_to_pitch_tuned(magnitude): scale_pct = mymidi.linear_scale_pct(0, 1, magnitude)
et le dernier fragment pour enregistrer les données dans un fichier:
Enregistrez ce fichier sous un nouveau nom et une nouvelle extension
.py
.
Pour chaque colonne des données source, nous faisons un script unique et n'oubliez pas
de changer le nom du fichier de sortie ! Vous pouvez ensuite télécharger des fichiers MIDI individuels vers GarageBand ou LMMS pour l'instrumentation. Voici le
journal intime de John Adams .
Sonic pi
Le traitement d'un midi unique dans GarageBand ou un autre éditeur de musique signifie passer du simple doublage à l'art musical. Cette dernière section de l'article n'est pas un guide complet sur l'utilisation de
Sonic Pi , mais plutôt une introduction à un environnement qui permet l'encodage et la lecture en temps réel de données sous forme de musique (voir la
vidéo pour un exemple d'encodage avec
lecture en temps réel). Les tutoriels intégrés au programme montreront comment utiliser un ordinateur comme instrument de musique (vous entrez le code Ruby dans l'éditeur intégré et l'interprète lit immédiatement le résultat).
Pourquoi est-ce nécessaire? Comme vous pouvez le comprendre dans ce guide, lorsque vous lisez les données, vous commencez à prendre des décisions sur la façon de traduire les données en sons. Ces décisions reflètent des décisions implicites ou explicites sur ce qui compte pour les données. Il y a un continuum «d'objectivité», si vous voulez. D'une part, les données historiques exprimées, d'autre part - une idée du passé, sont aussi excitantes et personnelles que n'importe quelle conférence publique bien faite. Le sondage vous permet d'entendre vraiment les données stockées dans les documents: c'est une sorte d'histoire publique. La performance musicale de nos données ... imaginez!
Ici, je propose un extrait de code pour importer des données, qui est juste une liste de valeurs stockées en tant que csv. Merci à la bibliothécaire de l'Université George Washington, Laura Vrubel, qui a publié ses expériences sur les opérations de la bibliothèque de sondages sur
gist.github.com .
Il y a deux thèmes dans
cet échantillon (le modèle thématique généré à partir de
la relation jésuite ). Dans la première ligne, les en-têtes sont «topic1» et «topic2».
Pratique
Suivez les didacticiels Sonic Pi intégrés jusqu'à ce que vous vous familiarisiez avec l'interface et les fonctionnalités (tous ces didacticiels sont compilés
ici ; vous pouvez également écouter
une interview de Sam Aaron, créateur de Sonic Pi). Copiez ensuite le code suivant dans un nouveau tampon (fenêtre de l'éditeur) (encore une fois, des fragments séparés doivent être collectés dans un script):
require 'csv' data = CSV.parse(File.read("/path/to/your/directory/data.csv"), {:headers => true, :header_converters => :symbol}) use_bpm 100
N'oubliez pas que le
path/to/your/directory/
est l'emplacement réel de vos données sur l'ordinateur. Assurez-vous que le fichier s'appelle vraiment
data.csv
ou modifiez cette ligne dans le code.
Maintenant, chargez ces données dans la composition musicale:
Les premières lignes chargent les colonnes de données; nous indiquons ensuite quel échantillon de son nous voulons utiliser (piano), puis nous indiquons de jouer le premier sujet (topic1) conformément aux critères spécifiés: pour la force de la note (attaque), une valeur aléatoire inférieure à 0,5 est sélectionnée; pour la désintégration - une valeur aléatoire inférieure à 1; pour l'amplitude, une valeur aléatoire inférieure à 0,25.
Vous voyez une ligne multipliée par cent (
*100
)? Il prend notre valeur de données (décimale) et la transforme en entier. Dans ce fragment, le nombre est directement égal à une note. Si la note la plus basse est 88 et la plus haute est 1, alors cette approche est un peu problématique: en fait, nous n'affichons pas de hauteur ici! Dans ce cas, vous pouvez utiliser des algorithmes musicaux pour afficher la hauteur, puis transmettre ces valeurs à Sonic Pi. De plus, comme ce code est Ruby plus ou moins standard, vous pouvez utiliser les méthodes habituelles de normalisation des données, puis effectuer une comparaison linéaire de vos valeurs avec une plage de 1 à 88. Pour commencer, il est agréable de regarder
le travail de Steve Lloyd sur la voix des données météorologiques avec Sonic Pi.
Et la dernière chose à noter ici: la valeur de «rand» (aléatoire) vous permet d'ajouter un peu «d'humanité» à la musique en termes de dynamique. Nous faisons de même pour 'topic2'.
( ), , , Sonic Pi. : , , . ,
use_bpm 100
:
… . 2 , 'ambi_choir', 6 . , ( ):
: 'bd_boom' . 2 .
« », ,
. , ? !
Sonic Pi
. .
, .
: , . 1978
« » 18 , .
Sonic Pi . , Markdown+Pandoc, —
Lilypond .
The Programming Historian !
Conclusion
, , . - , . . , «»; , . , « —
, ».
- MIDI : . , ( ). . MIDI- , .
- MP3 : , .
- : ( C . .)
- :
- : ( , , . .)
- :
- : ,