ライトニングトーク
自己紹介
所属:Hokkaido.pm
TwitterID:@techno_neko
職種:組み込み系
背伸びした LT は疲れました。
そろそろ perl で LT がしたいデス。
今日は、
等身大の LT をお送ります。
等身大って?
等身大って?
自分らしさって?
TwitterID に

techno が入ってるくらい
テクノミュージックが好き!
今日は、perl で音楽やります!
題して、
perl meets beats!
でも、音楽ソフト作るとかムリ!
WAV ファイルを書き出そう!
WAV ファイルのフォーマット
WAV ファイルのフォーマット




Google で検索がオススメ。
WAV ファイルのフォーマット

・サンプリング周波数
・量子化ビット数
・音の長さ
・モノラル or ステレオ
WAV ファイルのフォーマット

・サンプリング周波数
・量子化ビット数
・音の長さ
・モノラル or ステレオ

 あとは、書き出すだけ!
例)ラの音 (440Hz) を出す

 サンプリング周波数 : 44,100Hz
 量子化ビット数 : 8(-128〜+127)
 音の長さ : 1 秒
 モノラル
       44,100 / 440
          1 周期



  データの長さ = サンプリング周波数 × 音の長さ
perl meets beats!

          こんな感じで宣言して、
beats を WAV ファイルに書き出したい!

my $bpm = 138;
my $beats = {
   kick => [ 1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0 ],
   snare => [ 0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0 ],
   hat   => [ 0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0 ]
};
perl meets beats!

波形を作る
 ・のこぎり波

 ・sin 波

 ・矩形波

 ・ノイズ
perl meets beats!

単発の波形を作る
 my $wav_kick = create_oneshot( 50, 0.1, $osc_saw );
 my $wav_snare = create_oneshot( 1000, 0.05, $osc_noise );
 my $wav_hat = create_oneshot( 5000, 0.05, $osc_noise );




キック、スネア、ハイハットを用意しました。
perl meets beats!

ビートを刻む
my $ch_kick = to_wav( $beats->{kick}, $wav_kick );
my $ch_snare = to_wav( $beats->{snare}, $wav_snare );
my $ch_hat = to_wav( $beats->{hat}, $wav_hat );




       あとは、一緒に鳴らすだけ!
合
体
perl meets beats!

波形の合成
my $val = $ch_kick->[$i];
$val   += $ch_snare->[$i] * 0.8;
$val   += $ch_hat->[$i] * 0.4;

       これがシンセサイズだ!
まとめ
まとめ
・比較的まともな音が出せる
まとめ
・比較的まともな音が出せる

・音楽を perl で生成できる
まとめ
・比較的まともな音が出せる

・音楽を perl で生成できる

・デジタル信号処理が学べる
まとめ
・比較的まともな音が出せる

・音楽を perl で生成できる

・デジタル信号処理が学べる

もし、興味を持っていただけたなら・・・
続きは Web で!
https://github.com/techno-cat/NeSynth/
ご清聴ありがとうございました。

More Related Content

PDF
perl meets beats.
PDF
真・聴力検査 HACKS
PDF
Rubyist生活に欠かせないブロック構文の話
PDF
アセンブラ短歌 - 坂井弘亮
PDF
記念撮影で気を付けるべき 4 つのこと
PDF
画像を縮小するお話
PDF
GUIアプリに必要な3つのこと
PDF
テーマ「なんでもないようなこと」
perl meets beats.
真・聴力検査 HACKS
Rubyist生活に欠かせないブロック構文の話
アセンブラ短歌 - 坂井弘亮
記念撮影で気を付けるべき 4 つのこと
画像を縮小するお話
GUIアプリに必要な3つのこと
テーマ「なんでもないようなこと」
Ad

テーマ「perl meets beats」