このプロジェクトについて

NoiseCraftは、オープンソースでブラウザベースの視覚プログラミング言語およびプラットフォームであり、サウンド合成と音楽制作を目的としています。その設計はPureDataやMax/MSPに大まかに触発されており、音楽的アイデアを交換するコミュニティを育成することを目指しています。このプロジェクトは進行中であり、READMEは貢献者に対し、構築やデバッグへの参加を明示的に呼びかけています。 noisecraft.appで試すことができ、共有プロジェクトはnoisecraft.app/browseで閲覧できます。現在はChrome、Firefox、Edgeで動作しますが、Web Audio実装の問題によりSafariでは安定して動作しません。モバイルサポートは不足していると説明されており、バグが予想されます。 設計原則: - ミニマリスト哲学:Webフレームワークを使用しない素のJS/HTML/CSSで、意図的に依存関係を最小限にし、必要な機能に焦点を当て、機能の過剰追加を避けます。 - UI設計:学習曲線と摩擦を最小限に抑え、インターフェースをシンプルで整然と保ち、可能な限りドロップダウンメニューや隠れたオプションを避け、使い慣れたキーコンビネーションを使用し、曖昧さを避けます。 - 言語設計:データ型は1つ(浮動小数点数)のみで、制御信号とオーディオ信号の区別がありません。 - 実用的な考慮事項:帯域幅とサーバーコストを低く抑えるため、画像やサウンドサンプルを避けます。サンプルを避けることで、ユーザーはサウンド生成について考えるようになります。 アーキテクチャノート: - シングルページアプリではなくマルチページ設計で、New、Help、Browseが新しいタブを開き、作業の誤損失を減らし、/browseや/helpへの直接リンクを可能にします。 - 即時モードGUI:UIはモデルアクションで再描画され、以前のプロジェクト状態を保存することでアンドゥ/リドゥを簡素化し、キャッシュにより完全な再描画を回避します。 - オーディオはAudioViewクラス(public/audioview.js)によって生成され、オーディオグラフをAudioWorkletで実行されるJavaScriptにコンパイルします。Web Audio APIは出力のみに使用され、合成には使用されないため、ブラウザやデバイス間でサウンドが一貫します。 - プロジェクトは簡単に解析できるJSON(.ncft)として保存され、外部ツールが可能になり、READMEではプロジェクトをVSTにコンパイルする可能性について推測しています。 貢献:バグ修正は歓迎されますが、プロジェクトは新機能や大きな変更には慎重であり、貢献者は提案された変更について最初に議論するためにissueを開くよう求められています。 開発セットアップ:Chromeが推奨されます。Node.jsとnpmをインストールし、npm installを実行してからnode server.jsを実行します。アプリはhttp://localhost:7773/で利用できます。テストはnode tests.jsで実行します。Dockerの手順も提供されています(docker build . -t noisecraft; docker run -p 7773:7773 -d noisecraft)。サーバー設定では、環境変数DB_FILE_PATH(デフォルトは./database.db)とHTTP_PORT_NO(デフォルトは7773)を使用します。