Catégories
Graphisme Musique Programmation Synthèse sonore

Sonographe parallèle

Pour les nostalgiques de Phonogramme et Sonographe, je vous présente une page web permettant de dessiner des sons, de les écouter et les enregistrer.

https://www.cyclonium.com/atelier/synthese/sonographeParallele.html

C’est une préfiguration de ce que pourrait être un ‘SoundPaint’ dans une page web. Pour l’instant, c’est une maquette, en développement, mais elle permet déjà de dessiner et écouter, quasiment en temps réel.

En fait, il faut environ 2 secondes pour calculer 30 secondes de son, grâce à notre bibliothèque de calcul parallèle basée sur WebGL (Paradigma).

La touche F12 remplace la documentation, il faut juste lire le code.

Sonographe parallèle
https://www.cyclonium.com/atelier/synthese/sonographeParallele.html

Catégories
Mathématiques Nombres Programmation

Représentation de Rationnels à partir des BigInt

Une page d’expérimentation sur les fractions, représentées par un couple de grands entiers, maintenant accessibles en JavaScript sous le nom de BigInt.

 

https://www.cyclonium.com/atelier/nombres/fromTheBigInt.html

Catégories
Base 2 Jeux Mathématiques Numération

Balance de Roberval pour apprendre les bases de numération

2020 en Base 3
Image extraite de l’atelier

Cet article présente une simulation de balance de Roberval pour apprendre les bases de numération de position.

Il suffit de cliquer sur les poids pour équilibrer la balance. Une fois l’équilibre atteint, le nombre de billes est écrit sous le plateau de gauche dans la base choisie.

La documentation complète est dans la page d’expérience. Cliquez sur l’image pour démarrer.

Catégories
Animation Instrument interactif Jeux Musique Pavages

Ian Snyder’s five stringed instrument

Un jeu d’enfant, l’instrument concocté par Ian Snyder est très simple et intuitif.

Un élastique et 6 punaises délimitent 5 cordes vibrantes.

La longueur des cordes correspond (à une transformation près) à la hauteur du son : comme en vrai, plus la corde est longue plus le son est grave et inversement, plus la corde est courte plus le son correspondant est aigu.

Pour faire sonner une corde, il suffit de l’attraper à la souris, de tirer dessus et de la relâcher. L’intensité du son produit est corrélé à la traction effectuée avant de relâcher : plus on tire, plus le son est fort.

En haut à gauche, le bouton « tuning » permet d’accorder l’instrument selon plusieurs gammes :

Un bout de commentaire dans le code correspondant :

// all – [1,1,1,1,1,1,1,1,1,1,1,1]
// penta – [1,0,1,0,1,0,0,1,0,1,0,0]
// hexa – [1,0,1,0,1,0,1,0,1,0,1,0]
// hepta – [1,0,1,0,1,1,0,1,0,1,0,1]
// octa – [1,1,0,1,1,0,1,1,0,1,1,0]
/* A BC D EF G
000000000000
1-1-1-1-1-1- > whole
–11–11–11 > augmented
11-1-1-1-1– > prometheus
-1-1–1-111- > blues
> 1–1-1-11-1- > diatonic
*/

Le code en vrai dans la fonction tuneMode() :

switch (tuning) {
		case 1:
		scale = [1,1,1,1,1,1,1,1,1,1,1,1];
		str = "12 tone";
		break;
		
		case 2:
		scale = [1,1,0,1,1,0,1,1,0,1,1,0];
		str = "8 tone";
		break;
		
		case 3:
		scale = [1,0,1,0,1,1,0,1,0,1,0,1];
		str = "7 tone";
		break;
		
		case 4:
		scale = [1,0,1,0,1,0,1,0,1,0,1,0];
		str = "6 tone (whole)";
		break;
		
		case 5:
		scale = [1,1,0,0,1,1,0,0,1,1,0,0];
		str = "6 tone (augmented)";
		break;
		
		case 6:
		scale = [1,1,0,1,0,1,0,1,0,1,0,0];
		str = "6 tone (prometheus)";
		break;
		
		case 7:
		scale = [0,1,0,1,0,0,1,0,1,1,1,0];
		str = "6 tone (blues)";
		break;
		
		case 8:
		scale = [1,0,0,1,0,1,0,1,1,0,1,0];
		str = "6 tone (diatonic)";
		break;
		
		case 9:
		scale = [1,0,1,0,1,0,0,1,0,1,0,0];
		str = "5 tone";
		break;
	}

On est toujours basé sur une échelle en 12 demi-tons, à moins de mettre le « tuning » à OFF.

On peut changer le timbre utilisé : il suffit de choisir le fichier d’échantillons à utiliser (en wav, mp3, etc…) disponible sur sa machine.

Par exemple, un son de corde de violoncelle : téléchargez

https://www.cyclonium.com/atelier/sons/Cello.wav

Ou encore un son produit par SoundPotatoes :

https://www.cyclonium.com/atelier/sons/Potato20200828_7b.mp3

Vous avez remarqué que les mouvements effectués à la souris sont répétés automatiquement, à intervalle de temps réguliers. En bas à gauche le bouton : SWARM permet de régler les répétitions des mouvements. Pas de répétition, ou 2, 4, 8, 16, 32 et 64 répétitions (tiens ! des puissances de deux).

Les répétitions des mouvements concernent là la fois le jeu sur les cordes et le déplacement des punaises.

Enfin, le bouton « Snapping » en haut à gauche montre que Ian s’est également intéressé aux grilles hexagonales. Si le « Snapping » est actif, les positions des punaises sont ajustées à la grille.

 

ianiselsewhere.com/fivestrings/(ouvre un nouvel onglet)

Catégories
Animation Graphisme Jeux Programmation

Constellations de Ian Snyder

Constellations est un jeu, un puzzle, inventé par Ian Snyder et programmé par lui-même en HTML 5 dans un « canvas » 2D.

Il s’agit de résoudre les puzzles en manipulant des élastiques accrochés à des punaises : pour le faire il suffit de reproduire le schéma linéaire des tensions, accroches et croisements proposé en haut de l’écran.

Le niveau que vous avez atteint est stocké dans le « localStorage » du navigateur de sorte que si vous revenez sur la page, les puzzles résolus ne seront proposés qu’en utilisant le bouton « back » en bas à gauche. Le bouton « skip » permet d’abandonner un puzzle pour s’attaquer au suivant.

Pour les sons, Ian Snyder utilise la bibliothèque « howler.js » (https://howlerjs.com/) développée par James Simpson. C’est dommage qu’il utilise une ancienne version de la bibliothèque, car les règles ont changé depuis 2018 : on ne peut plus utiliser l’API Audio avant que l’utilisateur n’ait interagit avec la page. Du coup, on risque de ne pas avoir de sons. (pour remédier au problème, il faut remplacer le fichier * howler.js v2.0.3 ) par le fichier * howler.js v2.2.0) Dans la console de développement sous Google Chrome (touche F12) on peut lire le message :

The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://goo.gl/7K7WLu
setupAudioContext @ howler.js:2133

Références

Lien vers une version sonore : https://www.cyclonium.com/ianestailleurs/constellations/

Jouer à Constellations : http://ianiselsewhere.com/constellations/

Voir le site de Ian Snyder : http://iansnyder.games/

L’article de « Libération » sur le sujet : https://www.liberation.fr/futurs/2018/03/26/constellations-la-musique-de-l-elastique_1638964

Note pour les programmeurs JavaScript

À noter dans le code, au hasard des lignes, pour choisir un son au hasard parmi 9 disponibles, Ian Snyder utilise la formule compacte :

1+((Math.random()*9)|0)

au lieu d’un plus clasique 1+Math.floor(Math.random()*9)

L’explication est qu’en JavaScript, l’opérateur « | » (ou inclusif binaire) n’opère que sur des entiers. Le résultat de (Math.random()*9) est donc tronqué à sa partie entière avant de passer par le « ou » avec zéro, qui évidemment conserve les bits en l’état. L’écriture est plus courte et on évite un appel de fonction.

Catégories
Algorithmes de jeu Jeux Pavages

L’envers du Tricérata

Le document suivant explique comment le jeu de Tricérata à été inventé et programmé. Cliquez sur l’image pour lire la suite;

L'échiquier du Tricérata
Numérotation des cases

Merci de m’envoyer vos commentaires et suggestions.

Catégories
Automates Jeux Mathématiques Permutations

Croisillons

Croisillons

À partir de pièces de puzzle représentant des portions de chemins, on forme le graphe d’une permutation que l’on peut interpréter comme un automate à états fonctionnel.

La page présente une vue des permutations sous forme de puzzle, c’est une introduction aux permutations, aux automates à états et tables de multiplication par croisement de fils.
L’idée est de former les permutations et d’autres applications à l’aide de pièces de puzzle que l’on fait glisser dans l’espace de construction.

Automate de multiplication
Automate pour effectuer les multiplications et divisions des nombres par 2 en base dix, construit à partir d’une permutation.

L’automate est fonctionnel : l’utilisateur peut entrer un nombre à traiter, les liens activés sont mis en surbrillance au cours du traitement par l’automate et montre les étapes de la multiplication avec les retenues.

Pour fabriquer un automate, on réserve un nombre de fils égal au produit du nombre d’états possibles de l’automate par le nombre d’entrées.
On relie les états d’entrées en haut aux états de sortie en bas à l’aide des pièces du puzzle. Les états de sortie sont associés à la valeur à délivrer à chaque nouvelle entrée traitée.
Dans la palette d’outils, l’utilisateur a accès à des exemples préfabriqués.
Il peut modifier la structure en ajoutant ou supprimant des lignes et des colonnes.
Il peut définir le plan de travail en fonction de l’automate à construire et spécifier les entrées et sorties de son automate.
La structure ainsi construite peut être sauvée ou partagée sous forme d’URL.

Les pièces du puzzle permettent également de créer des graphes qui ne sont pas des permutations.

Catégories
Jeux

Jeux de semailles

Le Tricérata

par Vincent Lesbros
4 août 2020
Jeu de semailles

Le Tricérata est un nouveau jeu de semailles de la famille des Mancalas, comme l’Awélé, le Sérata, l’Adjito ou le Pallankuli. On dispose d’un terrain de jeu constitué de trous pouvant contenir des pierres. Les joueurs ou joueuses prennent des pierres et les sèment. Les règles et variantes multiples de ce type de jeux indiquent comment les joueurs peuvent prendre les pierres adverses. Le but de ces jeux étant en général de prendre le plus de pierres possible ou de conquérir des cases.

Ci-dessous, le lien vers la page pour jouer à différentes règles et variantes de Mancalas :

Jeu de Codjito, Awélé, Sérata, Wari et Pallankuli
Jeu de Codjito, Awélé, Sérata, Wari et Pallankuli

Particularités du Tricérata

Dans la plupart des Mancalas la trajectoire de la main effectuant les semailles est constante, ce n’est pas la cas au Tricérata : le joueur choisit son parcours. Le terrain de jeu du Tricérata original est triangulaire. Les cases ou trous sont triangulaires, la circulation d’une case à l’autre au cours des semailles ou pour la prise se fait en passant d’une case à sa voisine par un bord adjacent.
En général dans ces jeux deux joueurs s’affrontent. Au Tricérata on peut jouer seul, à 2, 3, 4… ou nombre quelconque de joueurs. En mode solitaire, on tente de minimiser le nombre de coups pour prendre l’ensemble des pierres, à plusieurs on tente de gagner le maximum de pierres.
Les règles sont simples, apprises en 2 minutes, et la terminaison du jeu est garantie. Contrairement à certains jeu, il n’y a pas de situation cyclique possible.

Jeu de Tricérata
Jeu de Tricérata

Catégories
Graphes programmation Logique des prédicats Mathématiques Unification

Unificateur cyclique

Cet article présente une nouvelle version de l’unificateur, permettant de traiter des clauses partagées et/ou cycliques.

Les graphes d’unifications produits peuvent également être cycliques.

CHARGEMENT DE LA PAGE

Un clic sur la bulle emmène vers la page d’expérimentation des graphes d’unification cycliques, avec les options d’occur-check et de levée d’exception sur le premier échec.

Exemple de graphe d’unification cyclique
Cyclonium
Catégories
Composition algorithmique Musique

Irlandais

Le programme Irlandais est un programme de composition algorithmique. Il est basé sur l’analyse d’un corpus d’airs de danse irlandais.
L’usage du programme est très simple :

  • régler les paramètres
  • cliquer sur un bouton

Le programme génère alors un fichier MIDI que vous pouvez écouter immédiatement ou utiliser pour d’autres compositions musicales.
La page d’expérimentation documente l’algorithme utilisé.

Exemple

Exemple avec la partition :

https://www.cyclonium.com/atelier/composition/irlandais_-_2020-05-06T170154.myrweb.html