タグ

ブックマーク / yukara-13.hatenablog.com (8)

  • 【Python】 大聖堂の響きを再現!! : インパルス応答の畳み込み - 音楽プログラミングの超入門(仮)

    導入:インパルス応答と残響 インパルス応答(英: Impulse response)とは、インパルスと呼ばれる非常に短い信号を入力したときのシステムの出力である。インパルス反応、重み関数 (weighting function) とも。インパルスとは、時間的幅が無限小で高さが無限大のパルスである。実際のシステムではこのような信号は生成できないが、理想化としては有益な概念である。 http://ja.wikipedia.org/wiki/インパルス応答 (^^;)< ちょっと何言ってるか分かんないです。 と感じた人も少なからずいるのではないでしょうか? ですが、インパルス応答はイメージをつかんでしまえば、それほど難しいものではありません。ここで、簡単に説明しましょう。 インパルス応答 まず、下図みたいな信号を(単位)インパルスといいます。 時間 0 のところが 1 になっているだけの信号です

    【Python】 大聖堂の響きを再現!! : インパルス応答の畳み込み - 音楽プログラミングの超入門(仮)
    ottonove
    ottonove 2017/06/01
    python, 音楽理論 【Python】 大聖堂の響きを再現!! : インパルス応答の畳み込み
  • Python スクリプトのスタンドアロン化 - 音楽プログラミングの超入門(仮)

    photo by Ryan Johnson 自分がググり倒した成果を書き連ねています。 この記事では、主にLinux環境を前提としているので注意してください。 WindowsMacでも同じような感じでいけるかも知れないです。 スタンドアロン アプリケーションPythonはスクリプト言語であるため、インタプリタがインストールされている環境でしかプログラムを実行することができません。さらに、プログラムに外部パッケージ(Numpy、Scipyなど)を使用している場合は、それらのインストールも必要となります。 一方、C++Javaなどのコンパイル言語では、ソースコードをバイナリコードへコンパイルするため、大体どのような環境でも動かすことが可能です。 しかし、Pythonをメインで使っているプログラマとしては、Pythonのコードもどのような環境でも動くスタンドアロンアプリケーションに変換したい

    Python スクリプトのスタンドアロン化 - 音楽プログラミングの超入門(仮)
  • 機械学習用Pythonライブラリ: mlpy - 音楽プログラミングの超入門(仮)

    mlpy って? mlpy - Machine Learning Python 機械学習アルゴリズムを扱うPythonライブラリで、主成分分析・サポートベクターマシン・重回帰分析などの基的なものから、Dynamic Time Warping など色々と揃っています. 自分はまだ一度も使ったことがありませんが、いつか遊ぼうと思ってインストールだけしてみたので、その手順をのせておきます. インストール (Linux)自分の環境は Ubuntu12.04LTS ですが、大体のOSでは同じ感じにインストールできるんじゃないでしょうか. mlpy - Browse Files at SourceForge.net pygsl python interface for GNU scientifi | Free Development software downloads at SourceForge

    機械学習用Pythonライブラリ: mlpy - 音楽プログラミングの超入門(仮)
  • Pythonでフーリエ変換(と逆変換) - 音楽プログラミングの超入門(仮)

    音響信号のフーリエ変換ここでは、離散フーリエ変換のみを扱っています。 信号処理においてフーリエ変換というと、ほとんどの場合、離散フーリエ変換を指しています。 式 フーリエ変換は可逆変換なので、逆変換があります。フーリエ変換・逆変換の定義式はこんな感じです。 ここでは、 が入力音響信号ですね。 つまり何をしているのか 上の式をぱっと見ても、何やこれよく分からん、という人が多いんじゃないでしょうか。 音響信号のフーリエ変換では、その音の中に何ヘルツの正弦波がどのくらいの大きさ(振幅)で入っているかと、その位相が分かります。もっと簡単に言うと、どの音の高さがどのくらい強く鳴っているかが分かります。 それさえ分かっていれば、深い話に突っ込んでいかない限り、大丈夫でしょう、多分。 何ヘルツまで解析できるのか 信号がサンプリング周波数で標化されているとき、その半分未満の周波数成分しか完全に再現するこ

  • PythonでWAVファイルを読み込む - 音楽プログラミングの超入門(仮)

    音声信号処理を行う場合、大抵、数値列をWAVファイルから読み込むことになると思います。Python でそれを行う方法を2つ紹介します。 waveモジュールを使うwave モジュールはその名の通り、WAVファイルを扱うためのモジュールです。WAVファイルの読み込みはこんな感じにします。 # -*- coding: utf-8 -*- import wave from scipy import fromstring, int16 wavfile = "./test.wav" # WAVファイルを開く wr = wave.open(wavfile, "rb") # WAVファイルの情報を表示(別にいらん) print "Channel num : ", wr.getnchannels() print "Sample size : ", wr.getsampwidth() print "Sampl

    PythonでWAVファイルを読み込む - 音楽プログラミングの超入門(仮)
  • 音楽プログラミングの超入門(仮)

    全自動 Makefile プロジェクト毎に Makefile を書きなおすのが面倒くさかったので、ディレクトリ以下のソースファイルの依存関係などを自動で解決してコンパイルしてくれる Makefile を作りました。 ちなみに全自動というのは嘘です。すみません。 外部ライブラリのパスなどは自分で指定する必要があります。 あと、make から外したいディレクトリなどは各位で編集してください。 制約条件として、ソースファイルが全て Makefile の置いてあるディレクトリ以下にある必要があります。個人的に必要なソースファイルはサブモジュールなどとして全てディレクトリ以下に置いてしまうことが多いので、そんな感じになってます。 Makefile - Github of yukara-ikemiya 少し書きなおせば、静的/動的ライブラリの作成用にも使えます。 filter, filter-out

    音楽プログラミングの超入門(仮)
  • Pythonでの信号処理とは - 音楽プログラミングの超入門(仮)

    Pythonを使うメリット Pythonは簡単 Pythonはスクリプト言語の中でも、特に覚えるのが簡単な言語だと思う。全く触ったことがない人でも、1週間くらいで小さいプログラムなら大体書けるようになるんじゃないかな。Pythonしか触ったことのない筆者がいうのだから間違いない。 ライブラリが豊富 信号処理に限らず、Pythonは特定分野の処理を行うためのライブラリが沢山ある。それらを用いることで、効率的なコーディングや、プログラム実行時間の短縮を実現できるよ。公開されているライブラリは大抵、とても洗練されているから、自分で同じものを書くより全ての面で優れていることが多い。 Python信号処理における3種の神器Pythonで信号処理するにあたって、3つのライブラリが無いと、コーディングの効率的にとか、実行速度的に全くお話にならないよ。 NumPy, SciPy, Matplotlib N

  • 【Python】時間変化するサイン波を作る - 音楽プログラミングの超入門(仮)

    サイン波まずは一定なサイン波について考えてみます。 周波数が F [Hz]、振幅が A のサイン波は下式で表現されます。 ここで t は時間インデクス、fs はサンプリング周波数、初期位相は 0 としています。これを実装すると、次のようになり # -*- coding: utf-8 -*- from scipy import arange, sin from scipy import pi as mpi from matplotlib import pylab as pl # =============== # サイン波を作る # =============== def make_sine(F, A, fs, sec = 2.): ret = A * sin(2. * mpi * F * arange(int(fs * sec)) / fs) return ret # ======== #

    【Python】時間変化するサイン波を作る - 音楽プログラミングの超入門(仮)
  • 1