Skip to content

Repository files navigation

Elevator Two

自動生成のエレクトロを鳴らし続けるシングルファイルの楽器。 elevator-one の技術的な骨格を踏襲しつつ、音楽的には別物を目指す。

最新版: v0.6 — 変更点は下の変更履歴を参照。

ネットワークには一切繋がない。

index.html をブラウザで開き、卓の中央にある大きな再生ボタンを押すと鳴りはじめる (右上の小さなボタンでも同じ)。ブラウザの制限で、開いただけでは音は出ない。 シーンが数分ごとに移り、16小節ごとにフレーズが変わり、4小節の節目にブレイクや フィルタが入る。中央の卓には全スライダーと音源ごとの個別の音量が並ぶ。 いま何が起きているかは control の右の monitor に、波形やステップ列と一緒に表示される。 個別の音量はこのブラウザに保存され、reset all で既定値に戻せる。 control の loop bar を押すと、いま鳴っている小節だけを繰り返す。 tonality の shift を上げると調が平行にずれるようになり、lush を上げると e.piano と strings がテンションの多い開いた和声になる。 シーンが変わる直前の小節ではシーン名が点滅し、ダブかオカズが入る。 見た目は EK (ダーク & サイバネティクス) 固定、表示は英語のみ。

設計の議論と決定は docs/DESIGN.md に集約している。 D-1 から順に決定事項を積み、末尾に実装の順序を記した。 シーンの定義は docs/SCENES.md、実装の構造は docs/ARCHITECTURE.md、 テストは docs/TESTING.md に分けてある。

目指すもの

  • minimal techno を土台に、electro funk / dub techno / グリッチを混ぜる
  • ベースが中核。TB-303 的なアシッドではなく、Minimoog 的な厚く粘るフィルタの動き
  • ドラムは TR-808 系のアナログ発音方式を自前合成。サンプルは持たない
  • ハーモニーは3つの独立回路 (dub のスタブ / 高揚する持続 / ジャズ・ボッサの彩り)
  • 数分ごとに曲調が変わり、4 / 8 / 16 小節の節目にブレイクやフィルタが入る

elevator-one との関係

elevator-one elevator-two
音楽 アンビエント / ミニマル / ドローン エレクトロ (minimal techno を土台に electro funk / dub techno / グリッチを混ぜる)
時間軸 漂い続ける。明確な展開を持たない 数分ごとの曲調変化と、4 / 8 / 16 小節ごとのブレイク
リズム 独立した16ステップシーケンサ1系統 4つ打ちを基本とする多トラック構成。トラックごとに生成方式を変え、種で反復を保つ
実装 単一 index.html、ビルド工程なし 同左を踏襲

コードは共有せず、one から土台をコピーして分岐させる。共通化のための仕組みは持たない。

変更履歴

v0.6 (2026-09-17)

和声に彩り (shift / lush) を足し、リフにバリエーションを持たせた。mixer に発音インジケーターを置き、about ページとコミット番号の表示を足した。

  • tonality に shift と lush を足した。shift は8小節の節目で調を平行にずらし、lush は e.piano と strings をテンションの多い開いた和声にする。既定値はどちらも 0.5 (D-65 / D-66 / D-70)
  • 和音の進行を全回路で2倍の速さにした (D-67)
  • e.piano を Rhodes 系の FM の音に作り直した (D-68)
  • キックの量を7割にした (D-73, #12)
  • リフにバリエーションを持たせた。置き場所の型6種、モチーフの記憶と呼びかけ・応答、上の音域と群ごとの性格、 回ごとの音色 (ディケイ・カットオフ・レゾナンス) とフレーズ内の動き、FM ベルの明暗、3割でメロディ全体を1オクターブ下げる (D-74〜D-79)
  • 再生開始時のシーンを stab / dark の群から選ばないようにした (D-80, #18)

操作と見た目

  • mixer の発音要素すべてに発音インジケーターを置いた。ドラム系は発音の頭だけ光る。mixer に無い reverse にはインジケーターだけの行を置いた (D-82, #17)
  • バージョンの横に7桁のコミット番号を出すようにした。デプロイで git archive が差し込む (D-81, #16)
  • about ページを足し、ヘッダーと、大きな再生ボタンの下の READ ME FIRST から辿れるようにした。about へのリンクは別タブで開く (D-71 / D-72)
  • タイトルの左に上の階層へのアイコンのリンクを置いた。別タブで開くので演奏は止まらない (D-69, #15)
  • 狭い画面でヘッダーが2行に落ちないよう、長いシーン名を省略して1行を保つ (D-69)

開発

  • リフを待たずに確かめる指定を足した: ?sparkrhythm= / ?sparkmotif / ?sparkfold= / ?sparkq= / ?sparkcut= / ?sparkrescomp= / ?sparklow
  • 使われていない industrialHit の重複定義を削除した

v0.5 (2026-09-14)

XYパッドをスライダー卓に置き換えた。UI は英語だけにし、YouTube の背景動画もやめた。

操作と見た目

  • XYパッドを廃止し、中央を control / monitor / mixer の卓にした。dark-bright と density もスライダーになった (D-54 / D-57 / D-61)
  • mixer に音源ごとの個別音量を置いた。ドラム10種、funk とそれ以外のベース、strings / chord chop / stab / e.piano / sequence、 リフの本体とベル、ベルの FM 比率、industrial noise。値はこのブラウザに保存し、reset all で既定値に戻す (D-54 / D-57)
  • 音量スライダーに SOLO / MUTE を付けた。MUTE が SOLO より強い。状態は保存しない (D-59)
  • いま鳴っている小節だけを繰り返す loop bar を足した (D-56)
  • BPM・小節・波形・ステップ列・進行の表示を、control の右の monitor に集めた (D-61)
  • シーンが変わる直前の小節でシーン名が点滅する。next は乗り換えるまで、loop bar は有効な間、点滅する (D-62 / D-63)
  • 表示を英語に統一し、言語の切り替えは廃止した (D-55)
  • YouTube の背景動画を廃止した。これで再びネットワークに一切繋がらない (D-60)

  • シーンが変わる直前の小節は、40% でダブ、それ以外はオカズで合図する (D-62)
  • ダブの判定を32小節ごとから8小節ごとにし、出やすくした (D-49)
  • 次のシーンは別の群を優先して選ぶ。群をまたぐ遷移が 67% → 84% に (D-53)
  • 太いベースは同じ音程が続くとオクターブを上下させ、揺らぎを音程にも掛ける (D-51)
  • リフの旋律にオクターブ下の音をアクセントとして混ぜた (D-52)
  • snare を少し上げ、e.piano の立ち上がりを鋭くし、other bass のサスティンを下げた (D-58)
  • リフ全体の量を ×0.75 に、シンバルを1オクターブ上げてハイパスで明るくした (D-63 / D-64)

不具合

  • ミックス遷移中に手でシーンを選ぶと、進行が止まることがあったのを直した (D-5)

開発

  • tests/i18n.spec.jstests/video.spec.jstools/yt-probe.sh を削除した
  • 変更の有無によらず落ちうることが分かったオカズの試験は、待ち上限を延ばした

v0.4 (2026-09-12)

音の追加が3つと、見た目の整理。

  • キラキラしたリフを足した。鋸2基と矩形1基に速さの違う2本の LFO を掛けて濁らせ、 非整数比で変調した FM のベルを重ねる。4フィート。4小節区間の4小節め、あるいは 2小節めに、和音の構成音だけでできた4分音符3〜5個が毎分1〜2回だけ出る (D-48)
  • ダブを入れた。1小節だけドラムを落として全体をディレイに放り込み、小節の終わりの オカズで戻す。ディレイはフィードバックを上げて返しを育て、小節末か次の小節の 1拍終わりで切って落とす。electro funk のシーンで32小節ごとに30% (D-49, #3)
  • サスティンのある音色で旋律が単純な小節に、9%の確率でベースにビブラートを掛けた (D-50)
  • 持続コード音の量を7割に落とした

見た目

  • テーマを EK (ダーク & サイバネティクス) 固定にし、切り替えは廃止した (D-37)
  • 英語表示の yin / yang を dark / bright にした

開発

  • ?spark / ?dub / ?fill を足した。たまにしか出ない仕掛けを、待たずに起こせる
  • regenerate() を「並びを作る」「ベースを測る」「装飾を置く」に割った。 装飾の置き場所には順序の依存があるので、それを関数の形で明示にした
  • テストの実行時間を 2.8分から 1.9〜2.1分へ。余裕の薄い測定2件を安定させ、 並列度を上げた。実時間で音を鳴らす試験なので、マシンの負荷に弱いことも書き残した

v0.3 (2026-09-11)

聴いた結果の調整と、見た目まわりの追加。

  • エレピを作り直した。FM の金属質な音 (v0.2) をやめ、Juno-106 のようなパルス幅変調の 矩形波にコーラスを掛けた音へ。さらにディケイを詰め、フィルタも同じ速さで閉じて歯切れを出した (D-40 / D-41)
  • インダストリアル・ノイズの層を足した。16分5〜15個または8分5〜7個の周期で回るので 小節に乗らず、ポリリズムになる。音色は1音ごとに不規則に振り、7割は左右で独立した周期を持つ (D-38)
  • コード弾きに連打のバリエーションを足した。持続音の代わりに短い和音を刻み、 専用の ping-pong ステレオディレイへ送る (D-34)
  • ベースを整えた。音程が動かない小節ではフィルタとレゾナンスを1音ごとに大きく振り、 音符が5未満の小節ではフェーザーで補う。全体の量は少し下げた (D-39 / D-42)
  • フェーザーとシーケンス掃引を第3層イベントに追加。掃引は35%の確率でレゾナンスを 発振寸前まで上げる (D-28 / D-29)
  • ベースのタイトな音色を、シーンによらず半々で引くようにした (D-25)
  • スライダーの既定値を変更 (重さ0.1 / 空間0.1 / グリッチ0.9 / 展開0.9 / 変異0.8 / 推移時間5s)

見た目

  • XYパッドの背景にオシロスコープを置いた (D-36)
  • UIのテーマを3つにした。既定 (海) / TE (ミニマル & インダストリアル) / EK (ダーク & サイバネティクス) (D-37)
    • その後 EK 固定にし、切り替えは廃止した (2026-09-12)

背景の動画

  • XYパッドの背景に YouTube の動画を流せるようにした。シーンの英語名と性格を表す語で CC BY の動画を探し、4小節ごとにクロスフェードで差し替える (D-32 / D-33)
  • API キーはユーザーが画面から入れ、このブラウザにだけ保存する。キーが無ければ一切通信しない
  • 検索結果を30日取っておき、日々の手入れは videos.list (1単位) で行う。 search.list は100単位なので、消費を1/20以下に抑えた (D-35)
  • 検索語を手で試す tools/yt-probe.sh を置いた

v0.2 (2026-09-10)

初めて通して聴いたあとの調整。

  • ベースが和音を無視していたのを直した。度数をいま鳴っている和音から引き、 ルートを基本にする。あわせて音域の基準がずれていた (12の倍数でなかった) のを修正 (D-17)
  • ベースの旋律が動きすぎていたのを抑え、2小節以上は同じ形を保つようにした (D-19 / D-30)
  • ベースの厚みをパルス幅変調で作り、サスティンを持たないタイトな音色を加えた (D-18 / D-25)
  • 並びが切り替わる前の小節にオカズを置くようにした。35%の確率で次の小節へはみ出す (D-20)
  • 16分のシーケンスと、その専用ステレオディレイを足した (D-21)
  • ブレイクが何小節も続くのをやめ、長くて1小節に収めた (D-24)
  • シーン構成を electro funk へ寄せた (持続/陽を2つ減らし funk に歯車・火花を追加) (D-31)
  • 並びを種から決めるようにして、ミニマルに要る反復が出るようにした (D-14)

v0.1 (2026-09-10)

設計 (D-1 〜 D-13) と、実装順序 1〜8 のひと通り。

  • 進行の3階層 (シーン / フレーズ / イベント) と、陰陽を20〜40分で往復する長周期の波
  • TR-808 に倣ったドラム音源 (キット4種) と、トラックごとに方式を変えるリズム生成
  • Ladder フィルタ (AudioWorklet) を核にしたベース
  • ハーモニー3回路 (持続 / スタブ / ジャズ・ボッサ)
  • シーン14種と、遷移3方式 (ブレイク / 連続変形 / DJミックス風)
  • 操作UI (XYパッド = 陰陽 × 密度、スライダー、シーン一覧と次へ)

ライセンス

MIT

About

自動生成のエレクトロを鳴らし続けるシングルファイルの楽器

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages