概要

サウンドプログラミング初心者のための教育用Pythonライブラリ Simple Sound Programming を公開しました.

本ライブラリは,開志専門職大学の基礎ゼミⅡ「音・音楽 × 情報」での授業実践から生まれました.このゼミでは Python と Sonic Pi を使って音と音楽のプログラミングに取り組んでいますが,受講生との試行錯誤を重ねる中で,初学者がつまずきにくい教材の形として,「数式がそのままコードになる」透明な設計のライブラリが必要だと感じ,開発に至りました.また,鈴木ゼミ(4年ゼミ)のメンバーには,ライブラリの設計やレッスン内容について多くのフィードバックをもらい,改善に貢献してもらいました.

デジタル信号処理と音響合成の基礎を Python で体験的に学ぶことができます.Google Colab で動作するレッスンノートブックも用意しており,環境構築なしですぐに始められます.

特徴

数式→コードの対応が見える設計

教科書に出てくる信号処理の数式と,ライブラリのコードが1対1で対応するよう設計しています.ブラックボックスを排し,「何が起きているか」を理解しながら音を作ることができます.

from audio_lib import sine_wave, adsr, save_audio

# 440Hz(ラ音)のサイン波を1秒間生成
signal = sine_wave(440, 1.0)

# ADSRエンベロープで自然な音に
envelope = adsr(1.0, attack=0.1, decay=0.2, sustain=0.7, release=0.3)
sound = signal * envelope

save_audio("my_sound.wav", sound)

Google Colabレッスン(全7回)

以下のレッスンノートブックをColabで直接開いて学習できます.

レッスン 内容
Lesson 01 基礎とサイン波・サンプリング
Lesson 02 エンベロープとADSR
Lesson 03 周波数分析(FFT)
Lesson 04 フィルターと音色デザイン
Lesson 05 オーディオエフェクト
Lesson 06 MIDIとシーケンサー
Lesson 07 最終プロジェクト

各レッスンはGitHubリポジトリの colab_lessons/ フォルダから直接Colabで開くことができます.

波形生成から楽曲制作まで

基本的な波形生成(サイン波・ノコギリ波・矩形波など)に加え,フィルター,エフェクト(リバーブ・ディストーション・ディレイ等),楽器モデル(ピアノ・ギター・オルガン・ドラム),シーケンサーまでを備えており,段階的にステップアップしながら最終的には楽曲制作まで到達できます.

想定する利用シーン

  • 大学の基礎ゼミや高校の探究学習でのサウンドプログラミング入門
  • Python学習者が「音」という具体的な題材を通じて信号処理の基礎を学ぶ
  • 授業・ワークショップでの教材として

ライブラリはMITライセンスで公開しています.フィードバックや改善提案は GitHub Issues にてお待ちしています.