TwlIPL_commit-99/add-ins/TwlSystem/man/ja_JP/snd/NNS_SndCaptureStartEffect.html

179 lines
6.8 KiB
HTML
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>NNS_SndCaptureStartEffect</title>
<link rel="stylesheet" href="../css/nitro.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
</head>
<body>
<div class="refentry" lang="ja"><a name="IDAKKWT"></a><div class="titlepage">
<div></div>
<div></div>
</div>
<h1>NNS_SndCaptureStartEffect</h1>
<h2>構文</h2>
<dl>
<dd><pre class="funcsynopsisinfo"><code>#include &lt;nnsys/snd.h&gt;</code></pre></dd>
<dd><pre class="funcsynopsisinfo"><code>typedef void (*NNSSndCaptureEffectCallback)(
void* <var>bufferL</var>,
void* <var>bufferR</var>,
u32 <var>len</var>,
NNSSndCaptureFormat <var>format</var>,
void* <var>arg</var>
);</code></pre></dd>
<dd><pre class="funcprototype"><code class="funcprototype">BOOL NNS_SndCaptureStartEffect(
void* <var>buffer_p</var>,
u32 <var>bufSize</var>,
NNSSndCaptureFormat <var>format</var>,
int <var>sampleRate</var>,
int <var>interval</var>,
NNSSndCaptureEffectCallback <var>callback</var>,
void* <var>arg</var> );</code><br></pre></dd>
</dl>
<div class="refsection" lang="ja"><a name="IDAIOWT"></a>
<h2>引数</h2>
<div class="variablelist">
<table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><em><strong><code>buffer_p</code></strong></em></td>
<td>エフェクトバッファのポインタです。32バイトアライメントされている必要があります。</td>
</tr>
<tr>
<td><em><strong><code>bufSize</code></strong></em></td>
<td>エフェクトバッファのサイズです。<var>interval</var> * 64の倍数で無ければなりません。
最大値は0x7fff8です。</td>
</tr>
<tr>
<td><em><strong><code>format</code></strong></em></td>
<td>サンプルデータのフォーマットです。</td>
</tr>
<tr>
<td><em><strong><code>sampleRate</code></strong></em></td>
<td>サンプリングレートです。</td>
</tr>
<tr>
<td><em><strong><code>interval</code></strong></em></td>
<td>コールバックインターバルです。2以上の値を指定します。</td>
</tr>
<tr>
<td><em><strong><code>callback</code></strong></em></td>
<td>エフェクトコールバック関数のポインタです。</td>
</tr>
<tr>
<td><em><strong><code>arg</code></strong></em></td>
<td>エフェクトコールバック関数の引数となるパラメータです。</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="refsection" lang="ja"><a name="IDAHQWT"></a>
<h2>返り値</h2>
<p>エフェクトの開始に成功したかどうかを返します。</p>
</div>
<div class="refsection" lang="ja"><a name="IDAOQWT"></a>
<h2>説明</h2>
<p>
エフェクトを開始します。
</p>
<p>
キャプチャー機能を使ってミキサー出力をキャプチャし、コールバック関数でエフェクト処理を行った後、
最終音声として出力します。
エフェクト動作中は、16チャンネル中の2チャンネルチャンネル1及びチャンネル3を消費します。
チャンネル1またはチャンネル3が、シーケンスによって使用中の場合、発音中の音は強制的に停止させられます。
</p>
<p>
エフェクトを使うためには、エフェクトバッファが必要になります。
エフェクトバッファが小さいほど頻繁にコールバック関数が呼びだされます。
先頭アドレス<em><strong><code>buffer_p</code></strong></em>は、32バイトアライメントされている必要があります。
また、バッファサイズ<em><strong><code>bufSize</code></strong></em>は、<em><strong><code>interval</code></strong></em> * 64の倍数で無ければなりません。
</p>
<p>
サンプルデータのフォーマット<em><strong><code>format</code></strong></em>は、下記の値から選択します。
16ビットの方が、音質は良くなりますが、8ビットの時に比べて倍の頻度で
コールバック関数が呼びだされるようになります。
</p>
<div class="table"><a name="IDAERWT"></a><p class="title"><b>表 . NNSSndCaptureFormat</b></p>
<table summary="NNSSndCaptureFormat" border="1">
<colgroup><col><col></colgroup>
<thead>
<tr>
<th>ラベル</th>
<th>説明</th>
</tr>
</thead>
<tbody>
<tr>
<td>NNS_SND_CAPTURE_FORMAT_PCM8</td>
<td>8ビットPCM</td>
</tr>
<tr>
<td>NNS_SND_CAPTURE_FORMAT_PCM16</td>
<td>16ビットPCM</td>
</tr>
</tbody>
</table>
</div>
<p>
サンプリングレート<em><strong><code>sampleRate</code></strong></em>は、
値が大きいほどキャプチャしたデータの音質は良くなりますが、その分頻繁にコールバック関数が
呼びだされます。
</p>
<p>
コールバックインターバル<em><strong><code>interval</code></strong></em>は、エフェクトバッファが全体にキャプチャする間に、
何回コールバック関数が呼びだされるのかを指定します。
通常は2を指定し、半分を再生中に残り半分を書き換えるようにします。
</p>
<p>
コールバック関数<em><strong><code>callback</code></strong></em>は、
コールバックインターバル<em><strong><code>interval</code></strong></em>で指定した間隔で、エフェクトバッファにキャプチャされる毎に呼びだされます。
引数には、Lミキサー成分<em><strong><code>bufferL</code></strong></em>およびRミキサー成分<em><strong><code>bufferR</code></strong></em>
先頭アドレスのポインタと、バッファのサイズ<em><strong><code>len</code></strong></em>が入れられます。
フォーマット<em><strong><code>format</code></strong></em>とユーザー引数<em><strong><code>arg</code></strong></em>は、
<tt class="function">NNS_SndCaptureStartEffect</tt>関数の引数に入れたものと同じものが渡されます。
引数に渡されるバッファは、キャプチャが完了した領域を指しています。
この領域を修正することで、実際に出力される音を変更することができます。
</p>
<p>
<tt class="function"><a href="NNS_SndCaptureCreateThread.html">NNS_SndCaptureCreateThread</a></tt>関数で
キャプチャースレッドを起動しているときは、コールバック関数はキャプチャースレッドから呼びだされます。
キャプチャースレッドを起動していない場合は、コールバック関数はIRQハンドラから呼びだされます。
</p>
<p>
エフェクト開始の失敗には、以下の原因が考えられます。
</p>
<div class="itemizedlist">
<ul type="disc">
<li>キャプチャがエフェクト以外の用途で使用中</li>
<li>チャンネル1またはチャンネル3が、エフェクトやシーケンスによる発音以外の用途で使用中 </li>
</ul>
</div>
<div class="note">
<h3 class="title">注意</h3>
<p>
キャプチャバッファを処理した後は、メインメモリに確実に書き込まれるように、
<tt class="function">DC_FlushRange</tt>関数などを呼びだすようにしてください。</p>
<p>
必ずしも、コールバック関数内で、キャプチャ領域の修正を完了させる必要はありませんが、
次にその領域が再生されるまでに処理を完了しないと、正常な音声が出力されなくなります。
</p>
<p>
音声を再生しながらこの関数を呼びだすと、再生される音が途切れます。
</p>
</div>
</div>
<h2>参照</h2>
<p><a href="NNS_SndCaptureCreateThread.html">NNS_SndCaptureCreateThread</a></p>
<h2>履歴</h2>
<p>2005/06/27 関数失敗の原因を追加<br>2005/01/06 TEGに関する記述削除<br>2004/09/14 音途切れの注意追加<br>2004/09/13 キャプチャースレッド作成時の動作説明追加<br>2004/08/10 コールバック関数が割り込み禁止で呼びだされる注意書き追加<br>2004/07/01 初版<br></p>
</div>
</body>
</html>