Python音楽時代はここに来た!Pythonで作るTiny DAW.LaunchPadを動かす #pyconjp #pyconjp_201

Pythonで作るTiny DAW (Digitai Audio Workstation) Ransui Iso @ransui 説明 ある日YouTubeを見ているとボタンがいっぱいついたデバイスでライブパフォーマンスをしている動画が目に留まりました。調べてみるとnovation社のLaunchPadというデバイスを使っているようです。これは面白そうと早速入手しましたが、付属しているDAWソフトウェアはプロユースにも対応するレベルのもので、難しくてとても使いこなせません。どうしましょう。そうです。Pythonを使って自分が使いやすいDAWを作ってしまえばいいのです! 続きを読む
1
Ransui Iso @ransui

人生をうまくやっていくための俺様ルール3つ。1.「できるだけ選択肢・可能性の多い方に向かう」 2.「我慢しない」 3.「努力しない」 - Standard notation: Any opinions are my own.

Ransui Iso @ransui

明日のセッションで紹介するプログラム。あっちこっちのライブラリから便利機能摘まみ食いしまくりでキメラ状態。だが全体としてはちゃんと読めるし破綻もしてないとおもうですよ。やっぱりPythonはお手軽ホビーストに最適言語でありますな #pyconjp

2016-09-20 18:40:27
Ransui Iso @ransui

今年も機材持ち込みなので荷物が激しく重いです。 #pyconjp

2016-09-21 09:21:24

giginet @giginet

PythonでDAW作るヤツ聞きに来た #pyconjp_201

2016-09-21 13:04:19
トゥギャッター開発まとめ @tg__dev

#pyconjp #pyconjp_201 Pythonで作るTiny DAW (Digitai Audio Workstation) はじまります! pic.twitter.com/BMFm0zI0sJ

2016-09-21 13:06:53
拡大
giginet @giginet

テノリオンみたいなの出てきた #pyconjp_201

2016-09-21 13:08:59
Tetsuya Morimoto @t2y

押せば押すほど豪華になる、音の知識がないからうまく表現できないT_T #pyconjp_201

2016-09-21 13:11:18
tock203 @tock203

PythonでLaunchpad弄る話聞いてる 製品付属のソフトウェアが高機能すぎて使いづらかったのでシンプルなものを自分で作ったと #pyconjp_201

2016-09-21 13:13:48
Tetsuya Morimoto @t2y

音の始めをあわせるためにタイマーがいるんだよ、へー #pyconjp_201

2016-09-21 13:14:26
にしもつ @24motz

オーディオの開発、リアルタイム性と多重発音が必要 #pyconjp_201

2016-09-21 13:16:01
トゥギャッター開発まとめ @tg__dev

#pyconjp #pyconjp_201 DAW必須機能  リアルタイム性←重要!   30msもずれると人はズレに気付いてしまうので、できるだけレイテンシ(遅延)は減らさなければならない   発音中も各種捜査ができる必要がある(エディット・再生は分けたくない)

2016-09-21 13:16:51
トゥギャッター開発まとめ @tg__dev

#pyconjp #pyconjp_201 リアルタイム性の確保 ・エフェクタを考えなければそんなに難しくない →入出力のブロッキングだけ気をつける シングルスレッドで作ると、どこかで詰まると全部詰まってしまうので、マルチスレッドで作る部分が必要 pic.twitter.com/brhcxmJCAk

2016-09-21 13:21:10
拡大
Tetsuya Morimoto @t2y

device に対して reader, writer がマルチスレッドで動いていてイベントやキューを扱う。普通のアーキテクチャで実現できる #pyconjp_201

2016-09-21 13:23:34
トゥギャッター開発まとめ @tg__dev

#pyconjp #pyconjp_201 音声の多重再生 自前で実装しようとすると大変 ・複数のバイト列を合成する ・PCMバイトストリームは非同期に入ってくる ・最終出力バッファリング精度 ・リアルタイム処理&ブロッキングの注意

2016-09-21 13:23:54
トゥギャッター開発まとめ @tg__dev

#pyconjp #pyconjp_201 >>>Pythonistaはめんどくさいことはやらない<<< PyGame on SDL2 を使用 SDL2のPythonWrapper SDL→Simple Direct media Layer メディア系の総合ライブラリ

2016-09-21 13:25:23
giginet @giginet

PyGameのSDL wrapperでDAWが作れるのか・・・・・ #pyconjp_201

2016-09-21 13:25:27
Tetsuya Morimoto @t2y

多重再生はデバイスのブロッキングを考慮すると、実装はなかなか難しい。先人の知恵である pygame を使おう #pyconjp_201

2016-09-21 13:25:42
トゥギャッター開発まとめ @tg__dev

#pyconjp #pyconjp_201 今回はpygame.mixerというモジュールを使用 sound = pygame.mixer.Sound(FileName) sound.play() ↑これでOK >>>すごい<<<

2016-09-21 13:26:16
にしもつ @24motz

PyGame SDL mixer を使うと遅延なくオーディオがミキシングされる #pyconjp_201

2016-09-21 13:26:19
giginet @giginet

PyGame、大昔に使っててひたすら辛かった思い出しかないけど最近は良くなったのかな #pyconjp_201

2016-09-21 13:26:36