1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html>
3
4<head>
5<LINK rel="stylesheet" type="text/css" href="../../CSS/revolution.css">
6<title>axvpb.pb.update</title>
7<META http-equiv="Content-Type" content="text/html; charset=windows-1252">
8<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 6.5.0.0 for Windows">
9<META http-equiv="Content-Style-Type" content="text/css">
10</head>
11
12<body>
13
14<h1 align="left">axvpb.pb.update</h1>
15
16
17<h2>C Specification</h2>
18<BLOCKQUOTE>
19<pre><CODE>typedef struct _AXPBUPDATE
20{
21
22u16 updNum[3];  // number of updates per 1ms step
23u16 dataHi;     // location of update data in main memory
24u16 dataLo;
25
26} AXPBUPDATE;</CODE></pre>
27</BLOCKQUOTE>
28<h2>Description</h2>
29
30<p>The <CODE>UPDATE</CODE> member describes a list of parameter changes that the DSP must execute while processing the current voice.</p>
31
32<p>The <code>updNum[]</code> array contains the number of parameter changes that the DSP must execute <i>before</i> processing each millisecond of audio for the current voice. Thus if <code>updNum[2]</code> is equal to 3, then the DSP must change three parameters before processing the last millisecond of audio for this voice. <BR><B>Note:</B> Updates for the first millisecond (<code>updNum[0]</code>) are ignored.</p>
33
34<p>The <code>dataHi</code> and <code>dataLo</code> values specify the main memory address of the buffer containing the actual parameter update directives specific to the current voice. The DSP will use DMA on this buffer from main memory before voice processing starts.</p>
35
36<p>The directives must be formatted as follows:</p>
37<pre>    // example of update buffer
38<CODE>#define MAX_NUM_UPDATES_PER_FRAME 32
39
40typedef struct
41    {
42
43u16 offset;
44u16 value;
45
46} sUPDATE_FORMAT;
47
48sUPDATE_FORMAT update_block[MAX_NUM_UPDATES_PER_FRAME];</CODE></pre>
49
50<p>The <code>offset</code> variable specifies the parameter that the DSP must change. It also addresses the PB in 16-bit words. The <code>value</code> variable specifies the new value that the DSP must write into the parameter addressed by <code>offset</code>.</p>
51
52<p>Currently, the DSP supports up to 32 parameter updates per voice, per frame. If no updates are required for a given millisecond <i>n</i>, then set <code>updNum[n]</code> to zero. <BR><B>Note:</B> This feature allows one-millisecond precision for MIDI sequencer events.</p>
53
54<p>AX provides convenient functions for generating an update block. See <code>AXSetVoiceUpdateIncrement()</code> and <code>AXSetVoiceUpdateWrite()</code>.</p>
55
56<p><strong>Note: </strong> Because the current version of the AX library is not fully updated, update blocks created using the above function will not be reflected in DSP operation.</p>
57
58<p>Your application must assert the <code>AX_SYNC_USER_UPDATE</code> bit to the <code>axvpb.sync</code> word when the update block is changed.</p>
59
60<h2>See Also</h2>
61
62<p>
63<code><a href="../Voice_Parameter_Blocks/sync.html">axvpb.sync</a><br> <a href="../Voice_Parameters/AXSetVoiceUpdateIncrement.html">AXSetVoiceUpdateIncrement</a><br> <a href="../Voice_Parameters/AXSetVoiceUpdateWrite.html">AXSetVoiceUpdateWrite</a></code>
64</p>
65
66<h2>Revision History</h2>
67
68<P>03/01/2006 Initial version.</P></body>
69</html>
70