音楽プログラミングの超入門(仮)

Python / 音楽情報処理 初心者が、初心者にも分かるような記事を書きたい。

Latex の scrartcl.cls を使ってみた

 いつしか下の記事を発見して、色々ためになった。

使ってはいけない LaTeX のコマンド・パッケージ・作法 - Ichiro Maruta Homepage

出力結果が変わらなくても、こういう細かいところは注意しときたい。
 特に、Latex のクラスファイルは (j)article, jsarticle くらいしか知らなかったので、A4 前提で作られてるらしい scrartcl.cls ってどんなんだろうと思って使ってみた。

続きを読む

Pythonで短時間フーリエ変換(STFT)と逆変換

※ iSTFT の実装が間違っていました。というよりも、スペクトログラムをイジらない場合しか滑らかな再合成ができない不適切な実装となっていたので、まともな(ロバストな)実装に変えました。(今のところ)一番需要がありそうな記事で残念過ぎるミスを犯してすいません・・・。
(2014, 2/7)

周波数(スペクトル)の時間変化を見る

少し前に音響信号を周波数スペクトルに変換するフーリエ変換を扱いました。

Pythonでフーリエ変換(と逆変換) - 音楽プログラミングの超入門(仮)

 ここで、例えば市販曲などの3分程度の音響信号の周波数を分析することを考えます。この音響信号全体をフーリエ変換して得られたスペクトルはあまり意味がありません。このような長い音響信号では、ある時間ではドの音が鳴っていたり、別の時間ではラの音がなっていたりしますが、それらが全部ごちゃまぜで解析されてしまうからですね。各時刻のスペクトルを計算して、その時間変化を見たいですね。

続きを読む

【Python】 array(numpy.ndarray)型の操作いろいろ

Python の信号処理では、array(numpy.ndarray)型の配列を色々いじくりまわして難しい計算を行なっていくので、基本的な操作を知っておかないと不便です。このページは array 型配列に対する操作を羅列しくだけのページで,具体的には次のようなことを紹介しています。

  • numpy.ndarray の属性・メソッド
  • その他の便利な操作
  • よく使う(かもしれない) SciPy の関数

随時追加していくと思います。(多分)
色々抜けていると思うので、これが便利、などありましたら教えてください。

続きを読む

Pythonでフーリエ変換(と逆変換)

音響信号のフーリエ変換

ここでは、離散フーリエ変換のみを扱っています。
信号処理においてフーリエ変換というと、ほとんどの場合、離散フーリエ変換を指しています。

フーリエ変換は可逆変換なので、逆変換があります。フーリエ変換・逆変換の定義式はこんな感じです。


\begin{eqnarray}
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 
  \ \ \ \ \ \ H(f) &=& \int_{-\infty}^{\infty} h(t)e^{-i2\pi ft}\;\;dt, \\
  h(t) &=& \int_{-\infty}^{\infty} H(f)e^{i2\pi ft}\;\;df
\end{eqnarray}

ここでは、 h(t) が入力音響信号ですね。

続きを読む

PythonでWAVファイルを読み込む

音声信号処理を行う場合、大抵、数値列をWAVファイルから読み込むことになると思います。Python でそれを行う方法を2つ紹介します。

waveモジュールを使う

wave モジュールはその名の通り、WAVファイルを扱うためのモジュールです。WAVファイルの読み込みはこんな感じにします。

続きを読む

Pythonでの信号処理とは

Pythonを使うメリット

Pythonは簡単

Pythonスクリプト言語の中でも、特に覚えるのが簡単な言語だと思う。全く触ったことがない人でも、1週間くらいで小さいプログラムなら大体書けるようになるんじゃないかな。Pythonしか触ったことのない筆者がいうのだから間違いない。

ライブラリが豊富

信号処理に限らず、Pythonは特定分野の処理を行うためのライブラリが沢山ある。それらを用いることで、効率的なコーディングや、プログラム実行時間の短縮を実現できるよ。公開されているライブラリは大抵、とても洗練されているから、自分で同じものを書くより全ての面で優れていることが多い。

続きを読む