「並列処理シンポジウム JSPP '95 」 平成７年５月

リアルタイムビートトラッキングシステムの並列計算機への実装| AP1000 によるリアルタイム音楽情報処理 |
後藤 真孝

村岡 洋一

早稲田大学 理工学部
あらまし本稿では，並列計算機の音楽情報処理への応用例として，音楽音響信号に対してリアルタイムにビートを認識するシステムの，並列計算機への実装について述べる．本システムでは質が異なる複数の処理を同時に実行する必要があるため，計算機全体でデータパラレル処理をおこなう実装は適切でない．本実装では，並列計算機を構成するプロセッサをグループに分け，各グループに対し，処理の質に応じた 4 種類の並列処理方式を適用する．そしてこれらのグループ間でデータを流し，計算機全体ではパイプライン状にデータを処理する．本システムは実際に並列計算機 AP1000 上でリアルタイムに動作し，30 曲中 27 曲に対してビートトラッキング可能であった．

Abstract

This paper presents parallel implementation of a real-time beat tracking system that processes
musical acoustic signals and recognizes temporal positions of musical-beats. Parallel processing is necessary toperform this computationally-intensive task in real time. We apply four kinds of parallelizing techniques toexecute heterogeneous processes simultaneously. The processes are rst pipelined, and then each stage of thepipeline is implemented with data/control parallel processing, pipeline processing and distributed cooperativeprocessing. Our system has been implemented on the Fujitsu AP1000. In our experiment, it correctly tracked
beats in 27 out of 30 popular songs.

1 はじめには，この実装法は適切でない．

ビートトラッキングとは，人間が音楽に合わせて手拍子を打つように，曲のビート (4 分音符) の位置を認識する技術である．ビートは西洋音楽を理解する上で基本的な概念の一つであり，ビートトラッキングの実現は，音楽聴取過程を計算機上で実現する第一段階として重要である．さらに，音楽音響信号からリアルタイムにビートトラッキングする技術は，多くのマルチメディアアプリケーションにおいても望まれている[1] ．しかし，従来のビートトラッキングに関する研究の多くは，MIDI 信号か少数の楽器で演奏された音響信号を対象にしており [2]0[7] ，ドラムスを含む複数の楽器で演奏された音響信号を扱うことはできなかった．
本研究で実現するシステムは，ロック・ポップスの主にドラムスがビートを刻む曲を対象とし，複数の楽器で演奏された音響信号に対してリアルタイムにビートを認識・予測する．主要な処理は，複数の手がかりを抽出する周波数解析と，ビートの様々な解釈の可能性を同時に追跡するビート予測である．これらの処理は計算量が多いため，リアルタイムに実行するには並列処理するのが適している．
従来の並列計算機の応用例の多くでは，計算機全体でデータパラレル処理をおこなっていた．しかし，本研究が対象とするビートトラッキングのように，質が異なる複数の処理を同時に実行する必要がある場合にParallel Implementation of A Real-time Beat Tracking
System | Real-time Musical Information Processingon AP1000 | Masataka Goto and Yoichi Muraoka
School of Science and Engineering, Waseda University

本実装では多様な処理を並列に実行するために，まず並列計算機を構成するプロセッサを複数のグループに分け，各グループに対してシステムを構成する処理単位を直接割り当てる．割り当てられた処理の質はそれぞれ異なるため，その質に応じた異なる並列処理方
式 (パイプライン処理，データパラレル処理，コントロールパラレル処理，分散協調処理) を各グループ内で適用する．そして，これらのグループ間でデータを送受信することで，計算機全体としてはパイプライン状にデータを処理する．
我々は，本システムを富士通の分散メモリ型並列計算機 AP1000 (64 プロセッサ構成) 上に実装した．本実装では，あるプロセッサグループが同期をとっているときに，別のグループが処理を続ける必要がある．しかし，AP1000 の OS が提供する S-Net によるバリア
同期は，すべてのプロセッサで明示的に同期をとる必要があるため利用できない．そこで，同期が不要なプロセッサは処理を続けることができるように，ステー
タスハードウェアを利用して時間確認可能な同期機構を実現した．
実装したシステムに対し，市販の Compact Disc(CD) の音響信号を入力して実験した結果，30 曲中27 曲に対して正しいビートをリアルタイムにトラッキングできた．実装したシステムのターンアラウンド
タイムは 127.71msec であったが，常に予測結果 (次のビートの時刻) を出力するというビートトラッキン
グの処理の性質から，この遅延時間は問題にならなかった．

{353{

2 処理モデル

周波数スペクトル立ち上がり成分

CD

本システムは，市販の CD などから得た複数の楽f器音を含む音響信号を入力とし，4 分音符に相当するビートを認識する．その際，ビートの存在する時刻 音楽音響信号(ビート時刻) を認識するだけでなく，そのビートが強拍か弱拍か (ビートタイプ) も判断する．そして，ビー
ト時刻，ビートタイプ，現在のテンポの三つから成るビート情報を，入力された音楽に合わせて出力する． 音響信号の入力
本システムは，入力に対して以下の仮定をおこなう．

 入力曲は 4=4 拍子であり，テンポは 70〜180

t
解釈の統合

BD, SD
発音時刻の検出器
周波数解析

ビート情報

エージェント

ビート予測

ビート情報の出力

図 1: 処理モデル

M.M. (4 分音符/分) の間で，曲中を通じてほぼ音楽の音響信号一定である．
 バスド ラム (BD) が強拍 (1，3 拍目)，スネアドラム (SD) が弱拍 (2 ，4 拍目) で鳴る確率が高い．

音響信号の入力

これらの仮定は，ロック・ポップスの多くの曲に当てはまる．

高速フーリエ変換

周波数解析

立ち上がり成分の抽出
このような音響信号に対するビートトラッキングを実現するには，主に次のような課題がある．(1) 音響
ＢＤとＳＤの検出
発音時刻の検出
信号波形にはビートに直接関係のないエネルギーピークが多数あるため，ピーク検出した後に閾値処理をす
ＢＤとＳＤの発音時刻
発音時刻とその信頼度とその信頼度る単純な手法では，ビートをとらえることはできない．
(2) 対象とする音響信号には様々な楽器音が混在しており，MIDI の場合には容易に得られる各音の発音時刻を，正確に求めることは困難である． (3) ビートはエージェント
ビートの解釈の結果とその確信度
音楽に対して人間が知覚する概念であり，ビートが実解釈の統合際の信号に直接対応するとは限らない．音響信号がな
ビート予測
いところにビートが存在する場合もある．このような最も確信度の高い解釈曖昧さがあるためにビートを一意に解釈することはで
ビート情報の出力きず，常に複数の解釈の可能性がある．(4) 4 分音符の長さやビートタイプの判断は音楽的知識を必要とし，ビート情報一般には難しい．
図 2: 処理の流れ
以上を解決するために，複数の手がかりを抽出し，複数の解釈の可能性を同時に追跡する．まず，ビートに直接対応する特定の手がかりがないため，周波数解析で複数の手がかりを抽出する．具体的には，各周波数帯域ごとの発音時刻と，主要なドラム音 (BD と SD)の発音時刻を検出する．次に，ビート予測において，複数のエージェントがビートの様々な解釈の可能性を並列に調べる．各エージェントは，発音時刻をそれぞれ異なった戦略により解釈し，次のビートの時刻を予測した後に，その解釈の確信度を自己評価する．最終的に出力するビートの時刻は，最も確信度の高いエージェントの解釈に基づいて決定する．これにより，あるエージェントの解釈がはずれても，他のエージェントが正しく解釈している限り，ビートを見失わずにトラッキングできる．また，BD と SD の出現位置から，4 分音符の長さを推定しビートタイプを判断する．

本システムの処理モデルの概念図を図 1 に示し，処理の流れを図 2 に示す．まず，音響信号の入力で A/D変換された音響信号に対して，周波数解析をおこない，各周波数帯域ごとの発音時刻と，BD と SD の発音時刻を検出する．これは，様々な視点から検出する複数の発音時刻の検出器がおこなう．次に，ビート予測の各エージェントが，過去に得られた発音時刻からビートの間隔を求め，次のビート時刻の予測とビートタイプの判断をおこなう．そして，全エージェントの解釈を統合してビート情報を生成する．最後にビート情報の出力が，ネットワークを通じて他のアプリケーションプログラムへとビート情報を送信する．
以下では，主要な処理である周波数解析とビート予測について述べる．

{354{

2.1 周波数解析

2.1.3 発音時刻の検出

複数の発音時刻の検出器が様々な視点から手がかりを抽出する．まず，高速フーリエ変換で得られた周波数スペクトルに対し，立ち上がり成分の抽出をおこなう．この結果に対し，発音時刻の検出器1 が，様々な感度・周波数帯域において発音時刻を検出する．また，これ以外に BD と SD 専用の発音時刻の検出器もある．
以上の発音時刻の検出結果は，ビート予測の各エージェントへと送られる．

複数の発音時刻の検出器が，それぞれ異なるパラメータにより発音時刻を求める．各検出器は，2.2 で述べるエージェントの組に対応しており，検出結果を対応する組へ送信する (図 1, 図 5) ．
発音時刻は以下のように得る．まず，各時刻における立ち上がり成分の合計値 D(t) を式 (5) により求め，その時間変化のピーク時刻とピーク値を，平滑化微分を用いたピーク検出により求める4 ．こうして得られたピーク時刻を発音時刻とする．

2.1.1 高速フーリエ変換 (FFT)

D (t) =A/D 変換された音響信号に対して FFT をおこない，周波数スペクトル (パワースペクトル) を得る．これにより，各周波数成分のパワーの時間変化が得られる．観測区間 (WindowSIZE) を時間軸方向に単位時間 (ShiftSIZE) ずつずらしながら FFT を適用する2 ．

2.1.2 立ち上がり成分の抽出
スペクトルのパワーが確実に増加し続けている周波数成分を，立ち上がり成分として抽出する．多くの場合，発音したときの鳴り始めの周波数成分がこの抽出で得られる．

パワーp(t,f)

時間
周波数np

p(t,f)

t+1pp

tf+1

X

d(t; f )(5)f

それぞれの検出器は，検出感度，検出周波数帯域という二つのパラメータを持つ．検出感度は，平滑化微分における平滑化の時間幅であり，平滑化幅が小さいほど感度が高くなる．検出周波数帯域は，式 (5) 中のにおける周波数帯域の指定で，これにより制限された帯域の発音時刻を得ることができる．

P

2.1.4 BD と SD の検出
立ち上がり成分の抽出結果から，現在の曲の BD とSD の音に対応する特徴周波数を自動的に獲得し5 ，これらの発音時刻を検出する．立ち上がり成分が検出された時刻において，その周波数軸方向のピーク周波数が BD か SD の特徴周波数に一致した場合，BD または SD がその時刻に発音したと判断する．

t-1

ff-1

t-2

1kHz

図 3: 立ち上がり成分の抽出
周波数

FFT の結果に対して，式 (1) を満たす周波数成分p(t; f ) を，立ち上がり成分とする (図 3) ．ただし，p(t; f ) は時刻 t ，周波数 f 3 におけるスペクトルのパワーとし，pp と np は 式 (2), 式 (3) で与えられるものとする．

(p(t; f )np> pp> pp

(1)

(3)

p(t; f ) が立ち上がり成分であるとき，その立ち上がりの度合 d(t; f ) は，式 (4) により求める．
d(t; f ) = max(p(t; f ); p(t + 1; f )) 0 pp

(4)

1 現在の実装では，発音時刻の検出器の数は 15 個である．
2 現在の実装では，WindowSIZE は 1024 点 (46.44msec) ，ShiftSIZE は 256 点 (11.61msec) であり，周波数分解能は 21.53
Hz ，時間分解能は 11.61msec になる．
3 ただし，t ，f は整数値をとり，1t ，1f はそれぞれ時間分解能，周波数分解能に相当する．

20Hz

図 4: ヒストグラム中の BD と SD の特徴周波数

pp = max(p(t 0 1; f ); p(t 0 1; f 6 1); p(t 0 2; f ))(2)np = min(p(t + 1; f ); p(t + 1; f 6 1))

SDBD
頻度（パワーの合計）

特徴周波数は以下のように獲得する．まず，立ち上がり成分が存在する時刻において，周波数軸方向のピークを求め，そのヒストグラムを作成する (図 4) ．
その際，ヒストグラムには各ピークの立ち上がりの度合 d(t; f ) を加える．そして，ヒストグラム中で最も周波数の低いピークを BD ，それより周波数が高く最もパワーの大きいピークを SD の特徴周波数とみなす．
4 Savitzky と Golay の 2 次多項式適合による平滑化微分を用いたピーク検出により，ノイズの影響を平滑化で減らした後に極大値を与える時刻を検出する．
5 一般に，これらのドラム音の音色は曲ごとに異なるため，特徴周波数を事前に与えることはできない．

{355{

2.2 ビート予測

発音時刻

周波数解析の結果を，複数のエージェントがそれぞれ異なった戦略により解釈し，次のビート時刻を予測する．各エージェントが出力する解釈の結果は，次のビート時刻，そのビートタイプ，ビートの間隔の三つから成る (図 5) ．この結果は，解釈の統合へと集められ，最も確信度の高い解釈が選択される．
すべてのエージェント6 は，二つずつの組に分けられる．同じ組の二つのエージェントは協調し合いながら，両者が同じビートの間隔で，互いにビートの間隔の 1/2 ずれた時刻を予測する．これにより，一方が 4分音符の裏拍を予測し始めても他方が正しい表拍を予測できる．各エージェントの組は，2.1.3 で述べたよ
うに，それぞれ対応する検出器から発音時刻を受けとる (図 5) ．

発音時刻の検出器（周波数解析）エージェント（ビート予測）パラメータ
検出感度
検出周波数帯域

パラメータ
検出感度
検出周波数帯域
ヒストグラム作成法

解釈の結果
次のビート時刻
ビートタイプビートの間隔

解釈の結果
次のビート時刻
ビートタイプビートの間隔図 5: エージェントと発音時刻の検出器
エージェントは，ビートを解釈する際の戦略を変更する三つのパラメータ (検出感度，検出周波数帯域，ヒストグラム作成法) を持つ．パラメータの値の設定は，各エージェントの組ごとに異なり，同じ組の二つのエージェントだけが同じ値をとる．検出感度と検出周波数帯域は，発音時刻の検出器内の対応するパラメータを制御し，エージェントが受けとるビートの手がかりの質を調整する．ヒストグラム作成法は，発音時刻の間隔 (IOI: inter-onset-interval) のヒストグラムを作成する方法を変更する．またエージェントは，自己評価した確信度が長期間低い場合に，これらのパラメータを自己修正する機能も持つ．

IOI

IOI

IOI

時間
予測＋ビートの間隔

ビート時刻

前回のビート時刻

次のビート時刻

図 6: 次のビート時刻の予測
次のビート時刻の予測は，前回のビート時刻にビートの間隔を加えておこなう (図 6) ．ビートの間隔は，IOI のヒストグラムの最大ピークから求める．もし前回のビート時刻とほぼ一致する発音時刻がある場合には，その発音時刻にビートの間隔を加える．
各エージェントは，以下のように解釈の確信度を自己評価する．過去に予測したビート時刻に発音時刻が一致していれば，確信度を上げる．また，過去に予測したビート時刻の間の 8 分音符や 16 分音符に相当する時刻に，発音時刻が一致している場合にも，確信度を少し上げる．これらに一致しない場合には，確信度を下げる．
次に，予測した各ビート時刻に対し，BD と SD の発音時刻の検出結果からビートタイプを判断する．これらがある程度交互に鳴るという性質を用いて，次のビートに BD と SD のどちらが予測されるかを判断する．もし次のビートが BD だと予測すれば，そのビートタイプを強拍とし，SD の場合には弱拍とする．そして，ビート時刻にこれらがある程度交互に検出されれば，その解釈の確信度を上げ，4 分音符に相当するビートの間隔を持つ解釈が選択されるようにする．

2.2.2 解釈の統合
すべてのエージェントから集められた解釈の結果は，ビート時刻とビートの間隔が同じもの同士，グループ分けされる．各グループにおいて，グループ内の全解釈の確信度を合計し，そのグループの確信度とする．
そして，最も確信度の高いグループ内の最も確信度の高い解釈を選択する．

3 並列化手法

2 で述べた処理モデルから，質が異なる多様な処理を，並列計算機上でリアルタイムに実行する必要があることがわかる．このような処理を並列化するには，(a)計算機全体で時分割処理する手法 と，(b) 計算機全2.2.1 エージェントの動作体でパイプライン処理する手法 が考えられる (図 7) ．
各エージェントはビートの間隔を求めて次のビート
ここでは，手法 (a) の問題点を指摘し，本実装で用い時刻を予測し，解釈の確信度を自己評価する．そして，た手法 (b) について述べてゆく．
予測したビートに対してビートタイプを判断し，解釈並列計算機全体で時分割処理する場合には，図 2 のの確信度を補正する．
各処理を順番に切替えて実行する．しかし，並列度の6 現在の実装では，エージェントの数は 30 個である．
低い処理によりアイドル状態になるプロセッサが増{356{

プロセッサ

入力
時
間

プロセッサ
パイプラ
イン処理

時
間
データパラ
レル処理
コントロールパラレル処理分散協調処理出力(a) 計算機全体で時分割処理
プロセッサ
時
間

図 8: 異なる並列処理方式を組み合わせたパイプライン処理(b) 計算機全体でパイプライン処理

図 7: 並列化手法の比較えると共に，処理の切替えのオーバヘッドも大きくなる．具体的には，図 2 において，BD と SD の検出，解釈の統合などの処理は並列度が低く，これらを実行している間は，多くのプロセッサがアイドル状態となる(図 7 (a)) ．また，各処理を切替える際に，処理間の通信が終了するのを毎回待つ必要があるため，処理間の通信時間のすべてが常に全体の実行時間に影響する．
一方，並列計算機全体でパイプライン処理する場合には，プロセッサを複数のグループに分け，各グループに対して図 2 の各処理を割り当てる．そして，図 7 (b)のように，パイプラインの各ステージにグループを対応させ，グループ間でデータを流すことでパイプラインを形成する．各グループへその処理の並列度に応じてプロセッサを割り当てることで，アイドル状態となるプロセッサを削減できる．各プロセッサは，常に割り当てられた同種の処理を実行するので，処理の切替えのオーバヘッドも小さい．また，手法 (a) では別々におこなわれていた処理間の通信が一度におこなわれるため，最も時間のかかる通信だけが全体の実行時間に影響し，他の通信時間は隠蔽できる7 ．時間のかかる通信をおこなう処理が，より早い時刻から送信することができれば，全体の実行時間への影響はさらに小さくなる．
本システムの並列化では，手法 (b) により計算機全体でパイプライン処理するだけでなく，さらに異なる並列処理方式を組み合わせる．パイプライン中の 4 つのステージにおいて，それぞれの処理の質に応じてパイプライン処理，データパラレル処理，コントロール
7 この場合，通信ネットワークへの負荷は手法 (a) よりも大きくなるが，送信開始時刻をずらしたり，近接通信を多くすることで，通信時間の増加を抑えることができる．

パラレル処理，分散協調処理を適用する (図 8) ．
以下では，これら 4 つの並列処理方式について順番に述べる．なお，現在の実装は並列計算機 AP1000 に対しておこなっており，各ステージのプロセッサ数は，総プロセッサ数 (64 台) を考慮して決められている．

3.1 パイプライン処理 (FFT)FFT(2.1.1) を 5 台のプロセッサがパイプライン処理する．FFT 自体は逐次処理でおこなうが，各プロセッサが単位時間 (ft: フレーム時間) ずつずれて FFTを実行することで，パイプライン状に処理する．現在の実装では 1ft は 11.61msec であり，1 回の FFT(1024点) の計算はおよそ 4.2ft かかる．そこで，5 台のプロセッサが FFT をおこなうことにより，毎 ft ごとに結果を得ることができる (図 9) ．
プロセッサ
時間ＦＦＴ
（逐次処理）

図 9: パイプライン処理 (5 プロセッサ)

3.2 データパラレル処理(立ち上がり成分の抽出)
立ち上がり成分の抽出 (2.1.2) を 8 台のプロセッサがデータパラレル処理する．周波数スペクトルの全周波数帯域を 8 等分してプロセッサへ割り当てる．そして，各プロセッサは自分の担当する帯域の立ち上がり成分を抽出する (図 10) ．
この処理は DOALL 型ループで実現でき，全プロセッサでデータパラレル処理することも可能である．
今回は 1ft 以内に処理が終了すれば十分であるので，8 台のプロセッサで並列化した．

{357{

周波数周波数スペクトルプロセッサ

図 10: データパラレル処理 (8 プロセッサ)

3.3 コントロールパラレル処理(発音時刻の検出・BD と SD の検出)実装した処理モデルでは，30 個のエージェントと 1 個の解釈の統合処理があり，これらを各プロセッサに一つずつ割り当てる (図 12) ．
2.2 で述べたように，同じ組の二つのエージェント(プロセッサ) は，互いの解釈を通信し合い，協調して次のビート時刻を予測する．また各エージェントは，確信度が長期間低い場合にパラメータを自己修正する機能を持つが，これは他のエージェントの現在のパラメータを受信し，その状態を考慮しておこなう．具体的には，他のエージェントのパラメータとは異なる値で，最も確信度の高いエージェントのパラメータに近付くように，パラメータの値を調整する．

発音時刻の検出 (2.1.3) 及び BD と SD の検出(2.1.4) を，16 台のプロセッサがコントロールパラレル処理する．実装した処理モデルでは，15 個の通への実装
常の発音時刻の検出器と 1 個の BD と SD 専用の検出器があり，これらを各プロセッサに一つずつ割り当て
3 で述べた並列化手法により，本システムを富士る (図 11) ．そして，立ち上がり成分の抽出結果とい通の分散メモリ型並列計算機 AP1000 上に実装したう同一のデータに対し，16 台のプロセッサが，異な(図 13) ．実装した AP1000 は，64 台のセルと呼ばれるアルゴリズムやパラメータで別々に発音時刻を検出る要素プロセッサで構成される．本実装では，これらする．この各プロセッサの処理は 1ft 以内に終了する．のセルを図 13 のように 7 つのグループに分けた．これらのグループが，計算機全体のパイプラインを構成立ち上がり成分する．グループを表す長方形の右下に，そのグループに割り当てられたセルの数を示す．矢印はグループ間の大局的なデータの通信を表しており，主に入力から出力へと U 字型にデータが流れる．実際の通信量を，
図 11: コントロールパラレル処理 (16 プロセッサ)
矢印の横に示す．

4 AP1000

3.4 分散協調処理(エージェント ・解釈の統合)

音楽の音響信号Ethernet

音響信号の入力

ビート予測のエージェント (2.2.1) 及び解釈の統合(2.2.2) を，31 台のプロセッサが分散協調処理する．

(516B/ft)APscsi ビート情報の出力

SCSI(12B/ft)ＳＣＳＩ入出力

入力処理(2052B/ft)

様々な感度・周波数帯域で得られた発音時刻

ＲＭＣＰパケット

SCSI

出力処理

(16B/ft)

1 cell

高速フーリエ変換

ＢＤ・ＳＤの発音時刻

5 cells(4100B/ft)

解釈の統合
1 cell立ち上がり成分の抽出(4128B/ft)(3848B/ft)

8 cells(61528B/ft)

発音時刻の検出(840B/ft)

15 cells

ＢＤとＳＤの検出
1 cellエージェント
(1560
B/ft)

30 cells(1620B/ft)

周波数解析

ビート予測
Fujitsu AP1000

B/ft = bytes / frame-time

1 ft = 11.61 msec

1 B/ft = 86.13 bytes/sec

図 13: AP1000 への実装
エージェント

4.1 入出力
解釈の統合

図 12: 分散協調処理 (31 プロセッサ)

音響信号の入力とビート情報の出力は，セルの 1 つと SCSI によって接続された入出力用ワークステーショ{358{

周波数解析

ビート予測

解釈の統合
音響信号
立ち上がりの入力 高速フーリエ変換 成分の抽出
フレーム時間ン (Sun SPARC Station 10: 以下 APscsi と呼ぶ) によりおこなう (図 13) ．この SCSI 接続をおこなうために，セルの一つに SCSI インタフェースを持つオプションハードウェア (富士通 DDV ボード ) を追加した．

発音時刻 ＢＤとＳＤの検出の検出

エージェントビート情報の出力

01
パイプライン処理2

4.1.1 音響信号の入力

3

APscsi は音響信号を 22.05kHz, 16bit, モノラル (1channel) で A/D 変換する．この結果を 256 点ごとにブロック化して，SCSI 入出力をおこなうセルへ送信する．この 1 ブロックに相当する時間 (11.61msec) を1 フレーム時間 (ft) と呼び，ft を AP1000 内のすべての処理の時間単位とする．

45
データパラレル処理

6

コントロールパラレル処理

7
分散協調処理89101112

4.1.2 ビート情報の出力

1314

APscsi は，SCSI 入出力をおこなうセルからビート情報を受信し，RMCP(Remote Music Control Protocol) パケットとして，予測されたビート時刻に Ethernet 上へ送信 (ブロードキャスト) する．RMCP は，MIDI と LAN を融合した分散協調システム (RMCPシステム) におけるサーバ・クライアント間の通信プロトコルであり，シンボル化された音楽情報をネットワークを通じて伝送するために設計された [8] ．
RMCP パケットとしてブロードキャストすることにより，アプリケーションの実装が容易になるだけでなく，複数のアプリケーションでビート情報を同時に利用できる．既に，音楽に合わせてドラム音や手拍子の音を出力したり，音楽に同期した CG(コンピュータグラフィックス)8 を生成する数種類の RMCP サーバを実装した．

4.2 時間管理のための同期機構
計算機全体のパイプライン処理と主要なデータ通信のタイミングを図 14 に示す．この時間管理は，APscsiが A/D 変換する際に，一定個数 (256 点) のデータが揃うまでブロックすることを利用しておこなう．AP1000側は，APscsi から転送されてきたデータによるデータ駆動方式で動作し，1 ブロックを受信する度に同期をとる (11.61msec 間隔) ．図 14 の各横線が同期をとる時刻を表す．この同期は，APscsi からデータを受信する時刻に，各セルの処理のタイミングを合わせるためにおこなう．
本実装では，あるプロセッサグループが同期をとっているときに，同期が不要な別のグループは処理を続ける必要がある．しかし，AP1000 の OS が提供するS-Net によるバリア同期は，すべてのセルで明示的に8 本システムを応用することで，音楽のビートに合わせて踊る仮想の CG ダンサーの映像をリアルタイムに表示するシステムを実現した．

15

図 14: タイミングチャート
同期をとる必要があるため利用できない．そこで，ステータスハードウェアを利用して時間確認可能な同期機構を実現する．
S-Net は，バリア同期をおこなう同期ハードウェア以外にステータスハードウェアを備えている．これは，全セルからの 8 ビットのステータスの論理和をハードウェアで求め，その結果を各セルが参照できる機構である9 ．そこで，この 8 ビットのうち上位 3 ビットを本来のステータス用 (0〜7) ，下位 5 ビットを同期用ス
テータス (0〜31) として割り当てる．

同期は以下のようにおこなう．SCSI 入出力をおこなうセルがマスターとなり，APscsi からデータを受信する度に同期用ステータスをインクリメントする．
他のすべてのセルはスレーブとなり，同期用ステータスの変化を検出して同期をおこなう．こうして同期をとる必要のあるセルだけが変化を監視して同期し，必要のないセルはそのまま処理を続けることができる．
例えば FFT をおこなうセルは，同期用ステータスを5ft ずつ飛ばして確認する．
さらに本同期機構では，同期用ステータスの値が予期していた値よりも進んでいると，自分の処理が遅れていることがわかる．しかし，現在の実装では，AP1000 の処理能力は本システムの計算負荷よりも十分に高く，正常動作しているときに処理が遅れること
9 実際のハードウェアでは論理積を演算している．x _ y = :(:x ^:y){359{

はない．そのため，処理が通常より遅れた場合には， イムに抽出し，ビートの様々な解釈の可能性を同時に追跡できるようになった．
異常が起きたと判断してシステムは停止する．
本実装では，並列計算機全体でパイプライン処理
4.3 ターンアラウンド タイムをおこない，パイプラインの各ステージに，それぞれの処理の質に応じた 4 種類の並列処理方式を適用し現在の実装では，AP1000 全体のパイプラインをた．これにより，質の異なる様々な処理をリアルタイデータが通過する時間 (ターンアラウンド タイム) はムに実行することが可能になった．また，AP1000 に11ft(127.71msec) である．つまり，ある時点の出力結実装する際に，ステータスハードウェアを利用して時果には，最短で 127.71msec 前の入力までが反映され間確認可能な同期機構を実現した．これにより，同期る．この遅延時間は，入力を直接加工して音響信号をが不要なプロセッサは処理を続けることができ，各プ出力する処理 ( リバーブなどのエフェクト処理) では
ロセッサは処理の遅れを知ることが可能になった．
問題になるが，本システムのように過去のビートを認
今後は，ドラム音の検出手法や予測処理の改良によ識して，常に予測結果 (次のビート時刻) を出力する
り入力の制約を減らすとともに，エージェント間の協場合には問題にならない．例えば，180 M.M. の最も調・統合の方式も改良していく予定である．またビー
短い 4 分音符の長さでも 333.33msec あるため，予測トトラッキングの技術は，ビデオ／オーディオ編集シ
時に前回のビート時刻周辺の情報は利用できる．
ステムやリアルタイム CG など，多くのマルチメディ
ただし，これはターンアラウンド タイムが 333.33
アアプリケーションに有効である．今後，これらのマmsec でもよいことを意味するのではない．例えば，発ルチメディアシステムへの応用もおこなっていく．
音時刻を検出するには，その時刻の前後 100〜200msecの情報を平滑化微分の処理が必要とする．また，ターンアラウンドタイムが短いほど，より新しい情報を利用して予測がおこなえる．

5 実験結果市販の CD からサンプリングしたモノラルの音響信号を用いて実験した．BD が強拍 (1 ，3 拍目) ，SDが弱拍 (2 ，4 拍目) で多く鳴る，テンポがほぼ一定なロック・ポップス 30 曲を入力した．これらの曲は，テンポが 78〜168 M.M. と広い範囲から選び，21 の異なるアーティストによって演奏されたものである．
実験の結果，30 曲中 27 曲に対して正しいビートをリアルタイムに出力できた．どの曲も最初は BD とSD の特徴周波数を獲得していないために，ビート時刻を認識できてもビートタイプは判定できない．しかし，BD と SD がほぼ定常的に鳴り出して数小節経つと，ビートタイプも正しく出力するようになった．
誤認識した 3 曲では，ビート時刻は正しく得られていたが，ビートタイプを誤っていた．これは，BDと SD の特徴周波数を正しく獲得できなかったためか，ドラムスの変則的なリズムが一時期続いていたのが原因であった．

6 おわりに謝辞
AP1000 の SCSI 入出力の実装について協力して頂いた富士通研究所の稲野 聡 氏に深く感謝いたします．
また，AP1000 の実行環境を提供して頂いた富士通研究所 並列処理研究センターに感謝いたします．

参考文献[1] Masataka Goto and Yoichi Muraoka: A Beat Tracking System for Acoustic Signals of Music, ACM Multimedia 94 Proceedings, pp.365-372 (1994).
[2] Roger B. Dannenberg and Bernard Mont-Reynaud:
Following an Improvisation in Real Time, Proceedings of the 1987 International Computer Music Conference, pp.241-248 (1987).
[3] Peter Desain and Henkjan Honing: The Quantizationof Musical Time: A Connectionist Approach, Computer Music Journal, Vol.13, No.3, pp.56-66 (1989).
[4] Paul E. Allen and Roger B. Dannenberg: Tracking
Musical Beats in Real Time, Proceedings of the 1990
International Computer Music Conference, pp.140143 (1990).
[5] David Rosenthal: Machine Rhythm: Computer Emulation of Human Rhythm Perception, Ph.D. Thesis,
Massachusetts Institute of Technology (1992).
[6] W. Andrew Schloss: On The Automatic Transcrip-tion of Percussive Music 0 From Acoustic Signal toHigh-Level Analysis, Ph.D. Thesis, CCRMA, Stan-ford University (1985).
片寄 晴弘: 音楽感性情報処理に関する研究 , 大阪大学
[7]
本稿では，音楽音響信号に対するビートトラッキン
基礎工学部 博士論文, pp.45-48 (1991).
グシステムの並列化手法と，並列計算機 AP1000 への[8] 後藤 真孝, 橋本 裕司: MIDI 制御のための分散協調シス
リアルタイム実装について述べた．本システムでは，
テム | 遠隔地間の合奏を目指して|, 情処研報, Vol.93,並列処理することにより，複数の手がかりをリアルタ
No.109, 音楽情報科学 93-MUS-4-1 (1993).
{360{