丸井綜研

バイクとコンピュータで遊んでいるよ

ステレオチェック信号を作った

ごくたまにオーディオシステムの準備をすることがありますが、パワーアンプからスピーカへの結線は赤黒ケーブルが逆になってしまったり、左右スピーカへの接続を逆にしてしまったりということがあります。そこで、ステレオスピーカへの結線がうまくいってい…

本日の給油(スーパーカブ110プロ/JA07)

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2022-02-23 12910.1 2.55 158.04 37.57 4.21 2022-03-06 13058.0 2.83 160.07 52.26 3.06 2022-05-26 13182.1 2.46 158.10 50.45 3.09 2022-06-22 13278.4 1.99 165.83 48.39…

二項分布の確率質量関数

今日の午後に開催されたLispお茶会イベント(Shibuya.lisp lispteatime #11 - connpass)に参加しました。とくに事前にテーマを決めずにもくもく会に参加したのですが、作り途中になっていた二項分布の確率質量関数(Rでのdbinom)の高速化と精度改善をする…

PGMファイルへの画像書き出し

車輪の再発明を続けています。今日は画像の書き出しです。 スペクトログラムを計算できるようになったものの、それを画面表示するためにはなんらかの画像にしないといけないんですね。画面にウィンドウを作って表示するよりもファイルにするほうが簡単なので…

スペクトログラム

Common Lispで振幅スペクトルの計算ができるようになり、Hann窓もかけられるようになったので、次はスペクトログラムの実装にいきたいと思います。 スペクトログラムは、振幅あるいはパワーの強さを時間と周波数ごとに計算したものです。以下の画像ではAudac…

macOSのコマンドラインから音ファイル変換

macOSにはafで始まる名前の、オーディオファイルを操作するコマンドラインアプリが入っています(afclip、afconvert、afhash、afida、afinfo、afplayの6つ)。僕がよく使うのはafinfoとafconvertです。 afinfoは以下のようにオーディオファイルの情報を表示…

本日の給油(スーパーカブ110プロ/JA07)

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2022-02-23 12910.1 2.55 158.04 37.57 4.21 2022-03-06 13058.0 2.83 160.07 52.26 3.06 2022-05-26 13182.1 2.46 158.10 50.45 3.09 2022-06-22 13278.4 1.99 165.83 48.39…

本日の給油(CRF1100Lアフリカツイン/2BL-SD10)

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2022-02-05 1740 18.22 158 18.77 8.42 2022-03-07 2007 16.46 162 16.22 9.99 2022-04-10 2283 14.23 163 19.40 8.40 2022-06-26 2628 18.97 166 18.19 9.13 2022-07-18 286…

ガンマ関数

非負整数nの階乗n!はn×(n-1)×(n-2)×(n-3)×...×2×1と定義されています。また、0!=1とします。例えば6!であれば、6×5×4×3×2×1=720です。これを、整数以外にも拡張したのがガンマ関数で、nが整数の時にはΓ(n+1) = n!となります。例えばΓ(6)=120、Γ(7)=720となり…

正規分布の確率密度関数と累積分布関数の計算

目次 正規分布の確率密度関数 累積分布関数の近似式(Abramowitz and Stegun) 累積分布関数の逆関数の近似式(Abramowitz and Stegun) 累積分布関数と逆関数を誤差関数から計算する(Numerical Recipes) Common Lispを音だけでなく、統計にも使いたいです…

キャンプ道具を揃えた2022(テント)

youtu.be キャンプ道具を揃えたシリーズの番外編です。本編は以下の3つ。 キャンプ道具を揃えた2022(バッグと小物類) キャンプ道具を揃えた2022(調理器具) キャンプ道具を揃えた2022(テーブルとチェア) 最初のキャンプ道具を揃えた2022(バッグと小物…

フィルタの可視化(freqz相当の関数を作る)

信号にフィルタをかけられるようになり、そして、レシピ通りのフィルタを作れるようになりました。 IIRフィルタをかける関数(Lisp Advent Calendar 2022) - 丸井綜研 双二次フィルタの係数(Lisp Advent Calendar 2022) - 丸井綜研 次に、フィルタの周波…

双二次フィルタの係数(Lisp Advent Calendar 2022)

この記事はLisp Advent Calendar 2022の25日目です。Lispで音プログラミングに向けた、さらなる一歩。 目次 はじめに RBJ Cookbookによる低域フィルタ フィルタを使ってみる 他の形状のフィルタ はじめに 先日フィルタをかける関数を作りました(IIRフィルタ…

電気回路のシミュレーション(Julia Advent Calendar 2022)

Julia Advent Calendar 2022の18日目の記事です。毎年Juliaで音に関係したことを書いていて、これまでにこのブログで書いたアドカレ記事は以下の通りです。 楽器音の分析とスペクトログラム (Julia Advent Calendar 2018) - 丸井綜研 パワースペクトル計算の…

IIRフィルタをかける関数(Lisp Advent Calendar 2022)

この記事はLisp Advent Calendar 2022の16日目です。Lispで音を自由自在に扱うという野望に向けての次の一歩。 デジタルフィルタ ちょっと前に高速フーリエ変換を用いて畳み込み演算の実装をしました。2信号の時間領域での畳み込み演算は周波数領域での要素…

一様乱数と標準正規乱数の行列を得る(Lisp Advent Calendar 2022)

この記事はLisp Advent Calendar 2022の13日目です。 目次 はじめに 一様乱数行列 改良 標準正規乱数(おまけ) 標準正規乱数行列について追記(2022-12-18) はじめに 任意の大きさの行列に乱数が入っているものが欲しいことがあります。Matlabのrand(5, 4)…

音ファイルを書き出すwavwrite関数(Lisp Advent Calendar 2022)

この記事はLisp Advent Calendar 2022の11日目です。Lispには入門と挫折を繰り返していましたが、今年4月にLispに再入門し、なんとか日常的なイロイロに使えるようにしているところです。 普段使いするためには自分の専門分野のプログラムを作るのがよいだろ…

キャンプ道具を揃えた2022(テーブルとチェア)

キャンプ道具を揃えたシリーズです。 キャンプ道具を揃えた2022(バッグと小物類) キャンプ道具を揃えた2022(調理器具) キャンプ道具を揃えた2022(テーブルとチェア)←本記事 製品名につけたリンクはオフィシャルサイトへのリンクです。Amazonで販売され…

キャンプ道具を揃えた2022(調理器具)

キャンプ道具を揃えたシリーズです。 キャンプ道具を揃えた2022(バッグと小物類) キャンプ道具を揃えた2022(調理器具)←本記事 キャンプ道具を揃えた2022(テーブルとチェア) 製品名につけたリンクはオフィシャルサイトへのリンクです。Amazonで販売され…

キャンプ道具を揃えた2022(バッグと小物類)

友人に誘われてキャンプに行くようになったので、キャンプ道具を揃えました。友人は道具をたくさん持っていて、僕が身一つで行っても快く使わせてくれます。でも、ソロでデイキャンプにも行きたい(というか野外で料理したい)ので、テーブル、チェアなどを…

Common Lisp用のwavread

9月に「Common Lispで音ファイルを読み込む - 丸井綜研」というエントリでcl-wavとbodge-sndfileを試用しました。Apple Siliconではbodge-sndfileは使えないということで、cl-wavを使っています。ただ、チャンク形式のままのデータが戻ってくるので、もう少…

Hann窓の実装

信号処理でよく出てくるHann窓(別名raised cosine)をCommon Lispで実装しました。例えば64点の窓が欲しいときにはx = [0...63]/63とやってあげて、w(x) = 0.5 - 0.5 cos(2πx)に突っ込んであげればOKです。簡単ですね。 (defun hann (n) "Hann window of le…

本日の給油(スーパーカブ110プロ/JA07)

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2021-11-04 12711.0 2.44 156.97 60.37 2.60 2022-01-03 12814.3 2.18 153.21 47.39 3.23 2022-02-23 12910.1 2.55 158.04 37.57 4.21 2022-03-06 13058.0 2.83 160.07 52.26…

本日の給油(CRF1100Lアフリカツイン/2BL-SD10)

youtu.be 給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2021-10-30 267 13.46 162 16.27 9.96 2021-11-06 507 15.29 157 15.70 10.00 2021-11-14 737 13.01 157 17.68 8.88 2021-11-27 924 13.07 157 14.31 10.97 2021-12…

スーパーカブ用にヘルメット購入

いまスーパーカブ用に使っているヘルメットは2016年に買ったもので、だいぶへたってきています。 marui.hatenablog.com カブも10年目の定期点検を終えたところでもあるので、新しいヘルメットを購入することにしました。今回も「白バイっぽいもの」というの…

行列の転置(Common Lisp)

音のデータ構造 Common Lispで音を扱うときに、どのようなデータ構造で保持しておくのが良いのか少し考えました。 Matlabと同様にサンプル数×チャンネル数という2次元配列で保持することもできますし、例えば、1チャンネル分のサンプル列をvectorとしておき…

TSP信号の生成(Julia)

先週、Common Lisp版のOATSP信号を作りました。 marui.hatenablog.com Julia版もあると便利かと思ってサクッと実装してみました(OATSPの説明などは上記のページを見てください)。一つの関数で測定信号と逆信号を作れると便利なので、まとめてしまっていま…

TSP信号の生成(Common Lisp)

インパルス応答 OATSPの数式 Common Lispで試す 時間領域にもっていく 関数にした インパルス応答 頭部伝達関数を測定したり、スピーカーの応答を測ったり、室内音響指標の計算に使ったり……インパルス応答が測定できると色々と便利です。すでにMatlab、R、Ju…

Common Lispで音の振幅スペクトルの計算

先月末「Common LispでFFTライブラリを使ってみる - 丸井綜研」を書きました。このエントリの最後に「関数化した上でWAVファイルを読み込んで分析してみたい」と書いていたので、今日はそれをやってみました。 WAVファイルを読み込むのには「Common Lispで音…

Common Lispで畳み込み演算

先日Common LispでFFTが使えるようになったので、それを使って畳み込みをします。畳み込みには環状畳み込み(円状畳み込みや循環畳み込みとも呼びます)と線形畳み込みの2種類がありますので、両方とも作ってみようと思います。 ちょっとした道具 実際の畳み…