狠狠撸

狠狠撸Share a Scribd company logo
Synthe
界より
シンセ
VST Development
& Sine Speed Test
About me
アバウトミー
INTERESTS
- Programming (C++,C#)
- Music (EDM)
- Design
TWITTER
Astellon
@astellon_music
Agenda
アジェンダ
How great is Shirabe?
「調」とは?
What’s ADDITIVE SYNTH ?
加算合成シンセとは?
Math.h v.s. My algorithm
マスヘッダー 対 私のアルゴリズム
How great is Shirabe?
「調」とは?
コンセプト
概念
NEW GENERATIONS
新世代のためのシンセ
誰も使ったことないような
ある意味「使いにくい」シンセ
アンチアナログモデリング
Features
特徴
4 x OSC with 128 sine waves
Flexible additive synthesis
Specific harmonic effect
VST Synth Powered by JUCE
Progress
進捗
Work In Progress…
現在誠意開発中… (??ω?`)
サイン波を最大128音合成してのこ
ぎり波を出すとこまでできてる。
(フーリエ級数展開の逆、的な)
What’s ADDITIVE SYNTH ?
加算合成シンセとは?
Types of synthesis
合成方式
Subtractive
減算
Frequency Modulation(FM)
周波数変調
Additive
加算
Additive is …
加算合成の特徴
Bright
明るい
Flexible Sound Making
柔軟な音作り
Difficult to use
使いづらい
Implementation
実装
Inverse FFT
フーリエ逆変換
Oscillator bank synthesis
オシレーターバンク(正弦波加算)
Wave table
ウェーブテーブル
Adoption
採用
Oscillator bank synthesis
オシレーターバンク(正弦波加算)
ただし…
膨大なsinの呼び出し
sinを足していくだけ
自由度は高い!!(はず)
Math.h vs My algorithm
マスヘッダー 対 私のアルゴリズム
SINE is SLOW?
サインは遅い?
「fast sine algorithm」で検索
→ 約 505,000 件
Sine is slow
三角関数は遅いらしい
SINE is SLOW
サインは遅い
Mathの高速化を検証する
http://qiita.com/shinido/items/613fd0dd62007bc2fff0
三角関数のテーブル引きによる高速化
http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Doc/misc/SinCos_Table.html
SINE is SLOW
サインは遅い
Really?
ほんと?
Algorithm
アルゴリズム
1. Table Look Up
テーブル引き
2. Bhaskara I‘s approximation
バースカラによる近似
3. Parabolic approximation
放物線による近似
Table Look Up
テーブル引き
sinの値を事前にメモリに書き込み
必要な時に読み出し
+ 線形補間でさらなる精度
sin ?1 sin ?2 sin ?3 sin ?4 sin ?5
Bhaskara
バースカラによる近似
近似式
sin ? =
16?(? ? ?)
5?2 ? 4?(? ? ?)
Bhaskara
バースカラによる近似
近似式
sin ? =
4
?
?
4?|?|
?2
Measurement
測定
自作のアルゴリズムをC++で記述
C++のchronoライブラリを使用
sinを1000万回呼び出すのにかかる
時間を10回計測
→1 loopにかかる時間を算出
デバッグ目的のため、
最適化は切ってる。
Result
結果
実行時間の比較
Result
結果
Sine is fast.
速いじゃん math.h (??ω?`)
Considerations
考察
Time for calling function
関数の呼び出しに時間がかかる?
math.hだけが最適化されてる可能性
(ただの言いがかりかもしれないが)
Reflection
反省
多項式近似は割と雑
最適化の余地はある
SIMD命令、アセンブラ
Conclusion
結論
そろそろ開発しよう。
最適化に使った時間を
最適化したかった。
ネットに書いてあることは、うかつに信用しないこと
Source Code
ソースコード
最適化のコードは
ここに置いてあるから見て
https://github.com/k3ita/sin_speed_test
時間があれば編集するかも
Plan
開発予定
2016
9月
~12月
2017
1~3月
4~6月
9月以降
開発開始
実験期間
開発(メイン)
(ここが伸びるかも)
ブラッシュアップ
主にメモリ、CPU関連
リリース(β版かも)
Plan
開発予定
目標は
Free release
無料の公開
KVR Developer Challenge
KVR開発者の挑戦
Thank you for listening
聴いてくれてありがとう

More Related Content

[C++]additive synthesis のための三角関数高速化