狠狠撸

狠狠撸Share a Scribd company logo
ソフトシンセを作りながら学ぶ
  Pythonプログラミング

              2012-09-15
       Python Conference JP 2012

                Ransui Iso
   Strategic Technology R&D / X-Listing Co, Ltd.


                                         Copyright (c) 2011 Ransui Iso, All rights reserved.
おまえ谁よ?

               Ransui Iso (磯 蘭水)
               Work at X-Listing Co, Ltd.
               http://www.xlisting.co.jp/


Pythonは1998年から使っています。E-Commerceエンジンやサーチエンジンの開
発、Zopeを用いたWebサイト開発、その他色々を経て、今はネット広告配信シス
テムについての研究開発をしています。最近はCommon Lispでシステム開発をし
ていますが、Pythonもヘビーに使っています。



  http://www.facebook.com/ransui

  @ransui


                                  Copyright (c) 2011 Ransui Iso, All rights reserved.
まずは音楽を聞いて
心の準備を致しましょう



       Copyright (c) 2011 Ransui Iso, All rights reserved.
Johann Sebastian Bach
   March 21, 1685 – July 28, 1750

                          Copyright (c) 2011 Ransui Iso, All rights reserved.
今日お話する内容
●
    はじめに色々
●
    まずは音を出してみよう
●
    音とシンセサイザー
●
    罢辞测厂测苍迟丑の中身
●
    音から音楽へ
●
    音源のカスタマイズ


                  Copyright (c) 2011 Ransui Iso, All rights reserved.
対象とするレベル
●
    Pythonプログラミングの経験
     –   午前中のセッション?Pythonチュートリアル」
     –   書籍「はじめてのPython」
     –   Python公式ドキュメント「Pythonチュートリアル」
         全部をクリアしてなくてもOKです


●
    プログラミングそのもの
     –   練習問題やサンプルプログラム等をいじったことがある
     –   フルスクラッチで何かを作ったことはあまりない
     –   ライブラリとかの中身を覗きこんだりはあまりしない


                                 Copyright (c) 2011 Ransui Iso, All rights reserved.
その他注意点など
●
    これはハンズオンのセッションです
     –   セッション時間内に演習時間があります
         ●
             Pythonが実行可能なノートPC等を持っていないと、すごくつまらないです
         ●
             近くの席に座った人同士で教えあって、たのしくプログラミングしましょう
     –   必要なプログラムは配布します


●
    何故か紛れ込んでいる中?上級者(モヒカン)の方へ
     –   ぜひとも周りの人に色々教えてあげてください
     –   ウロウロ推奨。勝手開発推奨。成果物の見せびらかし&頒布推奨


●
    長時間のセッションなので…
     –   休憩時間が時間割とずれることがあります。他のセッションの迷惑にならないよう
         に注意してください

                                          Copyright (c) 2011 Ransui Iso, All rights reserved.
Break The ICE



         Copyright (c) 2011 Ransui Iso, All rights reserved.
とにかく音を出してみよう




        Copyright (c) 2011 Ransui Iso, All rights reserved.
ToySynth
●
    以下のURLから入手する
     –   http://alpa.homeip.net/PyConJP2012/ToySynth.zip
     –   ダウンロードしたら適当なディレクトリ(フォルダ)に展
         開する




                                        Copyright (c) 2011 Ransui Iso, All rights reserved.
演習
●
    サンプルを実行してみる
$?python?Example01.py
 $?python?Example01.py




      –   Example01.py?と同じディレクトリに output.wav
          というファイルが出来上がっているはず
      –   適当なメディアプレーヤーで再生する
      –   音は出ましたか?




                                Copyright (c) 2011 Ransui Iso, All rights reserved.
音とシンセサイザー




      Copyright (c) 2011 Ransui Iso, All rights reserved.
音ってなんだ?
●
    空気の密度の時間変化
     –   粗密波として視覚化するのは面倒なのでグラフを使う




                           Copyright (c) 2011 Ransui Iso, All rights reserved.
音の3要素
●
    音量
     –   波の高さ
●
    音高
                       周期
     –   波の周波数
●
    音色            音量


     –   波の形


         この3つの要素をコントロールできればOK

                        Copyright (c) 2011 Ransui Iso, All rights reserved.
音を出す装置
●
    信号を空気の粗密波に変換する

    Analog               Amplifier                         Speaker
    Source    微小電圧信号                 電流信号




                              微小電圧信号




    Digital                DAC
    Source    エンコードされた
              数値信号


                                       Copyright (c) 2011 Ransui Iso, All rights reserved.
デジタル化された音
●
    サンプリング周波数
     –   1秒あたりの分割数
●
    量子化
     –   振幅方向の分割数


         CD音質の場合
           –   サンプリング周波数   44100Hz
           –   量子化ビット数     16bit      (65536段階)




                                     Copyright (c) 2011 Ransui Iso, All rights reserved.
PCの場合
●
     プログラムから信号を送り込むことができる
                        1:送り込むデータの形式を設定
    Application         2:音声信号を数値データとして送り込む



                     OS       Device
                  Sound API   Driver



データは数値列なのでプログラムで
好き放題作成可能
                                                                  Output
→ ソフトシンセ!                     DAC      Amplifier
                                                                 Terminal



                                        Copyright (c) 2011 Ransui Iso, All rights reserved.
罢辞测厂测苍迟丑の中身




        Copyright (c) 2011 Ransui Iso, All rights reserved.
Components.py
●
    このファイルに部品が詰まっている
     –   Oscillator   (発振器)
     –   Amplifier    (増幅と減衰)
     –   Clock        (時計)
     –   Renderer     (全体のコントロール)
     –   Sink         (音声データの出力先)
     –   その他色々




                                Copyright (c) 2011 Ransui Iso, All rights reserved.
Example01.pyの中身
●
    部品の雛形を取り込む
●
    部品を生成して接続する
●
    音データを作成してファイルに出力する




                  Copyright (c) 2011 Ransui Iso, All rights reserved.
部品の雛形を取り込む
●
    モジュールからクラスをインポートする
from?Components?import?Config
 from?Components?import?Config
from?Components?import?SineWaveOscillator
 from?Components?import?SineWaveOscillator
from?Components?import?Amplifeir
 from?Components?import?Amplifeir
from?Components?import?Clock
 from?Components?import?Clock
from?Components?import?Renderer
 from?Components?import?Renderer
from?Components?import?WaveFileSink
 from?Components?import?WaveFileSink



                                                                   WaveFile
     Sin        Amplifier     Clock      Renderer
                                                                    Sink




           クラスは部品そのものではないので注意

                                             Copyright (c) 2011 Ransui Iso, All rights reserved.
部品の生成と接続
●
     クラスからインスタンスを作成する
?osc?=?SineWaveOscillator(frequency=440.0)
 ?osc?=?SineWaveOscillator(frequency=440.0)
?amp?=?Amplifeir(source=osc,?gain=Config.MaxGain,?attenuate=1.0)
 ?amp?=?Amplifeir(source=osc,?gain=Config.MaxGain,?attenuate=1.0)

                            プログラムの意味

      Sin       Amplifier   サイン波を生成する発振器を1個生成してoscという
                            変数から参照できるようにした。作成した発振器の
                            初期周波数は440Hz

                            増幅器を1個生成してampという変数から参照できる
                  amp       ようにした。アンプの入力はoscで参照できる発振器
      osc       Gain: Max
    F: 440.0                増幅は最大で、減衰なし。
                 Att: 1.0



               インスタンスが実体を持った機能する部品
                                           Copyright (c) 2011 Ransui Iso, All rights reserved.
Example01.pyでの部品の構成
●
    最終的に以下のような構成になっている

                  amp                         WaveFile
       osc      Gain: Max   Renderer             Sink
     F: 440.0    Att: 1.0                   Out: output.wav




                              Clock
                            End: 44100




         インスタンスが実体を持った機能する部品

                                         Copyright (c) 2011 Ransui Iso, All rights reserved.
発振器とアンプ
●
    アンプが数値を増幅する

                             amp
       osc                 Gain: Max                             Renderer
     F: 440.0               Att: 1.0
                -1?1の範囲の             input × Gain × Att
                実数でデータ
                を生成
                           ここでは16bit量子化の最大限まで増幅
                           Att は 1.0 なので、減衰は無し




       これから先データを重ねあわせたりするときに
     正規化されていると何かと便利なのでこうなっている

                                             Copyright (c) 2011 Ransui Iso, All rights reserved.
レンダラと時計
●
    音を表現する数値データ生成の中心
                                get_value(tick)


                      amp                                                       WaveFile
      osc           Gain: Max                     Renderer                         Sink
    F: 440.0         Att: 1.0                                                 Out: output.wav



         get_value(tick)
                                                    Clock
                                                  End: 44100




               get_value というメソッド(関数)の連鎖がミソ
                                                          Copyright (c) 2011 Ransui Iso, All rights reserved.
演習
●
    音量?音高
     –   音量?音高を変えるにはどこを調整すればいいか。また
         調整によってどのように出力が変化するか
●
    音色
     –   Componentsモジュールには
         SquareWaveOscillator,?SawWaveOscillator,?
         NoiseGeneratorという正弦波以外の波形を生成する発
         振器が含まれている。これを使って音を出してみよ。聴
         覚上どのような違いがあるか。


                                  Copyright (c) 2011 Ransui Iso, All rights reserved.
音から音楽へ




     Copyright (c) 2011 Ransui Iso, All rights reserved.
楽譜
●
    音楽専用プログラミング言語そのもの




                 Copyright (c) 2011 Ransui Iso, All rights reserved.
Music Macro Language
●
    楽譜をコードに置き換える




    t120o4l4cdefedcrefgagfe4
    t120o4l4cdefedcrefgagfe4
    crcrcrcrl8ccddeeffl4edcr
    crcrcrcrl8ccddeeffl4edcr
                           Copyright (c) 2011 Ransui Iso, All rights reserved.
MMLのコマンド
●
    発声に関するもの
     –   音符:c, d, e, f, g, a, b, r
     –   半音:+ で ?, - で ? を表現する (a- → aフラット)
     –   音長:音符の後に数値をつける
          ●
              1, 2, 4, 8, 16, 32
          ●
              Lコマンドでデフォルト値を設定できる
          ●
              . で付点を表現できる(a4. → 付点付き4分音符)
     –   オクターブ
          ●
              Oコマンドで指定する (o4a が 440Hzのラの音)
          ●
              > コマンドで1オクターブUP, < コマンドで1オクターブDown

                                     Copyright (c) 2011 Ransui Iso, All rights reserved.
MMLのコマンド
●
    コントロールに関するもの
     –   Tコマンド    テンポの指定
     –   Vコマンド    音量の指定(0?15までの16段階)
●
    使用上の注意
     –   コマンドは大文字?小文字を区別しない
     –   MML中にスペースは入れられない
     –   字句解析は結構いい加減。落とし穴があるかも。
     –   タイ、スラー、繰り返し指定、トレモロ、調指定等の高度な
         機能は未サポート。基本機能しか無い。
           –   ということは自分好みに拡張し放題!
                                   Copyright (c) 2011 Ransui Iso, All rights reserved.
演習
●
    サンプルプログラムを実行する
     –   プログラムは Example02.py
     –   出力は output.wav
     –   聞こえましたか?




                               Copyright (c) 2011 Ransui Iso, All rights reserved.
Example02の中身
●
    音を出す部品の構成
        指定されたタイミングで
        frequency 属性をセット



                                                             WaveFile
      osc              Sequencer   Renderer
                                                              Sink




     MML
                                    Clock
    Compiler   周波数を変更する
               タイミングデータ



                                       Copyright (c) 2011 Ransui Iso, All rights reserved.
MMLCompiler
●
    MMLをタイミング情報に変換する
     –   (減衰量, 周波数, 時刻) というタプルのリスト
         ●
             減衰量:Vコマンドによるボリューム指定で決定。0?1の実数
         ●
             周波数:音符コマンドによる音程によって決定
         ●
             時刻 :指定周波数をどの時点まで発生させるかを指定
                 音符コマンドの音長によって決定


●
    使うときの注意
     –   MMLコンパイラは処理中に内部情報としてMMLを何処まで読んだか、
         現在のオクターブ情報、デフォルトの音長等の情報をコンパイラ内部に
         記録しながら動いている。
     –   複数のトラックのMMLをコンパイルするときに1個のコンパイラを使い
         まわすと旨く動かない。別々にインスタンスを用意して処理するべし。
                                     Copyright (c) 2011 Ransui Iso, All rights reserved.
Sequencerの役割
●
    タイミング情報を使って周波数を変化させる
     –   Rendererからの呼び出しの時に受け取る時刻情報を参照しながら、タイミング
         情報をチェックしてターゲットの発振器の周波数を変化させる
     –   普通は部品の鎖の先端にある発振器の周波数を変化させ、データは鎖の末尾に
         あるものから取り出す。
     –   ボリューム操作を実現するためにSequencerにはAmplifierが内蔵されている。
         通常はSequencerはRendererの直前に接続すれば良い。




                   Modulator
           osc                 Sequencer            Renderer
                    Etc...




           上の図のような関係にならないように注意しないといけない
                                           Copyright (c) 2011 Ransui Iso, All rights reserved.
演習1
●
    以下の楽譜を入力して演奏しなさい




     音を区切るには明示的に休符をつかわないといけない
        自然な感じに聞こえるように工夫してみる
                      Copyright (c) 2011 Ransui Iso, All rights reserved.
演習2
●
    かえるの歌を輪唱させなさい
     –   Sequencerには複数のトラックを指定できる
         ●
             add_track を使う
         ●
             Sequencerには Mixer が内蔵されているので全トラックの出力が自動的に合成さ
             れて出力される
     –   トラック毎に発振器は別のものを用意する必要がある
     –   トラックごとにコンパイラも別のものを用意する
         ●
             デフォルトの音長や現在のオクターブなどを記憶しているため
     –   コンパイルしたタイミング情報はそれぞれ適切なトラックに投入する
     –   第2トラックは1小節分遅れてスタートすればOK
         ●
             第1小節は全休符にすればいい
         ●
             第1トラックが先に演奏が終わるけれど……


                                        Copyright (c) 2011 Ransui Iso, All rights reserved.
音源のカスタマイズ




      Copyright (c) 2011 Ransui Iso, All rights reserved.
ビブラートっぽい音
●
    周波数を周期的に変化させればOK

                      base_osc?=?SineWaveOscillator()
                       base_osc?=?SineWaveOscillator()
                      diff_osc?=?SineWaveOscillator()
                       diff_osc?=?SineWaveOscillator()
          Frequency   diff_osc.frequency=10.0
                       diff_osc.frequency=10.0
    osc   Modulator
                      viv_amp?=?Amplifeir(
                       viv_amp?=?Amplifeir(
                      ????source=diff_osc,
                       ????source=diff_osc,
                      ????gain=2.0,
                       ????gain=2.0,
                      ????Attenuate=1.0)
                       ????Attenuate=1.0)
                      viv_osc?=?FrequencyModulator(
                       viv_osc?=?FrequencyModulator(
                      ????source=base_osc,?
                       ????source=base_osc,?
                      ????diff=viv_amp)
                       ????diff=viv_amp)
    osc     amp
                      frequency : ビブラートの周期
                      Ampのgain : ビブラート深さ



                                      Copyright (c) 2011 Ransui Iso, All rights reserved.
DeTune
●
    微妙に周波数をずらした音を重ねる
                           2つの異なる発振器に対して周波数を同時に
       frequency
                           設定できないといけないので、ビブラート
                           とはちょっと事情が違う。
             Track0        Example03.py に実装例がある。
     osc
                           Property という仕組みを使って、属性にア
                           クセスされた時に get_frequency,
                   Mixer   set_frequencyが自動的に呼ばれるようにで
                           きる。


     osc
              Track1


       frequency + depth

                                     Copyright (c) 2011 Ransui Iso, All rights reserved.
演習
●
    Stereo Chorus を作って使ってみる
       frequency


                              Gate            Track0
     osc                   (True, False)



                                                         Mixer



     osc           Inverter                Gate
                                     (False, True)
                                                       Track1


       frequency + depth

                                                                Copyright (c) 2011 Ransui Iso, All rights reserved.
演習
●
    少し長めの1曲を完成させてみましょう
●
    その他の効果音的な部品を作れますか?
     –   エンベロープ(音量変化)を付ける
     –   ノイズを使ったパーカッションパートのための音源
     –   ディレイ?リバーブ
     –   その他……




                            Copyright (c) 2011 Ransui Iso, All rights reserved.
Thank you for attending
     Happy Hacking with Python!




                              Copyright (c) 2011 Ransui Iso, All rights reserved.

More Related Content

What's hot (20)

全力解説!罢谤补苍蝉蹿辞谤尘别谤
全力解説!罢谤补苍蝉蹿辞谤尘别谤全力解説!罢谤补苍蝉蹿辞谤尘别谤
全力解説!罢谤补苍蝉蹿辞谤尘别谤
Arithmer Inc.
?
大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter
maruyama097
?
机械学习で泣かないためのコード设计
机械学习で泣かないためのコード设计机械学习で泣かないためのコード设计
机械学习で泣かないためのコード设计
Takahiro Kubo
?
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
?
充足可能性问题のいろいろ
充足可能性问题のいろいろ充足可能性问题のいろいろ
充足可能性问题のいろいろ
Hiroshi Yamashita
?
リクルート式 自然言语処理技术の适応事例绍介
リクルート式 自然言语処理技术の适応事例绍介リクルート式 自然言语処理技术の适応事例绍介
リクルート式 自然言语処理技术の适応事例绍介
Recruit Technologies
?
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
?
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
Norishige Fukushima
?
学振特别研究员になるために~知っておくべき10の罢颈辫蝉~摆平成29年度申请版闭
学振特别研究员になるために~知っておくべき10の罢颈辫蝉~摆平成29年度申请版闭学振特别研究员になるために~知っておくべき10の罢颈辫蝉~摆平成29年度申请版闭
学振特别研究员になるために~知っておくべき10の罢颈辫蝉~摆平成29年度申请版闭
Masahito Ohue
?
初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法
kazkiti
?
笔测迟丑辞苍による黒魔术入门
笔测迟丑辞苍による黒魔术入门笔测迟丑辞苍による黒魔术入门
笔测迟丑辞苍による黒魔术入门
大樹 小倉
?
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
?
データサイエンティストの仕事とデータ分析コンテスト
データサイエンティストの仕事とデータ分析コンテストデータサイエンティストの仕事とデータ分析コンテスト
データサイエンティストの仕事とデータ分析コンテスト
Ken'ichi Matsui
?
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
Norishige Fukushima
?
最适化超入门
最适化超入门最适化超入门
最适化超入门
Takami Sato
?
Data-Centric AIの紹介
Data-Centric AIの紹介Data-Centric AIの紹介
Data-Centric AIの紹介
Kazuyuki Miyazawa
?
古典プログラマ向け量子プログラミング入門 [フル版]
古典プログラマ向け量子プログラミング入門 [フル版]古典プログラマ向け量子プログラミング入門 [フル版]
古典プログラマ向け量子プログラミング入門 [フル版]
OsSAL
?
何となく勉强した気分になれるパーサ入门
何となく勉强した気分になれるパーサ入门何となく勉强した気分になれるパーサ入门
何となく勉强した気分になれるパーサ入门
masayoshi takahashi
?
数式からみる奥辞谤诲2痴别肠
数式からみる奥辞谤诲2痴别肠数式からみる奥辞谤诲2痴别肠
数式からみる奥辞谤诲2痴别肠
Okamoto Laboratory, The University of Electro-Communications
?
全力解説!罢谤补苍蝉蹿辞谤尘别谤
全力解説!罢谤补苍蝉蹿辞谤尘别谤全力解説!罢谤补苍蝉蹿辞谤尘别谤
全力解説!罢谤补苍蝉蹿辞谤尘别谤
Arithmer Inc.
?
大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter
maruyama097
?
机械学习で泣かないためのコード设计
机械学习で泣かないためのコード设计机械学习で泣かないためのコード设计
机械学习で泣かないためのコード设计
Takahiro Kubo
?
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
?
充足可能性问题のいろいろ
充足可能性问题のいろいろ充足可能性问题のいろいろ
充足可能性问题のいろいろ
Hiroshi Yamashita
?
リクルート式 自然言语処理技术の适応事例绍介
リクルート式 自然言语処理技术の适応事例绍介リクルート式 自然言语処理技术の适応事例绍介
リクルート式 自然言语処理技术の适応事例绍介
Recruit Technologies
?
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
?
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
Norishige Fukushima
?
学振特别研究员になるために~知っておくべき10の罢颈辫蝉~摆平成29年度申请版闭
学振特别研究员になるために~知っておくべき10の罢颈辫蝉~摆平成29年度申请版闭学振特别研究员になるために~知っておくべき10の罢颈辫蝉~摆平成29年度申请版闭
学振特别研究员になるために~知っておくべき10の罢颈辫蝉~摆平成29年度申请版闭
Masahito Ohue
?
初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法初心者向け颁罢贵の奥别产分野の强化法
初心者向け颁罢贵の奥别产分野の强化法
kazkiti
?
笔测迟丑辞苍による黒魔术入门
笔测迟丑辞苍による黒魔术入门笔测迟丑辞苍による黒魔术入门
笔测迟丑辞苍による黒魔术入门
大樹 小倉
?
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
?
データサイエンティストの仕事とデータ分析コンテスト
データサイエンティストの仕事とデータ分析コンテストデータサイエンティストの仕事とデータ分析コンテスト
データサイエンティストの仕事とデータ分析コンテスト
Ken'ichi Matsui
?
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
组み込み関数(颈苍迟谤颈苍蝉颈肠)による厂滨惭顿入门
Norishige Fukushima
?
古典プログラマ向け量子プログラミング入門 [フル版]
古典プログラマ向け量子プログラミング入門 [フル版]古典プログラマ向け量子プログラミング入門 [フル版]
古典プログラマ向け量子プログラミング入門 [フル版]
OsSAL
?
何となく勉强した気分になれるパーサ入门
何となく勉强した気分になれるパーサ入门何となく勉强した気分になれるパーサ入门
何となく勉强した気分になれるパーサ入门
masayoshi takahashi
?

Similar to ソフトシンセを作りながら学ぶ笔测迟丑辞苍プログラミング (20)

The beginners guide of real-time audio processing (Part 1:Equalizer)
The beginners guide of real-time audio processing (Part 1:Equalizer)The beginners guide of real-time audio processing (Part 1:Equalizer)
The beginners guide of real-time audio processing (Part 1:Equalizer)
Hiroyuki Masuno
?
痴厂罢颈つくるよゼミ
痴厂罢颈つくるよゼミ痴厂罢颈つくるよゼミ
痴厂罢颈つくるよゼミ
y3eadgbe
?
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
t-sin
?
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
historia_Inc
?
SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
IGDA Japan SIG-Audio
?
DTMF — DTMF と自作アプリの軌跡 #yidev
DTMF — DTMF と自作アプリの軌跡 #yidevDTMF — DTMF と自作アプリの軌跡 #yidev
DTMF — DTMF と自作アプリの軌跡 #yidev
Tomohiro Kumagai
?
pyssp
pyssppyssp
pyssp
Shunsuke Aihara
?
笔测迟丑辞苍で作る俺様サウンドエフェクター
笔测迟丑辞苍で作る俺様サウンドエフェクター笔测迟丑辞苍で作る俺様サウンドエフェクター
笔测迟丑辞苍で作る俺様サウンドエフェクター
Ransui Iso
?
こんにちはワークステーション LUNA 対応版 サウンド編
こんにちはワークステーション LUNA 対応版 サウンド編こんにちはワークステーション LUNA 対応版 サウンド編
こんにちはワークステーション LUNA 対応版 サウンド編
YosukeSugahara
?
「笔测迟丑辞苍でやってみた」~広がるプログラミングの愉しみ~
「笔测迟丑辞苍でやってみた」~広がるプログラミングの愉しみ~「笔测迟丑辞苍でやってみた」~広がるプログラミングの愉しみ~
「笔测迟丑辞苍でやってみた」~広がるプログラミングの愉しみ~
Ransui Iso
?
Assembler
AssemblerAssembler
Assembler
aksechack0001
?
复数话者奥补惫别狈别迟ボコーダに関する调査
复数话者奥补惫别狈别迟ボコーダに関する调査复数话者奥补惫别狈别迟ボコーダに関する调査
复数话者奥补惫别狈别迟ボコーダに関する调査
Tomoki Hayashi
?
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
UnityTechnologiesJapan002
?
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
驰补丑辞辞!デベロッパーネットワーク
?
音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3
音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3
音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3
Naoya Takahashi
?
社内勉強会にて 音声ファイルフォーマットについて
社内勉強会にて 音声ファイルフォーマットについて社内勉強会にて 音声ファイルフォーマットについて
社内勉強会にて 音声ファイルフォーマットについて
Natsuki Yamanaka
?
20220519_TechStreet_vol6_kitazaki_v1.pdf
20220519_TechStreet_vol6_kitazaki_v1.pdf20220519_TechStreet_vol6_kitazaki_v1.pdf
20220519_TechStreet_vol6_kitazaki_v1.pdf
Ayachika Kitazaki
?
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
Takuya Iwatsuka
?
The beginners guide of real-time audio processing (Part 1:Equalizer)
The beginners guide of real-time audio processing (Part 1:Equalizer)The beginners guide of real-time audio processing (Part 1:Equalizer)
The beginners guide of real-time audio processing (Part 1:Equalizer)
Hiroyuki Masuno
?
痴厂罢颈つくるよゼミ
痴厂罢颈つくるよゼミ痴厂罢颈つくるよゼミ
痴厂罢颈つくるよゼミ
y3eadgbe
?
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
t-sin
?
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?
historia_Inc
?
SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
IGDA Japan SIG-Audio
?
DTMF — DTMF と自作アプリの軌跡 #yidev
DTMF — DTMF と自作アプリの軌跡 #yidevDTMF — DTMF と自作アプリの軌跡 #yidev
DTMF — DTMF と自作アプリの軌跡 #yidev
Tomohiro Kumagai
?
笔测迟丑辞苍で作る俺様サウンドエフェクター
笔测迟丑辞苍で作る俺様サウンドエフェクター笔测迟丑辞苍で作る俺様サウンドエフェクター
笔测迟丑辞苍で作る俺様サウンドエフェクター
Ransui Iso
?
こんにちはワークステーション LUNA 対応版 サウンド編
こんにちはワークステーション LUNA 対応版 サウンド編こんにちはワークステーション LUNA 対応版 サウンド編
こんにちはワークステーション LUNA 対応版 サウンド編
YosukeSugahara
?
「笔测迟丑辞苍でやってみた」~広がるプログラミングの愉しみ~
「笔测迟丑辞苍でやってみた」~広がるプログラミングの愉しみ~「笔测迟丑辞苍でやってみた」~広がるプログラミングの愉しみ~
「笔测迟丑辞苍でやってみた」~広がるプログラミングの愉しみ~
Ransui Iso
?
复数话者奥补惫别狈别迟ボコーダに関する调査
复数话者奥补惫别狈别迟ボコーダに関する调査复数话者奥补惫别狈别迟ボコーダに関する调査
复数话者奥补惫别狈别迟ボコーダに関する调査
Tomoki Hayashi
?
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
UnityTechnologiesJapan002
?
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
驰补丑辞辞!デベロッパーネットワーク
?
音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3
音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3
音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3
Naoya Takahashi
?
社内勉強会にて 音声ファイルフォーマットについて
社内勉強会にて 音声ファイルフォーマットについて社内勉強会にて 音声ファイルフォーマットについて
社内勉強会にて 音声ファイルフォーマットについて
Natsuki Yamanaka
?
20220519_TechStreet_vol6_kitazaki_v1.pdf
20220519_TechStreet_vol6_kitazaki_v1.pdf20220519_TechStreet_vol6_kitazaki_v1.pdf
20220519_TechStreet_vol6_kitazaki_v1.pdf
Ayachika Kitazaki
?
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
Takuya Iwatsuka
?

More from Ransui Iso (13)

アドテクを支える人と技术
アドテクを支える人と技术アドテクを支える人と技术
アドテクを支える人と技术
Ransui Iso
?
Playing with curses
Playing with cursesPlaying with curses
Playing with curses
Ransui Iso
?
小中学生贬补肠办-补-迟丑辞苍にオッサンが乗り込んだ话
小中学生贬补肠办-补-迟丑辞苍にオッサンが乗り込んだ话小中学生贬补肠办-补-迟丑辞苍にオッサンが乗り込んだ话
小中学生贬补肠办-补-迟丑辞苍にオッサンが乗り込んだ话
Ransui Iso
?
XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由
Ransui Iso
?
Introduction of ToySynth
Introduction of ToySynthIntroduction of ToySynth
Introduction of ToySynth
Ransui Iso
?
笔测蚕迟ではじめる骋鲍滨プログラミング
笔测蚕迟ではじめる骋鲍滨プログラミング笔测蚕迟ではじめる骋鲍滨プログラミング
笔测蚕迟ではじめる骋鲍滨プログラミング
Ransui Iso
?
PySynth : A toy pure python software synthesizer.
PySynth : A toy pure python software synthesizer.PySynth : A toy pure python software synthesizer.
PySynth : A toy pure python software synthesizer.
Ransui Iso
?
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
?
Lisp Tutorial for Pythonista : Day 5
Lisp Tutorial for Pythonista : Day 5Lisp Tutorial for Pythonista : Day 5
Lisp Tutorial for Pythonista : Day 5
Ransui Iso
?
Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4
Ransui Iso
?
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
?
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
Ransui Iso
?
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Ransui Iso
?
アドテクを支える人と技术
アドテクを支える人と技术アドテクを支える人と技术
アドテクを支える人と技术
Ransui Iso
?
Playing with curses
Playing with cursesPlaying with curses
Playing with curses
Ransui Iso
?
小中学生贬补肠办-补-迟丑辞苍にオッサンが乗り込んだ话
小中学生贬补肠办-补-迟丑辞苍にオッサンが乗り込んだ话小中学生贬补肠办-补-迟丑辞苍にオッサンが乗り込んだ话
小中学生贬补肠办-补-迟丑辞苍にオッサンが乗り込んだ话
Ransui Iso
?
XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由
Ransui Iso
?
Introduction of ToySynth
Introduction of ToySynthIntroduction of ToySynth
Introduction of ToySynth
Ransui Iso
?
笔测蚕迟ではじめる骋鲍滨プログラミング
笔测蚕迟ではじめる骋鲍滨プログラミング笔测蚕迟ではじめる骋鲍滨プログラミング
笔测蚕迟ではじめる骋鲍滨プログラミング
Ransui Iso
?
PySynth : A toy pure python software synthesizer.
PySynth : A toy pure python software synthesizer.PySynth : A toy pure python software synthesizer.
PySynth : A toy pure python software synthesizer.
Ransui Iso
?
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
?
Lisp Tutorial for Pythonista : Day 5
Lisp Tutorial for Pythonista : Day 5Lisp Tutorial for Pythonista : Day 5
Lisp Tutorial for Pythonista : Day 5
Ransui Iso
?
Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4
Ransui Iso
?
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
?
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
Ransui Iso
?
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Ransui Iso
?

Recently uploaded (11)

実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?

ソフトシンセを作りながら学ぶ笔测迟丑辞苍プログラミング

  • 1. ソフトシンセを作りながら学ぶ Pythonプログラミング 2012-09-15 Python Conference JP 2012 Ransui Iso Strategic Technology R&D / X-Listing Co, Ltd. Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 2. おまえ谁よ? Ransui Iso (磯 蘭水) Work at X-Listing Co, Ltd. http://www.xlisting.co.jp/ Pythonは1998年から使っています。E-Commerceエンジンやサーチエンジンの開 発、Zopeを用いたWebサイト開発、その他色々を経て、今はネット広告配信シス テムについての研究開発をしています。最近はCommon Lispでシステム開発をし ていますが、Pythonもヘビーに使っています。 http://www.facebook.com/ransui @ransui Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 3. まずは音楽を聞いて 心の準備を致しましょう Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 4. Johann Sebastian Bach March 21, 1685 – July 28, 1750 Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 5. 今日お話する内容 ● はじめに色々 ● まずは音を出してみよう ● 音とシンセサイザー ● 罢辞测厂测苍迟丑の中身 ● 音から音楽へ ● 音源のカスタマイズ Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 6. 対象とするレベル ● Pythonプログラミングの経験 – 午前中のセッション?Pythonチュートリアル」 – 書籍「はじめてのPython」 – Python公式ドキュメント「Pythonチュートリアル」 全部をクリアしてなくてもOKです ● プログラミングそのもの – 練習問題やサンプルプログラム等をいじったことがある – フルスクラッチで何かを作ったことはあまりない – ライブラリとかの中身を覗きこんだりはあまりしない Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 7. その他注意点など ● これはハンズオンのセッションです – セッション時間内に演習時間があります ● Pythonが実行可能なノートPC等を持っていないと、すごくつまらないです ● 近くの席に座った人同士で教えあって、たのしくプログラミングしましょう – 必要なプログラムは配布します ● 何故か紛れ込んでいる中?上級者(モヒカン)の方へ – ぜひとも周りの人に色々教えてあげてください – ウロウロ推奨。勝手開発推奨。成果物の見せびらかし&頒布推奨 ● 長時間のセッションなので… – 休憩時間が時間割とずれることがあります。他のセッションの迷惑にならないよう に注意してください Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 8. Break The ICE Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 9. とにかく音を出してみよう Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 10. ToySynth ● 以下のURLから入手する – http://alpa.homeip.net/PyConJP2012/ToySynth.zip – ダウンロードしたら適当なディレクトリ(フォルダ)に展 開する Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 11. 演習 ● サンプルを実行してみる $?python?Example01.py $?python?Example01.py – Example01.py?と同じディレクトリに output.wav というファイルが出来上がっているはず – 適当なメディアプレーヤーで再生する – 音は出ましたか? Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 12. 音とシンセサイザー Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 13. 音ってなんだ? ● 空気の密度の時間変化 – 粗密波として視覚化するのは面倒なのでグラフを使う Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 14. 音の3要素 ● 音量 – 波の高さ ● 音高 周期 – 波の周波数 ● 音色 音量 – 波の形 この3つの要素をコントロールできればOK Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 15. 音を出す装置 ● 信号を空気の粗密波に変換する Analog Amplifier Speaker Source 微小電圧信号 電流信号 微小電圧信号 Digital DAC Source エンコードされた 数値信号 Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 16. デジタル化された音 ● サンプリング周波数 – 1秒あたりの分割数 ● 量子化 – 振幅方向の分割数 CD音質の場合 – サンプリング周波数 44100Hz – 量子化ビット数 16bit (65536段階) Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 17. PCの場合 ● プログラムから信号を送り込むことができる 1:送り込むデータの形式を設定 Application 2:音声信号を数値データとして送り込む OS Device Sound API Driver データは数値列なのでプログラムで 好き放題作成可能 Output → ソフトシンセ! DAC Amplifier Terminal Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 18. 罢辞测厂测苍迟丑の中身 Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 19. Components.py ● このファイルに部品が詰まっている – Oscillator (発振器) – Amplifier (増幅と減衰) – Clock (時計) – Renderer (全体のコントロール) – Sink (音声データの出力先) – その他色々 Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 20. Example01.pyの中身 ● 部品の雛形を取り込む ● 部品を生成して接続する ● 音データを作成してファイルに出力する Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 21. 部品の雛形を取り込む ● モジュールからクラスをインポートする from?Components?import?Config from?Components?import?Config from?Components?import?SineWaveOscillator from?Components?import?SineWaveOscillator from?Components?import?Amplifeir from?Components?import?Amplifeir from?Components?import?Clock from?Components?import?Clock from?Components?import?Renderer from?Components?import?Renderer from?Components?import?WaveFileSink from?Components?import?WaveFileSink WaveFile Sin Amplifier Clock Renderer Sink クラスは部品そのものではないので注意 Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 22. 部品の生成と接続 ● クラスからインスタンスを作成する ?osc?=?SineWaveOscillator(frequency=440.0) ?osc?=?SineWaveOscillator(frequency=440.0) ?amp?=?Amplifeir(source=osc,?gain=Config.MaxGain,?attenuate=1.0) ?amp?=?Amplifeir(source=osc,?gain=Config.MaxGain,?attenuate=1.0) プログラムの意味 Sin Amplifier サイン波を生成する発振器を1個生成してoscという 変数から参照できるようにした。作成した発振器の 初期周波数は440Hz 増幅器を1個生成してampという変数から参照できる amp ようにした。アンプの入力はoscで参照できる発振器 osc Gain: Max F: 440.0 増幅は最大で、減衰なし。 Att: 1.0 インスタンスが実体を持った機能する部品 Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 23. Example01.pyでの部品の構成 ● 最終的に以下のような構成になっている amp WaveFile osc Gain: Max Renderer Sink F: 440.0 Att: 1.0 Out: output.wav Clock End: 44100 インスタンスが実体を持った機能する部品 Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 24. 発振器とアンプ ● アンプが数値を増幅する amp osc Gain: Max Renderer F: 440.0 Att: 1.0 -1?1の範囲の input × Gain × Att 実数でデータ を生成 ここでは16bit量子化の最大限まで増幅 Att は 1.0 なので、減衰は無し これから先データを重ねあわせたりするときに 正規化されていると何かと便利なのでこうなっている Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 25. レンダラと時計 ● 音を表現する数値データ生成の中心 get_value(tick) amp WaveFile osc Gain: Max Renderer Sink F: 440.0 Att: 1.0 Out: output.wav get_value(tick) Clock End: 44100 get_value というメソッド(関数)の連鎖がミソ Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 26. 演習 ● 音量?音高 – 音量?音高を変えるにはどこを調整すればいいか。また 調整によってどのように出力が変化するか ● 音色 – Componentsモジュールには SquareWaveOscillator,?SawWaveOscillator,? NoiseGeneratorという正弦波以外の波形を生成する発 振器が含まれている。これを使って音を出してみよ。聴 覚上どのような違いがあるか。 Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 27. 音から音楽へ Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 28. 楽譜 ● 音楽専用プログラミング言語そのもの Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 29. Music Macro Language ● 楽譜をコードに置き換える t120o4l4cdefedcrefgagfe4 t120o4l4cdefedcrefgagfe4 crcrcrcrl8ccddeeffl4edcr crcrcrcrl8ccddeeffl4edcr Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 30. MMLのコマンド ● 発声に関するもの – 音符:c, d, e, f, g, a, b, r – 半音:+ で ?, - で ? を表現する (a- → aフラット) – 音長:音符の後に数値をつける ● 1, 2, 4, 8, 16, 32 ● Lコマンドでデフォルト値を設定できる ● . で付点を表現できる(a4. → 付点付き4分音符) – オクターブ ● Oコマンドで指定する (o4a が 440Hzのラの音) ● > コマンドで1オクターブUP, < コマンドで1オクターブDown Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 31. MMLのコマンド ● コントロールに関するもの – Tコマンド テンポの指定 – Vコマンド 音量の指定(0?15までの16段階) ● 使用上の注意 – コマンドは大文字?小文字を区別しない – MML中にスペースは入れられない – 字句解析は結構いい加減。落とし穴があるかも。 – タイ、スラー、繰り返し指定、トレモロ、調指定等の高度な 機能は未サポート。基本機能しか無い。 – ということは自分好みに拡張し放題! Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 32. 演習 ● サンプルプログラムを実行する – プログラムは Example02.py – 出力は output.wav – 聞こえましたか? Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 33. Example02の中身 ● 音を出す部品の構成 指定されたタイミングで frequency 属性をセット WaveFile osc Sequencer Renderer Sink MML Clock Compiler 周波数を変更する タイミングデータ Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 34. MMLCompiler ● MMLをタイミング情報に変換する – (減衰量, 周波数, 時刻) というタプルのリスト ● 減衰量:Vコマンドによるボリューム指定で決定。0?1の実数 ● 周波数:音符コマンドによる音程によって決定 ● 時刻 :指定周波数をどの時点まで発生させるかを指定 音符コマンドの音長によって決定 ● 使うときの注意 – MMLコンパイラは処理中に内部情報としてMMLを何処まで読んだか、 現在のオクターブ情報、デフォルトの音長等の情報をコンパイラ内部に 記録しながら動いている。 – 複数のトラックのMMLをコンパイルするときに1個のコンパイラを使い まわすと旨く動かない。別々にインスタンスを用意して処理するべし。 Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 35. Sequencerの役割 ● タイミング情報を使って周波数を変化させる – Rendererからの呼び出しの時に受け取る時刻情報を参照しながら、タイミング 情報をチェックしてターゲットの発振器の周波数を変化させる – 普通は部品の鎖の先端にある発振器の周波数を変化させ、データは鎖の末尾に あるものから取り出す。 – ボリューム操作を実現するためにSequencerにはAmplifierが内蔵されている。 通常はSequencerはRendererの直前に接続すれば良い。 Modulator osc Sequencer Renderer Etc... 上の図のような関係にならないように注意しないといけない Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 36. 演習1 ● 以下の楽譜を入力して演奏しなさい 音を区切るには明示的に休符をつかわないといけない 自然な感じに聞こえるように工夫してみる Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 37. 演習2 ● かえるの歌を輪唱させなさい – Sequencerには複数のトラックを指定できる ● add_track を使う ● Sequencerには Mixer が内蔵されているので全トラックの出力が自動的に合成さ れて出力される – トラック毎に発振器は別のものを用意する必要がある – トラックごとにコンパイラも別のものを用意する ● デフォルトの音長や現在のオクターブなどを記憶しているため – コンパイルしたタイミング情報はそれぞれ適切なトラックに投入する – 第2トラックは1小節分遅れてスタートすればOK ● 第1小節は全休符にすればいい ● 第1トラックが先に演奏が終わるけれど…… Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 38. 音源のカスタマイズ Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 39. ビブラートっぽい音 ● 周波数を周期的に変化させればOK base_osc?=?SineWaveOscillator() base_osc?=?SineWaveOscillator() diff_osc?=?SineWaveOscillator() diff_osc?=?SineWaveOscillator() Frequency diff_osc.frequency=10.0 diff_osc.frequency=10.0 osc Modulator viv_amp?=?Amplifeir( viv_amp?=?Amplifeir( ????source=diff_osc, ????source=diff_osc, ????gain=2.0, ????gain=2.0, ????Attenuate=1.0) ????Attenuate=1.0) viv_osc?=?FrequencyModulator( viv_osc?=?FrequencyModulator( ????source=base_osc,? ????source=base_osc,? ????diff=viv_amp) ????diff=viv_amp) osc amp frequency : ビブラートの周期 Ampのgain : ビブラート深さ Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 40. DeTune ● 微妙に周波数をずらした音を重ねる 2つの異なる発振器に対して周波数を同時に frequency 設定できないといけないので、ビブラート とはちょっと事情が違う。 Track0 Example03.py に実装例がある。 osc Property という仕組みを使って、属性にア クセスされた時に get_frequency, Mixer set_frequencyが自動的に呼ばれるようにで きる。 osc Track1 frequency + depth Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 41. 演習 ● Stereo Chorus を作って使ってみる frequency Gate Track0 osc (True, False) Mixer osc Inverter Gate (False, True) Track1 frequency + depth Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 42. 演習 ● 少し長めの1曲を完成させてみましょう ● その他の効果音的な部品を作れますか? – エンベロープ(音量変化)を付ける – ノイズを使ったパーカッションパートのための音源 – ディレイ?リバーブ – その他…… Copyright (c) 2011 Ransui Iso, All rights reserved.
  • 43. Thank you for attending Happy Hacking with Python! Copyright (c) 2011 Ransui Iso, All rights reserved.