mirror of
https://github.com/rvtr/TwlIPL_commit-99.git
synced 2025-10-31 06:21:11 -04:00
179 lines
6.8 KiB
HTML
Executable File
179 lines
6.8 KiB
HTML
Executable File
<!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 <nnsys/snd.h></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ビットの時に比べて2倍の頻度で
|
||
コールバック関数が呼びだされるようになります。
|
||
</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>
|