the beginners guide of real-time audio processing (part 1:equalizer)
DESCRIPTION
9/28に開催された、SIG-Audio準備会#2での講演資料(スライド)です。 イコライザーの作り方と、フォートラン教の布教用資料(笑)です。TRANSCRIPT
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 1
.
Hiroyuki Masuno
リアルタイムオーディオ信号処理入門-第1回:イコライザーをつくってみる-
アークシステムワークス株式会社
技術開発部長(CTO)
増野 宏之
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 2
.
Hiroyuki Masuno
自己紹介(その1)
• 増野 宏之 (Hiroyuki Masuno)
– アークシステムワークス株式会社所属
– 技術開発部長(CTO)
– 1964年10月8日生まれ, そろそろ48歳(年男)
– ゲーム業界26年目
• プログラマー/オーディオエンジン開発
• 海外渉外各種交渉業務
• 法務部部長+宴会担当
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 3
.
Hiroyuki Masuno
自己紹介(その2)• コンタクト情報
– 電子メール : • [email protected] (会社)
• [email protected] (個人)
– Facebook : http://www.facebook.com/hiroyuki.masuno.7
– Twitter : @HiroyukiMasuno
– LinkedIn : Hiroyuki Masuno
– 3DS/PSN等すべて実名登録
– ノーガード戦法
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 4
.
Hiroyuki Masuno
講演上の注意点• A4-DSP Engine Xbox360版の実装をベースに解説– XAPO等の書式はWindows版とほぼ同じ
– 内部オーディオバッファ構造は以下のとおり。• サンプリング周波数は48KHz
• 波形形式はIEEE754 浮動小数点(-1.0f~1.0f)形式
• 1オーディオフレーム = 1パケット = 256サンプル
• 更新間隔= 256/48000 = 約5.3ミリ秒
• オーディオフレームレート = 187.5Hz
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 5
.
Hiroyuki Masuno
セッションの流れ1. オーディオ信号処理とは何か、その重要性
2. イコライザーの基本理論(フィルター)
3. XAudio2上での設計と実装
4. EQ実演(NAX Music Player(PSVITA))
5. ゲーム業界震撼のカミングアウト(笑)
6. 質疑応答(時間があれば)
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 6
.
Hiroyuki Masuno
昔話• 音が専用ハードで再生されていたのは昔。
– ファミコン(矩形波x2・三角波x1・ノイズx1)
– 0x4000-0x400F番地のレジスタに値を書き込
んで発音させていた。
– CPU速度: 6502Aの1.79MHz
• オーディオ機能はCPU直結
• 6502A+DAC=リコーRP2A03
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 7
.
Hiroyuki Masuno
オーディオ信号処理の重要性(1)
• 計算資源の爆発的な増加– ファミコン(1983年)(俺=19歳)
• MOS Technology 6502A, 1.79MHz
• 8ビット
– 最新鋭のPC (2012年)(俺=48歳)• Intel Core-i7 3770K
• 最大3.9GHz, 4コア, 8ハードウェアスレッド
• 64ビット
• 単純なクロック周波数比較でも2,000倍
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 8
.
Hiroyuki Masuno
オーディオ信号処理の重要性(2)
• メインCPUやDSPがオーディオ処理を担当する時
代になった。
– オーディオパイプラインの誕生
– 今では、比較的重い処理のひとつ。
– 効率的なオーディオパイプライン設計のために、リアルタイムオーディオ信号処理技術を学ぶ必要性が生じた。
• 日本語で書かれた参考書はあまり多くない。
• ゲームの場合、重要となる高速化に関する書籍はほぼゼロという悲しい状態。高速化→表現力の向上
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 9
.
Hiroyuki Masuno
参考書の紹介• C言語ではじめる音のプログラミング
-サウンドエフェクトの信号処理-
– 著者:青木直史
– 出版社: オーム社 (2008/12)
– ISBN-10: 4274206505
– ISBN-13: 978-4274206504
– 2,730円
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 10
.
Hiroyuki Masuno
オーディオ信号処理とは• 入力バッファに蓄積されたオーディオ信号波形になんらかの数値演算を行い出力バッファに書き出す処理のこと。たとえば・・・– 信号を一定時間(0.2~1秒程度)遅らせて重ねる
• デジタルディレイ
– 信号の遅延時間を小刻みに変化させる• コーラス
– 信号を極端に増幅し、波形を飽和させる• ディストーション
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 11
.
Hiroyuki Masuno
オーディオ信号処理とは(2)
• 実は、入力バッファも出力バッファも必須ではないし、必ずしも波形を加工する必要もない。– 入力バッファがない例
• 内部処理で波形を作り出す– WG (Wave Generator)
– 入力波形を加工せずに出力波形にコピーする• 最大波高値を検出する
– VUメーター
• もっとも確からしいBPM値を検出する– リアルタイムBPM解析(A4-BPM/A4-VMA)
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 12
.
Hiroyuki Masuno
今回の講演における信号処理• 第1回目の今回に関しては、入力波形になんらかの
演算をして出力波形に書き出す、一般的なエフェクターに関する説明を行う。
• WindowsにおけるXAudio2では、XAPOとして
規定されている。– XAPO: XAudio Audio Processing Object
出力波形→演算処理→入力波形
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 13
.
Hiroyuki Masuno
一番簡単な処理の例• アッテネーター(減衰器)(Attenuator)
– 入力された波形を半分の音量にして出力する
– [半分の音量]→[外部から変えることができるように書き直す]→[ボリューム調整APO]の出来上がり
出力波形
fOut
→演算処理
fOut=fIn*0.5f
→入力波形
fIn
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 14
.
Hiroyuki Masuno
XAPOのヘッダー#pragma once
// XAPOベースクラス#include <ATGAPOBase.h>
// クラスを作るときのおまじないclass declspec(uuid("{5EB8D611-FF96-429d-8365-2DDF89A7C1CD}")) CA4FXAPOATT : public
ATG::CSampleXAPOBase<CA4FXAPOATT, A4FXAPOATTPARAMSTATS>
{
public:
// コンストラクターCA4FXAPOATT();
// デストラクター~CA4FXAPOATT();
// FXAPOロックプロセッサー (Xbox360の場合, 48KHz, 16bit, 256samplesが1パケットであることは自明なので、特にこのプロセスWAVEFORMATEX情報を取得する必要はない)
HRESULT LockForProcess(UINT32 InputLockedParameterCount, const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters, UINT32 OutputLockedParameterCount, const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters);
// FXAPOアンロックプロセッサー (Xbox360の場合不要)
void UnlockForProcess();
private:
// ATGAPOBaseクラスからの継承メソッド// シグナルプロセッサー (これが本体)
void DoProcess(const A4FXAPOATTPARAMSTATS&, FLOAT32* __restrict pData, UINT32 cFrames, UINT32 cChannels);
// RPCマニピュレーター (FXAPOの場合、調整可能な変数を大域変数におくので特に不要)void OnSetParameters(const A4FXAPOATTPARAMSTATS& params);
};
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 15
.
Hiroyuki Masuno
XAPOのヘッダー• 実際に必要なもの(A4FXAPOATT.h)
– コンストラクター• CA4FXAPOATT();
– デストラクター• ~CA4FXAPOATT();
– ロックプロセッサー(360では不要)• HRESULT LockForProcess(UINT32 InputLockedParameterCount, const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters, UINT32 OutputLockedParameterCount, const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters);
– シグナルプロセッサー• void DoProcess(const A4FXAPOATTPARAMSTATS&, FLOAT32* __restrict pData, UINT32 cFrames, UINT32 cChannels);
– RPCマニピュレーター(FXAPOでは不要) • void OnSetParameters(const A4FXAPOATTPARAMSTATS& params);
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 16
.
Hiroyuki Masuno
シグナルプロセッサーの処理void CA4FXAPOATT::DoProcess(const A4FXAPOATTPARAMSTATS &, FLOAT32 *__restrict
pData, UINT32 cFrames, UINT32 cChannels)
{
// Locals
int indexC, indexS;
int indexAccess;
int numSamples, numChannels;
float fIn, fOut;
// 1パケットあたりのサンプル数とチャンネル数を設定numSamples = (int)cFrames;
numChannels = (int)cChannels;
// 処理for (indexC = 0 ; indexC < numChannels ; indexC++)
{
for (indexS = 0 ; indexS < numSamples ; indexS++)
{
indexAccess = indexS * numChannels + indexC;
fIn = pData[indexAccess];
fOut = fIn * 0.5f;
pData[indexAccess] = fOut;
}
}
}
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 17
.
Hiroyuki Masuno
実際の処理の部分
for (indexC = 0 ; indexC < numChannels ; indexC++)
{
for (indexS = 0 ; indexS < numSamples ; indexS++)
{
// アクセス位置を計算(ステレオの場合LRLRLR…で並んでいる)indexAccess = indexS * numChannels + indexC;
fIn = pData[indexAccess];
fOut = fIn * 0.5f; // 半分の音量にするpData[indexAccess] = fOut;
}
}
}
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 18
.
Hiroyuki Masuno
イコライザーを作る
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 19
.
Hiroyuki Masuno
イコライザーとは何か• 波形信号の周波数特性を変更する音響機器
• エフェクターの一種(XAPOで設計可能)
• グラフィックイコライザー– 中央周波数一定
– 調整できる帯域の幅も一定
– ゲインのみ変更できる
– 多数(5~31程度)の周波数領域(バンド)が調整できる。
• パラメトリックイコライザー– 上記の3要素(中央周波数・帯域幅・ゲイン)すべてを変更できる
– 調整できるバンドの数は少ない(3~5程度)
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 20
.
Hiroyuki Masuno
イコライザー設計方法(1)
• Linear Phase法– FFT(フーリエ変換)を使う
• 入力波形をFFTして周波数領域に直交変換
• 各周波数ビン利得を変更
• iFFTして時間領域に逆変換
– 特徴• 位相情報は保持される
• iFFT変換後、窓のつなぎ目で、波形を綺麗に繋ごうとすると、最低でも1,024サンプルFFT + 75%オーバーラップ程度の演算が必要となるため重い。
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 21
.
Hiroyuki Masuno
イコライザー設計方法(2)
• 双2次フィルター法(Biquad Filter)
– IIR(無限インパルス応答)フィルターを使う
• RBJ Audio-EQ-Cookbookあまりにも有名
• http://www.musicdsp.org/files/Audio-EQ-
Cookbook.txt
– 特徴• 時間軸側の計算式があるのでFFT不要で高速
• 位相情報は保持されない
• バンドパスフィルターの性能はLinear法に劣る
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 22
.
Hiroyuki Masuno
今回設計するイコライザー• 10バンドのグラフィックイコライザー
– ゲーム内組み込み用に簡素化
– 37.5, 75, 150, 300, 600, 1.2K, 2.4K, 4.8K, 9.6K, 19.2Kの10バンド(Xbox360)
– 31.5, 63, 125, 250, 500, 1K, 2K, 4K, 8K, 16Kの10バンド(Windows, PSVITA)
– 31.5Hz領域[LF]はLPF (Xbox360, Low Shelf)
– 16KHz領域[HF]はHPF (Xbox360, High Shelf)
– 中央の8バンド[MF1-8]はBPF
– 帯域幅:中央周波数の2/3の値にする• 37.5(25), 75(50), 150(100), 300(200)⁄
– ゲイン調整幅 +/- 18.0dBで0.1dB刻み
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 23
.
Hiroyuki Masuno
処理フロー
出力側に書き出し
↓
LF,MF1-MF8,HFの順に10段のフィルターを通す
バンド増幅値が0.0dBの場合は計算しない
↓
入力側から読み込み
↓
事前パラメーター計算
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 24
.
Hiroyuki Masuno
高速化のための定数化(1)• ゲイン調整用の乗数は事前計算
– Vテーブル– -18.0dB(0.125f)~+18.0dB(8.000f)まで
• 0.1dB刻みなので361段階
• 三角関数は計算しない– K = tan(pi * Fc / Fs) [LF,HF]
– K = tan(pi * Fw / Fs) [MF]
– D = -cos(2 * pi * Fc / Fs) [MF only]• Fs : サンプリング周波数48,000
• Fc : 中央周波数(一定)
• Fw : ゲイン調整幅(一定)
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 25
.
Hiroyuki Masuno
高速化のための定数化(2)
• Vテーブルconst double FXAPO_PGEQ3_BAND_GAIN_TABLE[361] =
{
0.1250000000000000, // -18.0dB
0.1264524300377400, // -17.9dB
0.1279217364995970, // -17.8dB
0.1294081154801720, // -17.7dB
0.1309117653525780, // -17.6dB
......
......
......
7.6387328312833300, // +17.6dB
7.7274906313987600, // +17.7dB
7.8172797474739700, // +17.8dB
7.9081121628231700, // +17.9dB
8.0000000000000000, // +18.0dB
};
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 26
.
Hiroyuki Masuno
高速化のための定数化(3)
• Kテーブル
const double FXAPO_PGEQ3_BAND_FILTER_CONSTANT_K[10] =
{0.0024543741889439, //LF k = tan(PI * 37.5 / 48000.0)
0.0032725040294712, //MF1 k = tan(PI * 50.0 / 48000.0)
0.0065450781520340, //MF2 k = tan(PI * 100.0 / 48000.0)
0.0130907170848351, //MF3 k = tan(PI * 200.0 / 48000.0)
0.0261859215691869, //MF4 k = tan(PI * 400.0 / 48000.0)
0.0524077792830412, //MF5 k = tan(PI * 800.0 / 48000.0)
0.1051042352656760, //MF6 k = tan(PI * 1600.0 / 48000.0)
0.2125565616700220, //MF7 k = tan(PI * 3200.0 / 48000.0)
0.4452286853085360, //MF8 k = tan(PI * 6400.0 / 48000.0)
3.0776835371752500, //HF k = tan(PI * 19200.0 / 48000.0)
};
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 27
.
Hiroyuki Masuno
高速化のための定数化(4)• Dテーブル
const double FXAPO_PGEQ3_BAND_FILTER_CONSTANT_D[10] =
{0.0, // LF Do not apply
-0.9999518089593280,// MF1 d = -cos(2PI * 75.0 / 48000.0)
-0.9998072404820650,// MF2 d = -cos(2PI * 150.0 / 48000.0)
-0.9992290362407230,// MF3 d = -cos(2PI * 300.0 / 48000.0)
-0.9969173337331280,// MF4 d = -cos(2PI * 600.0 / 48000.0)
-0.9876883405951380,// MF5 d = -cos(2PI * 1200.0 / 48000.0)
-0.9510565162951540,// MF6 d = -cos(2PI * 2400.0 / 48000.0)
-0.8090169943749470,// MF7 d = -cos(2PI * 4800.0 / 48000.0)
-0.3090169943749470,// MF8 d = -cos(2PI * 9600.0 / 48000.0)
0.0, // HF Do not apply
};
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 28
.
Hiroyuki Masuno
事前パラメータ計算(aa,dd)double d, k, v;
// フィルタパラメータdとkを定数表から引く、またvはm_dBandGainと等価となるd = FXAPO_PGEQ3_BAND_FILTER_CONSTANT_D[indexB];
k = FXAPO_PGEQ3_BAND_FILTER_CONSTANT_K[indexB];
v = m_dBandGain[indexB];
// フィルターパラメータh2は共通処理h2[indexB] = (v - 1.0) / 2.0;
// フィルタパラメータaa,ddを計算する// 0 -- LF : ローシェルフフィルタif (0 == indexB)
{
if (v > 1.0) {aa[indexB] = (k - 1.0) / (k + 1.0);} //Boost: a = (K - 1) / (K + 1)
else {aa[indexB] = (k - v) / (k + v);} //Cut: a = (K - v) / (K + v)
}
// 1~8 -- MF : バンドパスフィルタ (MF1~MF8の8種類ある)else if (indexB >= 1 && indexB <= 8)
{
if (v > 1.0) {aa[indexB] = (k - 1.0) / (k + 1.0);} //Boost: a = (K - 1) / (K + 1)
else {aa[indexB] = (k - v) / (k + v);} //Cut: a = (K - v) / (K + v)
dd[indexB] = d * (1.0 - aa[indexB]); //Cross: d = D * (1 - a)
}
// 9 -- HF : ハイシェルフフィルタelse
{
if (v > 1.0) {aa[indexB] = (k - 1.0) / (k + 1.0);} //Boost: a = (K - 1) / (K + 1)
else {aa[indexB] = ((v * k) - 1.0) / ((v * k) + 1.0);} //Cut: a = (VK - 1) / (VK + 1)
}
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 29
.
Hiroyuki Masuno
フィルター処理 (LF/HF)// シェルフフィルタ// iC:チャンネル番号(0—L, 1—R)// iB:バンドID(0—LF, 9—HF)// dWave:処理波形の波高値// xhn = w - (a - z(prev))
// w = h2 * (w + ((xhn * a) + z(prev))) + w
// z(next) = xhn
{
xhn[iB] = dWave - (aa[iB] * z0[iC][iB]);
dWave = h2[iB] * (dWave + ((xhn[iB] * aa[iB]) +
z0[iC][iB])) + dWave;
z0[iC][iB]= xhn[iB];
}
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 30
.
Hiroyuki Masuno
フィルター処理 (MF1-8)// MF : バンドパスフィルタ (MF1~MF8)
// yn1 = (-a * w) + (d * x1) + x2 - (d * y1) + (a * y2)
// yn0 = h2 * (w - yn1) + w
{
yn1[iB] = (-aa[iB] * dWave) + (dd[iB] * x1[iC][iB]) +
x2[iC][iB] - (dd[iB] * y1[iC][iB]) +
(aa[iB] * y2[iC][iB]);
yn0[iB] = h2[iB] * (dWave - yn1[iB]) + dWave;
// Cross
x2[iC][iB] = x1[iC][iB];
x1[iC][iB] = dWave;
y2[iC][iB] = y1[iC][iB];
y1[iC][iB] = yn1[iB];
// IIR Update original sample
dWave = yn0[iB];
}
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 31
.
Hiroyuki Masuno
NAX Music Player
Paragraphic EQ
デモ実演
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 32
.
Hiroyuki Masuno
最高速なイコライザー(一部)C PGEQ42 : PARAGRAPHIC EQUALIZER 4 STEREO:2CH
C PROGRAMMED BY : HIROYUKI MASUNO
PROGRAM PGEQ42
IMPLICIT REAL*8 (A-H, O-Z)
PARAMETER(NCHAN=2, NBAND=10, NSAMP=1024)
REAL*8 AA(NBAND), H2(NBAND), DD(NBAND)
REAL*8 Z0(NCHAN,NBAND), X1(NCHAN,NBAND), X2(NCHAN,NBAND)
REAL*8 Y1(NCHAN,NBAND), Y2(NCHAN,NBAND)
REAL*8 XHN(NBAND), YN0(NBAND), YN1(NBAND)
C------BAND 1:LF:APPLY LOW SHELF FILTER
IF(DGAIN.EQ.1.0D0) GO TO 100
DO 110 ITER1=1,NCHAN
DO 120 ITER2=1,NSAMP
XHN(1)=DWAVIN(ITER2)-(AA(1)*Z0(ITER1,1))
DWAVIN(ITER2)=H2(1)*(DWAVIN(ITER2)+
& (XHN(1)*AA(1)+Z0(ITER1,1))+DWAVIN(ITER2)
Z0(ITER1,1)=XHN(1)
120 CONTINUE
110 CONTINUE
100 CONTINUE
C--------------------------------------
END
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 33
.
Hiroyuki Masuno
FORTRANL E G A C Y
圧倒的な物量の大域変数・1万行を超えるupdate関数
唯一にして絶対のGameClass・新世代のプログラムを体感せよ!
2012年11月絶賛公開!!
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 34
.
Hiroyuki Masuno
A4-FXAPO by FORTRAN77
• FXAPOのFは「FORTRAN」のF。
• Windows版のオーディオパイプラインは、すべてFORTRAN77で記述されている。
• Visual C++とVisual FortranのMixed
Languageプログラミング
• 自動ベクトル化と自動並列化で全プラットフォーム中で最速。
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 35
.
Hiroyuki Masuno
FORTRANで組む利点• 現時点でもっとも高速。平均で6倍以上。
– FFTならば最大で3桁違うことも珍しくない。– 言語仕様上、メモリコヒーレンシが高い
• ポインターがない、変数はすべてコンパイル時確定。
– C言語でも高速に記述することはもちろん可能、でもそのために、覚えることが多すぎるのは、本末転倒。
• 信号処理マニアなのであって、プログラム言語マニアではない。
• コンパイラーが自動ベクトル化+並列化する。– IntelのマルチコアCPUなら現時点では最速。– マルチコアCPUならば、ハードウェアスレッド数内で、チャンネル数が増えても、ほとんど実行速度が変わらない。
• 膨大な数値計算のライブラリーがある。– Intel Math Kernel Library (IMKL/MKL)
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 36
.
Hiroyuki Masuno
Visual Fortran Composer• Intel Visual Fortran
Composer XE 2013– 2012年9月6日発売
– Compiler 13.0, IMKL 11.0
– Windows 8, Visual Studio 2012まで対応
– 価格:258,300円
– 日本ではXLSoftさんが販売
– ゲーム業界で持っているのはひょっとしたら私だけ??
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 37
.
Hiroyuki Masuno
Fortran Forever
• Windows版をゲーム機版に移植する際には、非常に遅くなるので苦労する。– 実はC/C++言語は個人的に苦手
• ゲーム機向けにもFortran Compilerを!
– Xbox360, PS3, PSVITA, Wii-U, 次世代機にも!
– オーディオパイプラインが早いのなら、レンダリングも早いはず。
• シェーダーもFortranで書けるようにしよう!
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 38
.
Hiroyuki Masuno
Fortran 公式の歌• おおブレネリ あなたの言語はなに?
• 私の言語はフォートランよ 数値計算が得意なのよ
• ヤーーッフォー フォートランランラン
• ヤッフォー フォートランランラン
• ヤッフォー フォートランランラン
• ヤッフォー フォートランランラン
• ヤーーッフォー フォートランランラン
• ヤッフォー フォートランランラン
• ヤッフォー フォートランランラン
• ヤッフォーフォー
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 39
.
Hiroyuki Masuno
NAX Music Player (2012)
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 40
.
Hiroyuki Masuno
NAX Music Player
• Playstation VITA向け, 11月発売
• 世界初「音ゲー」が楽しめる音楽プレイヤー
• 基本無料・有料DLCで機能拡張
– ビジュアライザープラグイン
– DSP-FXプラグイン
– ダンスゲーム/ダンサープラグイン
– DJ, 通信カラオケ, 各種音ゲーもDLCで提供
Arc System Works Co., Ltd.SIG Audio
Audio Digital Signal Processing 1 : EQ
Page 41
.
Hiroyuki Masuno
御静聴ありがとうございました!
質疑応答
お問い合わせは[email protected]