2022-01-01から1年間の記事一覧

フィルタの可視化(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

(追記:関連記事として「音ファイルを書き出すwavwrite関数(Lisp Advent Calendar 2022) - 丸井綜研」を書きました) 9月に「Common Lispで音ファイルを読み込む - 丸井綜研」というエントリでcl-wavとbodge-sndfileを試用しました。Apple Siliconではbod…

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

TSP信号の生成(Julia)

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

TSP信号の生成

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

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

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

Common Lispで畳み込み演算

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

Common Lispで音ファイルを読み込む

(2022-12-04追記:cl-wavを便利に使える関数を作りました→Common Lisp用のwavread - 丸井綜研) Lispで音をやろうと思ってもなかなか情報が出てこないのですが、OpenMusicのような大規模なシステムもCommon Lispで書かれているので無理なことはないはず。Go…

エンジンの形式

ボクサーとかVツインとかいろいろあるので、エンジンの形式についてWikipediaへのリンクをまとめてみました。エンジン形式の説明についてはJIS B 0108-1「往復動内燃機関−用語−第1部:機関設計及び運転用語」に掲載されている説明を引用しました。 直列エン…

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

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2021-09-25 12563.7 2.81 148.04 52.10 2.84 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…

Common LispでFFTライブラリを使ってみる

Common Lispを使っていろいろと車輪の再実装を続けています。今回はフーリエ変換ライブラリを試してみます。Common Lispにはフーリエ変換のライブラリは入っていないので、Quicklispでfftをキーワードに探していきます。すると以下の4つがヒットしました。 C…

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

youtu.be 給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2021-10-24 10 9.69 155 - - 2021-10-24 48 7.62 155 - - 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 1…

1/3オクターブ周波数のリストを得る

目次 標準数とは Common Lispでの実装 実行例 似たようなことをJuliaでやってみると…… 標準数とは 1/3オクターヴ幅での周波数リストが欲しい時があります。20, 31.5, 40, 50, 63, 80, 100, 125, 160, 200, 250, 315 Hz... というやつです。実はこのリスト、…

周波数から音名を得る

Common Lispの勉強をしていて、簡単なプログラムを再実装しています。数年前にJuliaで書いた「周波数を与えると音名・セント値が返ってくる関数」をLispに移植してみました。Julia版は以下の記事に書いてあります。 marui.hatenablog.com やっていることはJu…

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

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2021-10-24 10 9.69 155 - - 2021-10-24 48 7.62 155 - - 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…

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

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2021-07-31 12417.3 2.62 148.09 48.40 3.06 2021-09-25 12563.7 2.81 148.04 52.10 2.84 2021-11-04 12711.0 2.44 156.97 60.37 2.60 2022-01-03 12814.3 2.18 153.21 47.39…

sfplay~のディスクバッファサイズ設定

Max 8の[mc.sfplay~]を使って、29チャンネルのWAVファイルを3つ同時再生するというパッチを作っていたのですが、普通に組んだら、どうしても最初の1秒くらいしか再生されません。詳しい人に質問したら、8チャンネルを超えるファイルを再生するときには[mc.sf…

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

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km) 2021-10-24 10 9.69 155.01 - - 2021-10-24 48 7.62 154.99 - - 2021-10-30 267 13.46 162.04 16.27 9.96 2021-11-06 507 15.29 157.03 15.70 10.00 2021-11-14 737 13.01 15…