Sceeker's stuff

Accueil Informatique Électronique DiversLiens




Terry Davis était un incroyable programmeur atteint de schizophrénie, maladie l'ayant fait petit à petit tomber dans une sorte de folie jusqu'à sa mort (supposément un suicide) en 2018, alors qu'il était agé de 48 ans.
Après avoir travaillé quelques années comme programmeur dans une société américaine, il a travaillé chez lui pour créer une CNC pour particulier et a entretenu des projets personnels, dont celui de créer son propre système d'exploitation, à partir de rien, un travail colossal.
Après avoir abandonné la création de la CNC, il a seulement travaillé sur son OS nommé, après de nombreux changement de noms, TempleOS.
Très probablement à cause de sa maladie, Terry a pensé avoir eu une révélation, que Dieu l'avait contacté, et lui avait en réalité ordonné de créer ce système d'exploitation comme "temple religieux". Ainsi on trouve dans l'OS de nombreux "outils" permettant d'intéragir avec Dieu.
Dans TempleOS se trouve un programme nommé Psalmody qui permet d'éditer des "partitions musicales" pour les écouter etc... Et une des fonctionnalité est de créer une musique "de Dieu". Dans TempleOS, profondémment implanté dans l'OS, se trouve un générateur de bits/nombres "de Dieu". Il s'agit en fait d'une sorte de générateur de nombres aléatoires, cependant la graine utilisée pour générer les nombres nécessite une intervention de l'utilisateur: celui-ci doit appuyer soit un bouton plusieurs fois. Sont alors enregistrés les dates des clics avec l'horloge de l'OS, dates lesquelles est créée la graine de génération. Cette fenêtre où l'on appui sur un bouton s'apelle le "God picker". Terry explique en fait que lors de son utilisation, Dieu vous "manipule" et c'est lui qui décide de quand vous cliquez sur le bouton. Ainsi, la graine serait directement issue de Dieu. Ensuite, la génération de nombres aléatoires issu de cela permet de créer des musiques "de Dieu", qui sont donc des musiques générées aléatoirement.
Bien sûr, Terry explique qu'il y a améliorer l'algorithme et les options possibles sur ces musiques, afin qu'elles soient moins dissonantes etc...

Voici donc une adaptation en langage C de l'algorithme de génération des nombres alétoires (où les dates provenant du God picker seront simplement remplacées par des dates aléatoires, pour pouvoir permettre au programme de fonctionner sans l'intervention de l'utilisateur), de l'algorithme de génération des musiques "de Dieu", du système de notes musicales de TempleOS. Les sons un peu "granuleux" et "clunky" de TempleOS sont ensuite "émulés" lors de l'enregistrement des musiques en fichier .wav.
Pour cela, après avoir analysé quelques musiques provenant de TempleOS, j'ai fais une fonction périodique définie par morceau que voici:


Ca donne ça:

Ensuite on rajoute une autre petit sinusoïde :

Puis un peu de bruit (c'est subtil):

Enfin, il est possible lors de l'enreistrement du fichier, de diminuer la résolution si on le souhaite:

Pour la partie génération aléatoire/musique, j'ai un peu la flemme, si ça intéresse vraiment autant aller fouiller un peu dans le code source disponible sur GitHub. J'ai annoté les endroits où je n'ai fais que transcrire le code HolyC (le langage qu'à créé Terry pour écrire son OS, dérivé du C/C++) en C, je l'ai écris.
Pour ce qui est de cette page, c'est ça qui génère les musiques du stream, que FFmpeg publie en RTMP sur nginx avec le module pour, qui passe ensuite en HLS pour être lu ici. Immonde je sais. Il y a une pause de 1.5s entre chaque musique.