À propos du projet
NoiseCraft est un langage de programmation visuel et une plateforme open-source fonctionnant dans le navigateur, dédiés à la synthèse sonore et à la création musicale. Son design s'inspire librement de PureData et Max/MSP, et il vise à favoriser une communauté d'échange d'idées musicales. Le projet est en cours de développement et le README invite explicitement les contributeurs à aider à sa construction et à son débogage.
Vous pouvez l'essayer sur noisecraft.app et parcourir les projets partagés sur noisecraft.app/browse. Il fonctionne actuellement sur Chrome, Firefox et Edge, mais pas de manière fiable sur Safari en raison de problèmes d'implémentation de Web Audio. Le support mobile est décrit comme insuffisant, et des bugs sont à prévoir.
Principes de conception :
- Philosophie minimaliste : JS/HTML/CSS pur sans frameworks web, dépendances intentionnellement minimales, concentration sur les fonctionnalités nécessaires, et évitement de l'inflation des fonctionnalités.
- Conception de l'interface : minimiser la courbe d'apprentissage et les frictions, garder l'interface simple et épurée, éviter les menus déroulants et les options cachées dans la mesure du possible, utiliser des raccourcis clavier familiers, et éviter toute ambiguïté.
- Conception du langage : un seul type de données (nombres à virgule flottante), et aucune distinction entre signaux de contrôle et signaux audio.
- Considérations pratiques : éviter les images et les échantillons sonores pour maintenir des coûts de bande passante et de serveur faibles ; éviter les échantillons pousse également les utilisateurs à réfléchir à la génération sonore.
Notes d'architecture :
- Conception multi-pages plutôt qu'une application à page unique, de sorte que New, Help et Browse ouvrent de nouveaux onglets, réduisant la perte accidentelle de travail et permettant des liens directs vers /browse et /help.
- Interface en mode immédiat : l'interface est redessinée lors des actions du modèle, ce qui simplifie l'annulation/refaire en stockant les états précédents du projet, avec mise en cache pour éviter les redessins complets.
- L'audio est produit par la classe AudioView (public/audioview.js), qui compile le graphe audio en JavaScript exécuté dans un AudioWorklet. L'API Web Audio est utilisée uniquement pour la sortie, pas pour la synthèse, afin de maintenir un son cohérent entre les navigateurs et les appareils.
- Les projets sont sauvegardés en JSON facilement analysable (.ncft), ce qui pourrait permettre l'utilisation d'outils externes, le README évoquant la possibilité de compiler les projets en VST.
Contribution : les corrections de bugs sont les bienvenues, mais le projet est conservateur quant aux nouvelles fonctionnalités et aux changements majeurs ; les contributeurs sont invités à ouvrir un ticket pour discuter d'abord des changements proposés.
Configuration de développement : Chrome est recommandé. Installez Node.js et npm, exécutez npm install, puis node server.js ; l'application est disponible à l'adresse http://localhost:7773/. Les tests s'exécutent avec node tests.js. Des instructions Docker sont fournies (docker build . -t noisecraft; docker run -p 7773:7773 -d noisecraft). La configuration du serveur utilise les variables d'environnement DB_FILE_PATH (par défaut ./database.db) et HTTP_PORT_NO (par défaut 7773).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.