3 ポイント 投稿者 GN⁺ 2024-08-11 | 1件のコメント | WhatsAppで共有
  • Sonic Pi: Rubyを作曲ツールとして使う

  • 背景

    • 筆者はもともと音楽専攻だった
    • Web開発者として働くうちに、技術的な作業に夢中になるようになった
    • さまざまな楽器を扱うのが難しく、電子音楽にも挑戦したが失敗した
    • 最近、Sonic Piを通じて再び音楽とコーディングを結びつけるようになった
  • Sonic Piの紹介

    • Sam Aaronが作ったSonic Piは、コードで制御されるソフトウェアシンセサイザーである
    • Rubyを拡張したドメイン特化言語(DSL)を使って、音楽やオーディオの概念をマッピングする
    • たとえば、:c4 のようなシンボルで音符を表し、chord(:d3, :maj7) のようなコード生成子を使う
  • プロジェクトの目標

    • Sonic Piだけを使って1つのデモを作曲することが目標だった
    • MIDIや外部サンプルを使わず、純粋にコードだけで作曲した
  • 基本コード例

    • use_bpm 70 でBPMを設定し、use_synth :pulse でシンセサイザーを設定する
    • play :c2sleep 0.25 のようなコードで音符を再生し、時間間隔を設定する
    • play_pattern_timed [ :c3, :d3, :e3, :g3 ], 0.25 でパターンを再生する
  • コードの最適化

    • 繰り返しのコードを減らすために関数を定義する
    • def arpeggiate(root, is_minor = false) 関数でアルペジオパターンを生成する
    • in_thread do ブロックを使ってコードを並列に実行する
  • 並列実行

    • in_thread do ブロックを使って2つの「楽器」を並列に実行できる
    • たとえば、1つのスレッドでアルペジオを実行し、別のスレッドでメロディを実行する
  • 合唱の実装

    • ring を使って複数の音符を1つのリストに結合する
    • play_pattern_timed [ring(:c5, :e5)], 4, sustain: 3.8 のように音符を再生し、持続時間を設定する
    • def choral_rings(notes, sus) 関数を定義して、合唱パターンを簡単に作れるようにする
  • ライブループ

    • live_loop を使って無限に繰り返されるループを作成する
    • live_loop :harp do のようにループを定義し、その中にコードを書く
  • 結論

    • プログラミングは単なる科学ではなく芸術である
    • コードを書くことは創造的な行為であり、他者とコミュニケーションする方法でもある
    • Sonic Piを通じて音楽とコーディングを結びつけ、創造的な作業ができる

GN⁺のまとめ

  • Sonic Piは、コードで音楽を作曲できるツールで、Rubyを拡張したDSLを使用する
  • このプロジェクトは、Sonic Piだけを使って1つのデモを作曲することを目標としている
  • プログラミングには科学だけでなく芸術的な側面もあり、Sonic Piはそれをよく示している
  • 音楽とコーディングを組み合わせて創造的な作業ができる好例である
  • 類似機能を持つツールとしては、TidalCyclesとSuperColliderがある

1件のコメント

 
GN⁺ 2024-08-11
Hacker Newsの意見
  • ライブコーディングに関心があるなら、Glicolを試してみる価値がある
  • TidalCyclesもおすすめできる。HaskellとRubyのDSL作成能力を称賛している
  • Glicolの言語設計は、シンセサイザーに着想を得た文法、作曲速度、サウンドデザインのしやすさを重視している
    • 既存のプログラミング習慣を反映しつつ、既存言語に縛られないDSLを設計することが目標である
  • Rubyは文法がほとんど英語のようになっていて、非常に有用である
  • Sonic Piの創始者であるSam Aaronのライブパフォーマンスを見たことがある
    • コードを変更するたびに音楽が進化していく様子が印象的だった
  • Ruby開発者として、アルゴリズムで生成された音楽を作るのに使えそうで、とても興味深い
    • 例えば、騒がしいgit repositoryのイベントをアルゴリズム音楽にするのに使えそうだ
  • 音楽家としては、MIDIキーボードやアコースティック楽器を録音してループさせるほうが、より良いUXである
    • Ruby DSLを使って何でも入力できるが、ピアノキーボードと比べるとUXは良くない
    • Logicを置き換える用途には使わないと思う
  • 音楽をプログラミングする別のアプローチとして、Python向けのscampをおすすめする
    • 作者がYouTubeに複数の動画を投稿している
  • 数年前にSonic Piを使ってTHX Deep Noteを再現したYouTube動画を見たことがある
    • 最初は何をするのか説明せず、音を少しずつ調整しながら、最終的にDeep Noteを作り上げていた
    • その動画をもう一度見つけられないのが残念だ
  • 最近Sonic Piのことを考えていて、いくつか動画を見た
    • 数年前に少しだけ使ってみたことがある
  • HTMLコメントが正しく動作しない。エディタが2つのハイフンを1つのemダッシュに変換してしまう
  • Sonic Piライブコーダーのalsoknownasroxに応援の言葉を送る
  • 本当に素晴らしいデモである
    • ただし、Safariではサイトのレイアウトが崩れている