先日のアドベントカレンダーへのエントリ中で、「今回のエントリはJulia 1.0.5用に書いています。というのも、Julia 1.2や1.3あたりからLibSndFileなどのインストールがうまくいかない状況になっているからです」と書きましたが、それが解決できたので記録を残しておきます。
(TLDR; SampledSignalsの前にUnitfulをインストールしないこと)
まず、どういう状況になっていたかというと、SampledSignalsをインストールしようとしても以下のようなエラーが出てしまい、インストールさせてくれないというものでした。
(v1.3) pkg> add SampledSignals Resolving package versions... ERROR: Unsatisfiable requirements detected for package Unitful [1986cc42]: Unitful [1986cc42] log: ├─possible versions are: [0.9.0, 0.10.0, 0.11.0, 0.12.0, 0.13.0, 0.14.0, 0.15.0, 0.16.0, 0.17.0, 0.18.0] or uninstalled ├─restricted to versions 0.18.0 by an explicit requirement, leaving only versions 0.18.0 └─restricted by compatibility requirements with SampledSignals [bd7594eb] to versions: 0.17.0 — no versions left └─SampledSignals [bd7594eb] log: ├─possible versions are: [2.0.0, 2.1.0] or uninstalled ├─restricted to versions * by an explicit requirement, leaving only versions [2.0.0, 2.1.0] └─restricted by compatibility requirements with FFTW [7a1cc6ca] to versions: 2.1.0 or uninstalled, leaving only versions: 2.1.0 └─FFTW [7a1cc6ca] log: ├─possible versions are: [0.1.0-0.1.2, 0.2.0-0.2.4, 0.3.0, 1.0.0-1.0.1, 1.1.0, 1.2.0] or uninstalled └─restricted to versions 1.2.0 by an explicit requirement, leaving only versions 1.2.0
どうやらUnitfulとFFTWのバージョンがSampledSignalsと整合しないようです。Unitful 0.17.0とFFTW 1.2.0が欲しいのかな。
status
を見てみると、
(v1.3) pkg> st Status `~/.julia/environments/v1.3/Project.toml` [537997a7] AbstractPlotting v0.9.16 [c52e3926] Atom v0.11.3 (中略) [7a1cc6ca] FFTW v1.2.0 (中略) [1986cc42] Unitful v0.18.0 [d6d074c3] VideoIO v0.6.10
となっており、たしかにUnitfulのバージョンが0.18.0ということでマッチしていません。FFTWは良さそうな感じです。
でも、念のため、どちらもアンインストールします。
(v1.3) pkg> rm Unitful Updating `~/.julia/environments/v1.3/Project.toml` [1986cc42] - Unitful v0.18.0 Updating `~/.julia/environments/v1.3/Manifest.toml` [187b0558] - ConstructionBase v1.0.0 [1986cc42] - Unitful v0.18.0 (v1.3) pkg> rm FFTW Updating `~/.julia/environments/v1.3/Project.toml` [7a1cc6ca] - FFTW v1.2.0 Updating `~/.julia/environments/v1.3/Manifest.toml` [no changes]
で、ここでSampledSignalsをインストール。
(v1.3) pkg> add SampledSignals Resolving package versions... Installed Colors ───── v0.11.1 Installed ColorTypes ─ v0.9.0 Updating `~/.julia/environments/v1.3/Project.toml` [bd7594eb] + SampledSignals v2.1.0 Updating `~/.julia/environments/v1.3/Manifest.toml` [3da002f7] ↑ ColorTypes v0.8.1 ⇒ v0.9.0 [5ae59095] ↑ Colors v0.10.1 ⇒ v0.11.1 [bd7594eb] + SampledSignals v2.1.0 [1986cc42] + Unitful v0.17.0
うまくいった。こんな単純なことだったのか……。 FFTWについての出力がないので、関係ないのかな? 常用するものなので再インストールしておかないと。
(v1.3) pkg> add FFTW Resolving package versions... Updating `~/.julia/environments/v1.3/Project.toml` [7a1cc6ca] + FFTW v1.2.0 Updating `~/.julia/environments/v1.3/Manifest.toml` [no changes]
これでLibSndFileもインストールできるし、DSPを使うプログラムもJulia 1.3で動かせるようになった。良かった。
_ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 1.3.1 (2019-12-30) _/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release |__/ | julia> using FileIO: load julia> import LibSndFile julia> snd = load("speech_male.flac") 4659900-frame, 1-channel SampleBuf{FixedPointNumbers.Fixed{Int16,15}, 2} 105.66666666666667s sampled at 44100.0Hz ▇▇▆▆▇▇▆▆▆▆▅▇▆▆▆▆▆▆▆▆▆▆▆▆▆▅▃▇▆▆▆▇▆▆▆▆▆▆▆▆▆▇▆▆▆▆▆▆▆▆▆▆▆▅▆▇▆▆▆▇▇▆▇▆▆▇▆▆▇▆▆▆▆▆▆▆▁▁▁▁
気兼ねなく、年が越せる!