Sons et Image - un échange France-Argentine
From OFSET Wiki
Contents |
[edit] La catégorie 'MULTIMEDIA'
Dans le CATALOGUE des OBJETS nous avons la catégorie MULTIMEDIA qui permet d'introduire des sons dans l'univers des projets.
Dans les visualiseurs de commandes des objets, nous trouvons des sons construits déjà prêts à l'emploi et programmables. Ils sont en nombre réduit et plutôt de la catégorie du bruitage.
La catégorie Multimédia présente un ensemble de moyens qui vont servir à créer de nouveaux sons, musicaux ou autres, mais on peut aussi en importer.
- Pour en créer, nous aurons besoin soit d'un microphone, soit d'outils comme l'editeur de son, le magnétophone etc que l'on tire sur l'écran. et qui fabriqueront des ensembles sonores en se servant des sons préenregistrées de squeak.
- Pour traiter les sons il y a un excellent programme dans le monde du libre : Audacity
- Pour en importer nous aurons besoin d'avoir accès à une documentation se présentant sous forme de fichiers spécialisés.
Mais le maniement de ces outils demande une initiation et pour nous permettre d'en avoir une petite idée, nous avons demandé conseil à un spécialiste, professeur en éducation musicale, qui a accepté de nous donner quelques informations.
Il s'agit de Norberto MANZANOS, enseignant musical en Argentine, compositeur et chargé du département informatique dans lequel Squeak est utilisé comme outil de développement pédagogique. C'est également un ancien collaborateur du groupe Smallland en Espagne.
Je lui ai envoyé un petit projet appelé 'Maquette' en lui demandant de le sonoriser de façon schématique de façon à ce que nous puissions analyser la marche qu'il a suivie.
Il a renvoyé ce projet non seulement sonorisé, mais aussi accompagné d'un texte très pédagogique où il détaille plusieurs types de sonorisations assorties de leur mode de programmation.
Nous le remercions vivement de son obligeance.
Il s'exprime en anglais et vous trouverez ci-dessous une référence qui renvoie au texte original de son courrier. Voir les courriers de Norberto Manzanos.
Dans les deux sections suivantes, vous trouverez les suggestions de Norberto et la traduction de ses deux textes. Ensuite nous présentons le projet 'Maquette' qu'il a sonorisé (transcrit de la version 3.7 à la version 3.8 utilisée sur ce site). Nous avons rajouté aussi 2 projets qui suivent à la lettre 1 ou 2 des points illustrés par Norberto, sans toutes fois aller aussi loin que lui dans la programmation et dans la délicatesse des sons produits.
[edit] Premier email
...Vous pouvez mettre de la musique et des sons de différentes façons dans un projet. Le plus facile est d'enregistrer un son avec l'enregistreur de sons. Vous avez seulement besoin d'un microphone :
Ouvrez l'enregistreur de sons et jouez « play ».
Ensuite vous pouvez faire une 'tuile' du son.
Ceci est utile pour des effets spéciaux, de petits sons, pas de la vraie musique, parce que cela enregistre seulement la forme de l'onde sonore.
La tuile avec votre son est disponible pour être rattachée à un script, comme les sons pré-enregistrés de squeak. L'autre possibilité est de jouer avec un fichier 'midi'.
Le' player midi' fait ce travail. Vous pouvez ouvrir un fichier 'midi' et quand vous sauvez l'image, le son reste comme l'un de vos objets.
Ceci est valable pour de la musique simple, cela occupe une très petite place, mais cela utilise les sons pré-enregistrés de squeak, aussi, la qualité n'est pas excellente.
On peut obtenir un meilleur résultat pour les mélodies avec un accompagnement simple ou en utilisant des thèmes bien connus.
La qualité la plus élevée est obtenue quand vous jouez avec un fichier MP3, mais cela est assez problématique, pour des projets à placer sur internet.
Ces fichiers sont souvent très lourds (3 méga ou plus), et ils ne sont pas sauvés avec votre image. Vous devez les rouvrir à chaque fois.
Mais les contraintes sont des défis pour la création, n'est-ce- pas ?
J'ai fait quelques agencements pour de l'écriture musicale quand je travaillais pour SmallLand.
Vous pouvez obtenir un effet musical (midi ou mp3) à partir d'un script et peut être vous sera-t-il utile dans votre projet...
A la suite de ce premier courrier, il m'a semblé que l'option la plus accessible était d'apprendre à télécharger des sons et de nous familiariser avec l'enregistrement de sons simples, sans entrer dans le détail de la création musicale demandant des compétences de spécialiste. C'est pourquoi nous allons étudier avec soin la description détaillée que fait Norberto de l'utilisation de la sonorisation et de la programmation du projet Maquette.
Les scripts, issus du projet réalisé sur squeak 3.7, sont en anglais.
[edit] Description du projet 'Maquette'
Il comprend 3 barres horizontales sur une scène vide et une flèche qui se déplace à la verticale de bas en haut et provoque l'apparition successive d'un texte et d'une image couplés avec des sons chaque fois que la flèche rencontre une barre transversale.
La maquette de départ ne comporte pas de son, elle est programmée uniquement pour provoquer les apparitions des images et du texte à l'aide de scripts conditionnels utilisant les plages de TESTS.
Quand la flèche atteint la 3eme barre, (TEST : flèche intersection avec degré 3), le mot fleur et la dernière image apparaissent, le script DEMARRE reçoit l'ordre de s'interrompre, et la flèche retrouve sa place de départ (x, y)
Nous allons voir quels types de son Norberto a utilisé et de quelle manière il a modifié la programmation pour les faire intervenir, ce qu'il a gardé, ce qu'il a rajouté.
[edit] Deuxième email
Le projet propose quelques exemples sur la façon d'utiliser des sons dans des scripts. Je vais essayer d'expliquer en détail ce que j'ai fait.
[edit] Utilisation de sons préenregistrés de Squeak
Si je désire avoir un son au début, qui ne sera joué qu'une fois seulement, je dois le mettre dans le script principal, comme première action qui doit être réalisée, et, après cela, s'arrêter avec le script (s'il n'est pas arrêté, le son se rejoue indéfiniment).
Je tire donc la tuile du son pré-enregistré de la catégorie 'base' et je la place au tout début du script.
A ce moment, le script 'démarrer' ressemble à ceci :
! flèche joue son chirp ! flèche demarre script | demarre ! fleche stop | script demarrer
La version finale a quelque chose de plus flèche's |times | 0.0 que j'expliquerai plus tard. La dernière ligne arrête le script démarrer pour éviter l'exécution d'une boucle perpétuelle.
L'objectif de ce script est simplement de jouer une fois le son et, ensuite de déclencher le script démarre.
Ceci était un exemple simple de l'utilisation des sons pré-enregistrés et de leur introduction dans un script. Maintenant nous allons voir un exemple plus compliqué.
[edit] Introduction d'un nouveau son dans la bibliothèque
Quand le bloc de lettres 'un petit cheval' apparaît, j'ai désiré le mettre en relation avec un son approprié, un son qui fasse référence à un cheval.
Je n'avais pas de chevaux chez moi, ni un enregistrement de hennissement de cheval, aussi j'ai cherché sur le WEB, j'ai tapé « horse sound » dans la boite de recherche de Google et j'ai trouvé ce site :
http://www.horsepresence.com/shop/SoundsHome.html
J'ai choisi un des nombreux sons.
Dans http://www.findsounds.com/types.html, il y a quantité de sons de différentes catégories (musicaux ou autres).
Face aux nombreux formats utilisés pour les sons, on voit que Squeak joue le format AIFF.
Aussi j'ai choisi un fichier avec une extension AIFF.
Ceci est la partie la plus délicate de la manipulation : il n'y a aucun moyen de ramener un fichier de son en utilisant directement les morphs multimédia.
Je crains que quelqu'un n'ait oublié de programmer l'option « load from file » dans l'enregistreur de sons ou dans le waveEditor.
Voici le truc :
- Ouvrir le menu monde
- Choisir Ouvrir et ouvrir un espace de travail
- Tapez ceci dans l'espace de travail:
SampledSound addLibrarySoundNamed: 'horse' fromAIFFfileNamed: 'horse.aiff'
Appuyez [Alt]-D (ou dans le menu contextuel faites Do-It)
Je suppose que le fichier est dans le dossier directeur de squeak et que son nom est 'cheval.aiff'
Ceci va créer un nouveau son dans la librairie des sons. Quand vous appuyez sur la flèche de la tuile make sounds, elle fera apparaître un nouveau son nommé 'horse' et la tuile à ce nom jouera le nouveau son que vous avez ramené.
Pour ajouter un son au format wave, utilisez plutôt le script :
son := SampledSound fromWaveFileNamed: 'horse.wav'. SampledSound addLibrarySoundNamed: 'horse' samples: son samples samplingRate: son originalSamplingRate
Faire [Alt]+A (pour tout sélectionner) puis [Alt]+D.
[edit] Améliorations
Le code ci-dessous demande le nom qui sera donné au son dans la bibliothèque, ensuite une fenêtre permet de se déplacer dans les dossiers de l'ordinateur pour désigner un fichier son.
SampledSound addLibrarySoundNamed: (FillInTheBlankMorph request: 'Nom du son dans la bibliothèque ?') fromAIFFfileNamed: FileList2 modalFileSelector name
Pour coller du texte dans Squeak, utiliser la combinaison de touches [Alt]+V ou [pomme]+V. Penser aussi à sélectionner à la souris tout le code, puis faire [Alt]+D.
Pour une version pour fichier WAV :
son := SampledSound fromWaveFileNamed: FileList2 modalFileSelector name. SampledSound addLibrarySoundNamed: (FillInTheBlankMorph request: 'Nom du son dans la bibliothèque ?') samples: son samples samplingRate: son originalSamplingRate
Mais on peut faire encore mieux, mettre ce code dans un script !
Les briques E-toy sont en fait des traducteurs qui transforment des assemblages de briques en code Smalltak.
- Prendre un script vide et cliquer sur le carré.
- Le script devient une fenêtre de texte. Si le script n'est pas vide, la fenêtre contient le code Smalltalk du script, si non il n'y a que le titre du script.
- Ne pas effacer ce titre.
- Coller en dessous le code ci-dessus qui charge un fichier son.
A part le fait que le script contient du texte au lieu des briques, il s'utilise comme tout script, on peut entre autre utiliser son menu pour avoir un bouton pour lancer le script.
Après avoir exécuté le script ou le code, la brique joue son contient le nouveau son.
NB : Pour des sons WAV, au 4. coller le deuxième script ci-dessus.
[edit] Suite du projet
J'ai tiré la brique de mon nouveau son dans le script montre2. Comme ce script a un test qui est pointé une seule fois, je n'ai pas besoin d'arrêter le script.
Ceci est un exemple de capture de sons à partir d'un fichier pour les utiliser à l'intérieur de Squeak. Il est à remarquer que le nouveau son 'horse' se trouve intégré à la liste des sons préenregistrés.
[edit] Concernant les sons musicaux enregistrés
Vous pouvez noter que je n'ai pas été très créatif. Pour les fleurs, j'ai pensé à des flûtes jouant 'trino', avec le cheval entr'elles.
C'est un exemple compliqué, parce que je dois utiliser des figures compliquées de la programmation Etoys des scripts.
J'ai du enregistrer des sons de flûtes. Vous pouvez faire la même chose avec n'importe quel objet que vous trouverez et qui produit des sons que vous aimez (une bouteille, un pipeau etc.).
- Ouvrir le menu du monde.
- Ouvrir le catalogue des objets.
- Ouvrir la catégorie multimédia.
- Tirer le « soundRecorder » (ou magnétophone) sur l'espace Monde.
- Assurez-vous que la connexion du micro est opérationnelle. Si vous appuyez le bouton RECORD (enregistrement) et que vous jouiez un son près du micro, ou que vous le tapotiez, la barre grisée devrait devenir jaune, montrant le niveau d'enregistrement.
- Quand votre instrument est prêt, pressez le bouton RECORD, produisez le son et pressez le bouton STOP.
- Vous pouvez répéter cette procédure jusqu'à ce que vous trouviez que le son est satisfaisant. Essayez le bouton PLAY (jouer). Si le son a beaucoup de silence, pressez le bouton TRIM.
- Quand vous avez un son qui vous satisfait, pressez le bouton TILE (brique) qui produira une tuile avec votre son devenu un son Squeak et demandera que vous donniez un nom à ce son.
[edit] Variables
J'ai enregistré 2 sons, 2 flûtes, produisant différents 'trinos' de différents tons et longueurs de temps. La raison est que je voulais mélanger ces sons au hasard pour créer une ambiance évoquant la nature.
J'ai fait un script spécial pour ces sons, parce que j'avais affaire à plusieurs types d'actions.
Aussi, je déclenche le script flûtes à la fin du script montre3.
Pour le script flûtes, j'avais besoin de 2 flûtes jouant ensemble de façon aléatoire et je ne voulais pas qu'elles jouent la même chose de façon mécanique, aussi, j'ai cherché un moyen de déclancher chaque son au hasard et j'ai créé une variable. (je ne sais pas si vous êtes informée sur les variables, aussi je vais vous expliquer de quoi il retourne ici) :
Dans la partie supérieure du visualiseur de commandes, il y a une boite qui ouvre un menu et la lettre (V) dans un cercle.
En appuyant sur ce (V), vous obtenez une boite de dialogue pour nommer la nouvelle variable. Choisisir par exemple random et valider. Une nouvelle catégorie nommée 'variables' se place dans le visualiseur, dans laquelle se trouve une ligne de random, avec à droite une tuile fléchée numérotée.
Vous pouvez tirer la tuile de cette variable par sa flèche, l'introduire dans n'importe quel script et réaliser l'opération numérique.
J'ai donc ramené ma variable random à l'intérieur de mon script flûtes et je lui ai attribué une valeur (10).
La valeur de « au hasard » (random) est obtenue en appuyant sur la boite avec le nom du script (flutes) qui ouvre un menu.
Pour mettre une valeur au hasard dans notre variable random, cliquer sur le nom de l'objet dans le script, un menu s'affiche, choisir donne moi une brique d'un nombre aléatoire. J'ai donc ensuite placé la nouvelle brique 'hasard' à la droite de ma variable 'random'.
Puis j'ai choisi le nombre 10 pour le nombre le plus à droite de ma variable, cela signifiait que cette variable aura une valeur entre 1 et 10 au hasard.
Regardez le premier test du script flutes. Là je compare la variable random avec 5 et je choisis un des sons de flûtes.
J'ai désiré avoir le son 'cheval' entre les flûtes, mais je ne voulais pas en avoir beaucoup. Considérant que le nombre au hasard doit être entre 1 et 10, si je compartimente la valeur numérique entre 1 et 10 pour avoir des durées bien réparties, le nombre 5 me paraît satisfaisant pour produire l'effet que je désire. Regardez la première partie du second test.
Jusqu'à présent, j'avais les flûtes jouant au hasard et le cheval donnant de la voix. Mais maintenant, comment faire pour arrêter tout cela ?
La flèche a fini de se déplacer et je n'ai plus aucun événement à prendre en compte pour tester ce qui doit se passer maintenant.
J'ai donc eu besoin d'une autre variable que j'ai appelée times (temps). L'idée est que quand le cheval aura donné de la voix 5 fois, le script devra s'arrêter. Aussi j'ai fait progresser cette variable de 1 chaque fois que le son 'cheval' est exécuté.
Le troisième test compare le nombre de répétitions de la variable times avec 5 et il stoppe le script.
Pour être sûr que cette exécution sera correcte chaque fois que je rejouerai le script, j'initialise la variable avec le chiffre zéro dans le script demarrer.
Ceci est un exemple de l'utilisation de sons enregistré dans un script avec quelques techniques pour faire des sons plus musicaux.
Le projet sonorisé par Norberto, le voir et l'étudier :
Si l'on examine le projet modifié par Norberto Manzanos et son texte, on voit qu'il a essayé de nous donner des informations sur un certain nombre de points.
- Comment utiliser un son préconstruit stocké dans la bibliothèqure des sons de Squeak.
- Comment fabriquer soi-même un son pour le stocker dans cette même bibliothèque.
- Ou comment aller le rechercher dans des fichiers extérieurs spécialisés et l'introduire dans la bibliothèque.
- Comment programmer pour obtenir des efftets simples ou un peu plus sophistiqués et musicaux, avec utilisation de variables, sans entrer dans la problématique de la composition musicale.
Il nous a semblé qu'il nous avait fourni suffisamment de bases pour que nous puissions tenter, de façon modeste, l'aventure de la sonorisation de quelques projets.
[edit] Quelques essais de sonorisation
[edit] Le projet 'Cheval et Fleur'
Ce projet reprend, sous une forme à peu près identique mais avec une présentation un peu différente et une programmation simplifiée, le schéma et les manœuvres du projet Maquette : une flèche monte verticalement, sur le côté et fait apparaître une succession de textes et d'images, avec accompagnement sonore.
- Nous avons tenté la récupération d'une image sonore AIFF, sur internet, (horse2) et nous avons pu l'intégrer ensuite à la bibliothèque des sons Squeak en suivant la méthode proposée.
- Une phrase prononcée par un enfant (Vincent) a été enregistrée pour expérimenter l'utilisation du micro.
- Sur le plan de la programmation, nous avons intégré les sons de façon identique, et retenu la formulation du script 'DEMARRER' pour la production de la phrase prononcée une seule fois.
Nous n'avons pas poussé plus loin l'investigation ni abordé le problème des variables et des sons musicaux brillamment présentés par Norberto Manzanos. Le résultat est certainement très médiocre et demanderait à être retravaillé. Les paroles sont trop rapides et mal coordonnées avec l'apparition des lettres. Mais il nous a semblé que ce premier pas était à la fois un apprentissage de quelques techniques simples et une tentative pour donner à un projet Squeak une dimension un peu plus multimédia, en programmant autour de l'image des expressions écrites, verbales et sonores.
Voir et étudier le projet :
[edit] Les galets de la Mer
Ce projet fait partie d'une autre série et a été conçu avec d'autres objectifs, en particulier de manipulation de 2 images photographiques. Une sonorisation est rajoutée ici pour simuler le bruit des vagues et de la mer.
Pour cela, il a été fait tout bêtement usage du micro en soufflant dessus.
Le même type de script qui limite la production du son à un seul exemplaire a été utilisé ici aussi. En le jumelant avec la réglette GO/STEP/STOP, on peut le réactiver aussi souvent et irrégulièrement que l'on le désire et arriver à donner, de cette façon, une impression de mer calme ou agitée.
Voir et étudier le projet :
[edit] Les galets de la Mer, les vagues au hasard
Le projet suggère de programmer l'arrivée des vagues au hasard.
On peut faire un script qui décompte vers 0 depuis un nombre tiré au hasard.
Lorsque le compte est à 0, on entend une vague et un nouveau tirage alimente le compteur.
Le compteur est la variable horloge.
Si le script est réglé sur 10, il est exécuté 10 fois par secondes, l'unité des nombres est le dixième de secondes.
Voir et étudier le projet :
[edit] Conclusion
A partir des explications fournies par Norberto MANZANOS, nous pouvons disposer d'une base de renseignements susceptible de nous aider à nous aventurer dans l'univers des sons et du multimédia.
On a voulu démontrer que cette aventure peut être tentée avec un minimum de connaissances et un équipement modeste, et ne peut que s'enrichir au fur et à mesure que croissent les compétences en manipulations et en programmation.
Bien que n'ayant fait qu'effleurer cette recherche, il nous apparaît que l'aventure sonore est aussi riche en ressources et en potentiel créatif que l'univers des images et de la création plastique, et essayer de jumeler les 2 me semble donner une dimension nouvelle à certains projets et justifier la réputation Multimedia de Squeak.
[edit] Post scriptum
La souplesse de Squeak fit que ce qui n'existe pas encore peut être programmé en Smalltalk. En fait concernant les sons, le code s'y trouve déjà et on peut utiliser le code dans l'espace de travail. Ce qui manque est le lien entre le code et l'interface.
Le projet ci-dessous introduit ces corrections et permet de travailler plus confortablementavec les sons. Ce projet ajoute aux objets SoundEvent (obtenus à l'aide du bouton Morph du magnétophone) une catégorie sons avec la possibilité de jouer et d'arrêter le son ainsi que de changer le son contenu par programme.
[edit] Menu du magnétophone
Il y a deux nouveaux articles au bas du menu du halo rouge du magnétophone.
- Charger un fichier son permet de se déplacer dans les dossiers pour pour choisir un fichier son. Après chargement, le magnétophone contient le son comme s'il avait été enregistré.
- Le bouton brique crée une brique son et ajoute le son à la bibliothèque.
- Le bouton Morph crée un objet SoundEvent (événement sonore).
Dans la catégorie son de l'objet SoundEvent il y a des briques pour jouer et arrêter le son ainsi qu'une brique pour récupérer ou modifier le son.
Voir et étudier le projet traitement de sons:








