線形予測符号(LPC)でスペクトル包絡を計算する

Juliaを使った音の処理については、これまでにいくつかのエントリを書きましたが、今日は線形予測符号(LPC; Linear Predictive Coding)を用いてスペクトル包絡を求めてみます。ここでは線形予測符号の説明は省きますが、音声信号処理の分野では昔からよく…

Juliaの変数スコープについて

Juliaの変数スコープはMatlabやC言語と少し違うので混乱した話。(2019年8月25日:global/localスコープの説明が公式ドキュメントと違ったので修正しました) たとえば、1から10までの整数の和を求めたいとき、C言語では以下のようにやるかと思います。 #inc…

本日の給油

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2017-09-15 10004.7 3.09 123.96 53.03 2.34 2017-10-04 10152.2 2.08 125.96 70.91 1.78 2017-10-18 10314.9 3.42 125.73 47.57 2.64 2018-05-05 10499.5 3.18 137.74 58.05…

REAPERのJSFXでピンクノイズを生成してみた

REAPERのEffectsフォルダにはIvanov氏が作った「Pink Noise Generator」というJSFXが入っていたのですが、ソースを読んでみるとホワイトノイズにフィルタをかけてピンクにしているものでした。ホワイトノイズにフィルタをかけるのではなくピンクノイズを直接…

Gtk.jlの準備

JuliaでGUIを作りたいと思ってJulia Observerに行くと、いくつかの選択肢が掲載されています。掲載されているものの他にもWebIO.jlやGtk.jlもありますし、以前はFLTKのバインディングがあったような気もします。また、SDLを使うためのSimpleDirectMediaLayer…

本日の給油

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2017-09-15 10004.7 3.09 123.96 53.03 2.34 2017-10-04 10152.2 2.08 125.96 70.91 1.78 2017-10-18 10314.9 3.42 125.73 47.57 2.64 2018-05-05 10499.5 3.18 137.74 58.05…

楽器音の分析とスペクトログラム

この記事はJulia Advent Calendar 2018の24日目です。 僕は日頃、おもにオーディオ信号を扱うのにJuliaを使用しています。今日はそのうち楽器音の分析のために作成したプログラムを紹介します。 楽器音の分析 楽器の音を聞いたとき、トランペットとピアノと…

Julia 1.0でオーディオ入出力(とインパルス応答測定)

Juliaが1.0になって、徐々に環境が整ってきました。ここ数日、LibSndFile.jlやPortAudio.jlを使ってゴニョゴニョやっていたことをまとめておきます。 TLDR。入出力の同期とか考えずに最低限の音再生ができればいいという場合は、 using FileIO: load, save i…

Juliaコードのディスアセンブル(Julia 1.0)

marui.hatenablog.com 上記のJulia 0.6でやったことと同じですが、Julia 1.0がリリースされたので変化があったか見てみました。 前回と同じくadd1()を関数定義します。これはJulia 0.6でも1.0でも同じ。 julia> function add1(x) return x+1 end add1 (gener…

Juliaコードのディスアセンブル(Julia 0.6)

www.youtube.com ヨーロッパLISPコンファレンスで発表された上記のプレゼンの中に、Juliaコードをネイティブコードに変換して中身を確認するマクロが紹介されていました。 公式ドキュメントではEssentials · The Julia Languageに書かれていますが、面白そう…

REAPERのJSFXでモノラル→ステレオのアップミックスやってみた

Lauridsenのモノラル→ステレオのアップミックス・エフェクタをサクッと作ってみました。簡単ですねー。参考文献は以下。(注:最近使われている手法とは違ってかなり原始的です!) www.aes.org desc: maruware Lauridsen Decorrelator (mono-to-stereo) // …

REAPERのJSFXでステレオ・オシロスコープ作ってみた

REAPERのプラグインを簡単に書けるJSFXという仕組みがあります。それをつかってステレオ音源のオシロスコープ(リサジュー曲線)を描くプラグインを書いてみました。やっていることは ディレイラインに2ch分のオーディオ信号を溜める それを使ってグラフ描画…

PinkTSP信号をJuliaで作る

Julia言語でPinkTSP信号を作るプログラムを書いた。とは言っても、以前書いたMatlabのものをそのまま移植しただけ。そもそも参考にしたのは以下の文献。 藤本卓也. “低域バンドでのSN比改善を目的としたTSP信号に関する検討.” 日本音響学会研究発表会講演論…

本日の給油

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2017-03-18 8559.6 2.76 125.72 45.94 2.74 2017-04-29 8703.9 2.77 127.80 52.09 2.45 2017-04-29 8905.9 3.21 128.97 62.93 2.05 2017-04-30 9032.5 2.20 131.82 57.55 2.2…

DSP.jlに対応した低域フィルタ

引き続きJuliaネタです。前回は、Bristow-JohnsonのパラメトリックEQを自作のfreqz関数で可視化してみました。 marui.hatenablog.com ただ、プログラミング言語を使う際には長いものには巻かれておいたほうが良いので、Juliaのエコシステムで言及されているJ…

パラメトリックEQ

先日Juliaでフィルタの可視化をしたけれど、あの時点ではまだフィルタの設計はMatlabに頼っていた。今回はRobert Bristow-Johnson氏の名作をもとに、パラメトリックEQを作る。ただし、今日ここに紹介するのはピークフィルタのみ。

Maxで使えるJavaのバージョンが8になっていた

Ableton/Cycling'74のMaxでは、いくつかの(Max以外の)プログラミング言語を使えるようになっています。Cycling'74が公式にサポートしているものにはJava、JavaScript、Luaがあり、エクスターナルを書くことを考えるとC/C++もあります。Max専用のDSLとしてG…

本日の給油

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2017-03-18 8559.6 2.76 125.72 45.94 2.74 2017-04-29 8703.9 2.77 127.80 52.09 2.45 2017-04-29 8905.9 3.21 128.97 62.93 2.05 2017-04-30 9032.5 2.20 131.82 57.55 2.2…

ハーフマラソン

第46回タートルマラソン国際大会のハーフマラソンの部を完走してきました。2014年10月の同大会のグロスタイムが2時間08分30秒(ネットタイム2時間00分11秒)で、今回がグロス2時間06分10秒(ネット2時間02分15秒)なので、それほど変わらず。ただ、数日前に…

JavaScriptではじめてのグラフ描画

環境にできるだけ依存せずにグラフを描いたりしたいとなるとHTML5かなぁと思い、はじめてのJavaScript。まだ配列の使い方を調べていないので、sinもcosも直に計算&描画してます。 使ったHTMLファイルは以下。

本日の給油

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2017-03-18 8559.6 2.76 125.72 45.94 2.74 2017-04-29 8703.9 2.77 127.80 52.09 2.45 2017-04-29 8905.9 3.21 128.97 62.93 2.05 2017-04-30 9032.5 2.20 131.82 57.55 2.2…

MatlabのfreqzもどきをJuliaで

MatlabやOctaveにはfreqzという関数があり、FIR/IIRフィルタの周波数特性・位相特性を計算しグラフ表示してくれます。PythonでもSciPy.signalに同名の関数があります。似たことをJuliaでやってみました。 今回は双二次フィルタを見てみましょう。標本化周波…

振幅スペクトルのリアルタイム可視化

とある場所で振幅スペクトルのリアルタイム可視化をデモすることになったので、久しぶりにProcessingのプログラムを書きました。Minimに入っていた例をほぼそのまま使っています。(左右方向は20 Hz〜ナイキストを対数軸で、上下方向は-60〜0 dBを表示してい…

本日の給油

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2017-03-18 8559.6 2.76 125.72 45.94 2.74 2017-04-29 8703.9 2.77 127.80 52.09 2.45 2017-04-29 8905.9 3.21 128.97 62.93 2.05 2017-04-30 9032.5 2.20 131.82 57.55 2.2…

MacBook Pro (15in, 2017)の3 chマイク

MacBook Pro (15in, 2017)ですが、「Audio MIDI設定」の画面でマイク設定を確認してみると4 ch入力ができるかのように書いてあります。 最高で96 kHz / 24 bit / 4 chまでいけるとなれば、マイクロホンとヘッドアンプの性能によっては本体だけでもかなり面白…

MacBookから映像が出せなくて困ったはなし

Apple MacBook Pro (2017)とエレコムのDST-C01SVとで講義デビュー。 DST-C01SVは、ギガビット・イーサ、VGA、HDMI、Mini Display Port、ステレオミニジャック(入出力対応)、USB 3.0×3口、SDスロット、microSDスロットに加えて、充電専用のUSB Type-C端子ま…

同名の中華香辛料が二種類あった?

僕が好きな辛味調味料のうち、香りの高さで選んでいるものが老干媽(ラオガンマ)が作っている香辣脆油辣椒(シャンラーツィユーラージャオ)です。定期的に横浜中華街まで買いに行っていることは下記のエントリにも書きました。 marui.hatenablog.com 東京…

音ファイルの読み込みと単純な可視化

ここ数年の僕はプログラミングというと音と統計ばかりやっているのですが、特に音の分析や加工に関してよく使うものはMatlab、Python、Rで実装したので、次はCommon LispかJuliaで実装してみようかと思います。最終的にはCommon Lispでなんでもやるのが夢な…

PyPlotでお手軽にグラフを描く

表題通りなのですが、Juliaには高機能なグラフィックス環境がいくつかあります。その中でもPythonのmatplotlib.pyplotを真似たパッケージがPythonユーザにとってもMatlab/Octaveユーザにとってもとっつきやすいのではないでしょうか。 たとえば以下のように…

5年目点検

2012年に購入したスーパーカブ110プロの5年目の点検が終了。オイルも交換してエンジンの回転も快適になりました。自賠責保険も5年で更新。また今日から5年乗るぞ!(アフリカツインも欲しいが……)