ライブラリ
WORLD
言わずと知れた(?)音声分析合成の凄いライブラリ。C++で書かれているのでC#でも比較的簡単に使えて嬉しい。KISSでの音声信号処理はほとんどこのライブラリに頼りっきりです。ピッチ推定、スペクトル包絡推定、非周期推定指標推定、音声合成と至れり尽くせり。処理が重いのが玉に瑕な気もしますが、品質は確かです。
Copyright (c) 2010-2016 M. Morise
NoiseGenerators
ノイズを生成するアルゴリズムが入ったライブラリです。KISSでも非周期性成分の合成でお世話になっております。何が違うのか私にはわからないですがたぶんいいノイズです。MVNはFFTかけたあとに全成分の平均を取るとほぼ0になってくれます。なんかわからないけど凄い。
Copyright (c) 2018 Masanori Morise
https://github.com/mmorise/NoiseGenerators/blob/master/LICENSE
Cloo
GPUでの計算を簡単(?)にできるようにしてくれるOpenCLのラッパーです。GPUとかあんまりよくわからないですが、HarvestとCheapTrickとD4Cの処理をやらせてみてます。HarvestはCPUよりちょっとだけ早くなったのでKISSでも優先的に使うようにしてあります。CheapTrickとD4Cは処理が複雑すぎるせいなのか、CPUより遅めでした。まあGPUの最適化とかよくわからずにベタっと書いたプログラムの比較なのであれですが、WORLDの処理速度は課題の一つなので少しでも高速化出来たらよいなと思います。CPUとGPU両方ともいい感じのバランスで並列で処理させられれば高速化できると思うので、気が向いたらその辺りも少しずつ直していきたいです。
NAudio
オーディオ関係の汎用的な処理がセットになってる凄いライブラリです。KISSでは音声ファイルの読込・保存・再生などに使わせてもらっています。音声ファイルの形式って結構複雑なので、簡単に読込ができて良いです。あと、FFTができるんですが、これがそこそこ高速なのでKISSでの音声合成はWORLDのコードをC#に書き直して、NAudioのFFTを使ってやってます。C++の方が高速かもしれませんが、音声の加工とか合成部分は自分でも結構いじりますし、C++のままコードを書くのはデバッグが辛すぎるので、そういう使い方にしてます。ただ、NAudioのFFTは単精度での計算で精度悪いので分析には使えませんでした。まあ分析の方はあまりいじらないのでC++のままでも問題ありませんね。
Copyright (c) Mark Heath 2019
Newtonsoft.Json
特に理由はないのですが、KISSの設定ファイルとかプロジェクトファイルはJsonにしてます。xmlでもよかった気がしますが、まあ勉強も含めてこちらを使ってます。
Copyright (c) James Newton-King 2008
OXYPlot.WPF
WPFでグラフを使えるようにしてくれるライブラリです。KISSでのグラフはすべてコレで書いてます。使いやすいですし、キレイなので好きです。ただ、無料のライブラリなのでいくつか問題もあって、マウスのクリク位置とかを取得しようとすると、PlotViewというのを使わなくちゃいけなくて、そうするとWPFらしいデータバインディングみたいなことができなくなっでしまって、コードビハインドでゴリゴリ書かなきゃいけなかったりします。あと、点の数が10000以上とか多くなってくると描画にとても時間がかかります。KISSの画面がカクカクするのは大体この子のせいです。(嘘です、その辺の処理ちゃんとしてない私のせいです。)有料のライブラリだと100万点とかの大きなデータを描画させても高速に動作してくれるらしいですが、個人で買える値段ではないです。無料でこんな高機能なグラフを使えるってのはとても凄いことだと思います。
Copyright (c) 2014 OxyPlot contributors
https://raw.githubusercontent.com/oxyplot/oxyplot/master/LICENSE
MahApps.Metro
アプリの見た目をガラッと変えてくれる凄いライブラリです。デフォルトで白地に青のアクセントという葵ちゃんカラーなところもポイント高いですね。デフォルトのコントロールの見た目をかっこよくしてくれるのもそうなんですが、いくつか追加されているコントロールもあって、KISSでもRangeSliderとNumericUpDownを使わせてもらってます。特にNumericUpDownは設定値とかを入力するには非常に便利なコントロールだと思うのですが、WPFではデフォルトではないので助かってます。まあ、NumericUpDownはUI的には微妙なんですかね。デスクトップアプリでマウス操作なら結構便利ですけど、スマホアプリでタッチ操作だったら使いにくいですもんね。マルチデバイスってのを念頭に置くのであれば使ってはいけないコントロールなんでしょう。まあKISSはデスクトップアプリなのでバンバン使っていきますが。
Copyright (c) 2011 - 2019 MahApps.Metro
https://licenses.nuget.org/MIT