JuliaLang

暑いので気象庁のデータで遊んだ

8月になりました。暑い日が続いておりますが、みなさまいかがお過ごしでしょうか。自分が子供のころはこんなに暑くなかった気がする……と思ったので調べてみようと思い立ちました。 気温データは、気象庁のサイトに行くと、各種データ・資料 > 過去の気象デー…

メモ化でフィボナッチ数列計算を高速に

メモ化(メモワイズ)というのは、計算結果をキャッシュしておいて次の計算の時に再利用するという仕組みです。Julia用のメモ化のためのパッケージ (Memoise.jl) が開発されていますが、簡単な実装でフィボナッチ数列の計算がどのくらい速くなるのか試してみ…

同じスペクトルを持つのにクレストファクタが違う波形 (Julia Advent Calendar 2023)

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

上方倍音列と下方倍音列

とある音楽理論の一派では、自然倍音列にヒントを得て作曲に活かしたりするそうです。そんな倍音列の周波数と音名との対応を見られるJuliaプログラムを書いてみました。そもそも「倍音ってなに?」については以下の記事を参照してください。 marui.hatenablo…

日本語で書かれたJulia言語の書籍一覧

日本のAmazonで「Julia」と検索すると(「18歳以上ですか?」に「いいえ」と答えても)セクシーな画像が多く並んでしまうので、これから購入したい本のメモも兼ねて一覧を作りました。とは言っても出版された件数はまだまだ少ないので作成は楽ちん。リンクは…

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

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

TSP信号の生成(Julia)

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

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

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

線形混合モデルを(Juliaで)理解したい

以前「線形混合モデルを理解したい」という記事を読んで、Rで線形混合モデルを試したことがあるのですが、今回は、Juliaで同じことをやってみたときにハマったところを書き残しておきます。 やりたかったことは、前述の記事からもってきた以下のようなコード…

Apple M1でJuliaコードのディスアセンブル(Julia 1.7)

marui.hatenablog.com 上記のJuliaでディスアセンブルをしたときはIntelチップだったので、M1(ARMチップ)でやったらどうなるかを試してみました。 julia> versioninfo() Julia Version 1.7.2 Commit bf53498635 (2022-02-06 15:21 UTC) Platform Info: OS:…

Juliaで基音周波数の推定(YINの解説)(Julia Advent Calendar 2021)

これはJulia Advent Calendar 2021の25日目の記事です。これまでにこのブログで書いたJulia Advent Calendar記事は以下の通りです。 楽器音の分析とスペクトログラム (Julia Advent Calendar 2018) - 丸井綜研 パワースペクトル計算の2つの方法 (Julia Adven…

Juliaで基音周波数の推定(続き)

先日、Juliaを使って基音周波数(≒ピッチ)を推定する記事を書きました。 marui.hatenablog.com その中で、基音よりも倍音成分のほうが振幅が大きいときのために自己相関関数を使用して対処するという説明をしましたが、それでもうまくいかない音があったの…

Juliaで基音周波数の推定

2021-09-24追記:正確に基音周波数が推定できない音があったので、別記事に対策を書きました。 →Juliaで基音周波数の推定(続き) - 丸井綜研 ピッチを感じる楽器の音は、基音と倍音とその他の成分音からなっています。どんな成分が入っているのか分析したい…

フィルターバンク (Julia Advent Calendar 2020)

このエントリはJulia Advent Calendar 2020の25日目のものです。Juliaを音に関する研究によく使っているので、その中から一つ紹介したいと思います。 音の加工をするときにフィルタというものを使うことがあります。フィルタは、特定の周波数の音を除去した…

周波数から音名を得る (Julia Advent Calendar 2020)

このエントリはJulia Advent Calendar 2020の24日目のものです。Juliaを音に関する作業によく使っているので、その中から一つ紹介したいと思います。 音の高さをあらわす方法にはいくつかあります。周波数を使うと「1秒あたりの周期の数」として物理的にも明…

JuliaでOSを判別する方法

普段使用しているコンピュータが2台あります。一つはMacBook Proで、もう一つは自作のWindows PCです。それらのあいだでデータの共有・同期を行うのにはGoogle Driveを使用しています。 Juliaについても同様で、Google Driveに_juliaという名前のディレクト…

東京都のCOVID-19データを取ってくる(Julia版)

先月のエントリでRを使って東京都の新規陽性者数を取得してくるプログラムを作りました。 marui.hatenablog.com 今日はそれをJuliaでやってみたいと思います。とは言っても、Rでやっていることとほとんど同じで、HTTPパッケージを使って東京都のサイトにアク…

JuliaからRCallを使ってANOVA君を呼び出す

ANOVA君は、井関龍太氏が開発している、Rで動作する分散分析プログラムです。様々な実験計画に対応できるようになっており、分散分析に加えて多重比較や単純主効果の検定もやってくれます。自分ではlm()とかaov()なども使ってはいますが、ANOVA君は一回の関…

Juliaパッケージのインストール・スクリプト

新しい環境にJuliaをインストールするときに、自分が使うパッケージ群をまとめてインストールしたいことがあります。 僕の場合、以前はテキストファイルに add Atom add Juno add IJulia のように書いたものを準備しておいて、Pkgモードにコピペするようにし…

Julia 1.3.1にSampledSignalsをインストールした

先日のアドベントカレンダーへのエントリ中で、「今回のエントリはJulia 1.0.5用に書いています。というのも、Julia 1.2や1.3あたりからLibSndFileなどのインストールがうまくいかない状況になっているからです」と書きましたが、それが解決できたので記録を…

パワースペクトル計算の2つの方法 (Julia Advent Calendar 2019)

はじめに これはJulia Advent Calendar 2019の20日目の記事です。「音について何か書きます」と宣言したので、普段Juliaを使って音についてどんなことをしているかを紹介します。今年はパワースペクトルの計算を、(1)信号全体をフーリエ変換する方法と、(2)…

Julia(とR)で古典的多次元尺度法

昨日、こんなツイートを見た。 以前、県庁所在地と県庁所在地の間の距離が一番近いのどこか気になって、大津と京都が一番近いという無駄知識を得たんだけど、国土地理院さんが「都道府県庁間の距離」というなんのために作成されたのかまったくわからない図表…

PortAudio.jlのインストール(2019年11月3日時点)

PortAudio.jlが公式レジストリから消えてしまったのか、これまでのようにインストールしようとすると「見つからない」と言われてしまいます。 (v1.2) pkg> add PortAudio#julia1 ERROR: The following package names could not be resolved: * PortAudio (no…

アダマール行列(N = 2^kのときのみ)

StautnerとPucketteが提案したFeedback Delay Networkという人工リバーブがあります。このFDNを実装するときに必要になるものに、N×Nの行列があります。これを行列Gとしたとき、各要素g_{i,j}はディレイラインiからディレイラインjへのフィードバック・ゲイ…

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

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

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

(2020年8月15日:Julia 1.5で、REPLではlocalスコープ内からglobal変数を参照できるようになりました。Julia 0.6以前の挙動に戻ったことになります) Juliaの変数スコープはMatlabやC言語と少し違うので混乱した話。(2019年8月25日:global/localスコープ…

Gtk.jlの準備

(2020年2月15日追記:ここ半年ほどGtk.jlがインストールできない、あるいはインストールできてもウィンドウが表示されない状況が続いていました。さきほどJulia 1.3.1で再挑戦したところ、以下の対策をしなくてもGtk.jlが使用できました!) JuliaでGUIを作…

楽器音の分析とスペクトログラム (Julia Advent Calendar 2018)

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

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

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

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…