Skip to content

Repository files navigation

Elevator One

自動生成のアンビエント / ミニマル / ドローン音楽を鳴らすシングルファイルの楽器。 依存パッケージもビルド工程もなく、index.html をブラウザで開けばそれだけで動く。

最新版: v1.4 — 変更点は CHANGELOG.md を参照。動かしているバージョンはヘッダーのタイトルの右にも出る。

使い方

最新版は https://elevator-noise.com/ に置いてある。まずはここにアクセスすればよい。

手元のファイルで動かす場合は、index.html をダブルクリックして Safari か Chrome で開く。ブラウザの自動再生ポリシーにより読み込んだだけでは音が出ないので、右上の再生ボタン (▶) を押すと鳴りはじめ、隣の一時停止ボタン (⏸) で止まる (スペースキーでもトグルできる)。いまの状態の側が点灯するので、鳴っているかどうかは一目で分かる。▶ / ⏸ / ● の3つはアイコンだけの同じ大きさのボタンで、名称は読み上げ用の aria-label とツールチップに入れてある。iOS のロック画面に出るボタンと同じ並び。放置しておくと自動的に変化し続ける。ネットワークには一切接続しない。

iPhone / iPad のような狭い画面では、ヘッダーの下にタブ (雰囲気 / XYパッド / 音作り) が出て、1画面に1セクションずつ表示される。ページ自体はスクロールしない。

いま鳴っている雰囲気 (mood) の名前は、ヘッダーのバージョンの右・ブラウザのタイトル・ロック画面 / CarPlay の再生情報の3か所に出る。スライダーやXYパッドで値を手で変えたあとは、末尾に (edit) が付く。

表示言語は日本語と英語に対応している。初回はブラウザの言語設定で決まり (日本語なら日本語、それ以外は英語)、ヘッダーのバージョン表示の隣にある JA / EN でいつでも切り替えられる。選んだ言語はブラウザに保存され、次に開いたときも保たれる。

構造

音は2つの展開系を持ち、「和声率」でクロスフェードする。

  • ドローン展開 — 5声の持続音。緊張度に応じて音程ベクトルを協和から不協和へ連続的に補間するので、和音は微分音的に移り変わる。ピンクノイズ層と、まばらに鳴るFMベルが乗る
  • 和声展開 — マイナー調の4和音進行。2小節または4小節ごとにポルタメントなしで切り替わる。持続音としても、刻みを伴っても鳴る

これに独立した16ステップのシーケンサが重なる。ノコギリ波+矩形波+サブオシレータをレゾナンスの効いたローパスに通し、1音ごとにカットオフをエンベロープで叩く。左右で時間の異なる2系統のディレイを持つ。

すべてのパラメータは目標値に向かって「推移時間」をかけて滑らかに移動する。演奏中に値を変えると、その場で切り替わるのではなく、徐々に音が移っていく。

操作

XYパッド

横軸が明るさ (brightness)、縦軸が密度 (density)(上が疎、下が密)。ドラッグすると目標が移動し、実際の音は遅れて追いかける。白い十字が目標、琥珀のランプが現在地。

背景の色は現在地から生成される。明るいほど明度が上がり、密なほど濃い青へ、疎なほど淡い青緑へ寄る。漂う粒子は、密なら細かく多数、疎なら大きく少数になる。

パラメータ

名称 (ja / en) 内容
音量 / volume 出力音量(0〜100、既定80)。80 までは従来どおりのレベル、80 を超えるとコンプを深めて持ち上げ、音圧を稼ぐ
重さ / weight 全体の音域を下げ、低音の量を増やす
ゆらぎ / motion LFOの深さと速さ。背景グラデーションの呼吸にも連動
緊張 / tension 和音の音程を協和から不協和へ連続的に変える
空間 / space リバーブとディレイの量
ざらつき / grit 歪み、リングモジュレーション、粉塵ノイズ、微細なグレインを同時に立ち上げる
推移時間 / glide 目標値に追いつくまでの時間(5〜300秒)

シーケンサ

名称 (ja / en) 内容
音量 / level 0にするとドローンだけになる
速度 / tempo 55〜150 BPM
変異 / mutate 1小節ごとに音程・ゲート・オクターブが書き換わる確率
カットオフ / cutoff フィルターの開き具合(110〜3200Hz)
レゾナンス / resonance フィルターのQ

展開

名称 (ja / en) 内容
和声率 / harmony 0でドローン展開、1で和声展開。中間は両者が重なる
刻み / chop 0.08未満で持続音。上げると刻みが細かくなり、0.5以上で和音の切り替わりが4小節から2小節ごとになる

その他

  • 雰囲気 / mood — 15種のプリセット。全パラメータを一括で設定する
  • シャッフル / shuffle — 既定でON。雰囲気を一定間隔でランダムに切り替える。切り替えは「推移時間」に従ってクロスフェードする。プリセットを直接選ぶ、スライダーを動かす、XYパッドを操作すると自動的にOFFになる
  • 切り替え間隔 / interval — シャッフルの間隔を10〜120秒で決める (既定30秒)。動かすとその場で次の切り替えに反映され、シャッフルはONのまま
  • 自動漂流 / auto drift — 目標値と根音がゆっくり自然に揺れ続ける
  • シーケンス再生成 / reseed sequence — 16ステップの音程とゲートを引き直す

実装

Web Audio API のみ。外部ライブラリなし。合成、エフェクト、スケジューリングをすべて index.html 内に持つ。

シーケンサとコード進行は AudioContext.currentTime を基準に約21msごとの先読みでスケジュールしている。パラメータの平滑化は100msごとの指数補間で、その値を setTargetAtTime でオーディオグラフに渡す。

iOS で画面をロックしたりブラウザを裏に回しても鳴り続けるよう、出力は <audio> 要素経由にし、スケジューリングの時計は AudioWorklet に置いてある (どちらも iOS が Web Audio とタイマーを止めにくるため)。対応していないブラウザでは従来の経路に自動で戻る。ロック画面には再生/一時停止のボタンが出る。

ただし iPadOS では画面をロックしたまま 50分ほど再生し続けるとページごと落ちる (Issue #23)。音が止まるのではなくタブが終了しており、前面に戻すと読み込み直された状態になるので、再生を押し直す必要がある。アプリ側で作るノードやパラメータ操作を完全にゼロにしても再現するため、こちらで打てる手は見つかっていない。macOS の Safari では6時間連続でも問題ない。

ライセンス

MIT

開発者向け情報

保守・追加開発のための詳細は docs/ を参照。

  • CHANGELOG.md — バージョンごとの変更点
  • docs/ARCHITECTURE.md — オーディオグラフの結線、パラメータの流れ(target→current→AudioParam)、 各サブシステム(質感チェーン・シーケンサ・展開の和声進行)の実装詳細
  • docs/PRESETS.md — 15種のプリセットそれぞれの設計意図と、新規プリセットを作るときの目安
  • docs/TESTING.md — Playwright によるテストの走らせ方と、テストを足すときの指針

About

アンビエント / ミニマル / ドローン音楽を自動生成

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages