1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant/*----------------------------------------------------------------------------
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant * File:
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * eas_otadata.h
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant *
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant * Contents and purpose:
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * OTA File Parser
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * This file contains data declarations for the OTA parser.
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * Copyright Sonic Network Inc. 2005
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * Licensed under the Apache License, Version 2.0 (the "License");
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * you may not use this file except in compliance with the License.
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * You may obtain a copy of the License at
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *      http://www.apache.org/licenses/LICENSE-2.0
18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * Unless required by applicable law or agreed to in writing, software
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * distributed under the License is distributed on an "AS IS" BASIS,
21f836d531b4146465342939fe32ae47d157ee07b2Howard Hinnant * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * See the License for the specific language governing permissions and
23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * limitations under the License.
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *
251b92188a82b01e76ac6e8ad5f997293c2a078adcMarshall Clow *----------------------------------------------------------------------------
26061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow * Revision Control:
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *   $Revision: 82 $
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *   $Date: 2006-07-10 11:45:19 -0700 (Mon, 10 Jul 2006) $
29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *----------------------------------------------------------------------------
30e3e3291f3ab4af96b0403cf6e255c833143ae3f1Howard Hinnant*/
31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef EAS_OTADATA_H
33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#define EAS_OTADATA_H
34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "eas_data.h"
36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant/* definition for state flags */
38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#define OTA_FLAGS_UNICODE           0x01    /* unicode text */
39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant/*----------------------------------------------------------------------------
41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *
42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * S_OTA_DATA
43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *
44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * This structure contains the state data for the OTA parser
45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *----------------------------------------------------------------------------
46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant*/
47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnanttypedef struct
49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_I32         fileOffset;             /* offset to location in file */
51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          patternLen;             /* length of current pattern */
52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          dataByte;               /* previous char from file */
53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          bitCount;               /* bit count in char */
54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} S_OTA_LOC;
55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnanttypedef struct
57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_FILE_HANDLE fileHandle;             /* file handle */
59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    S_SYNTH *pSynth;                /* synth handle */
60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_I32         fileOffset;             /* offset to start of data */
61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_I32         time;                   /* current time in 256ths of a msec */
62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U32         tick;                   /* length of 32nd note in 256th of a msec */
63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U32         restTicks;              /* ticks to rest after current note */
64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    S_OTA_LOC       patterns[4];            /* pattern locations */
65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    S_OTA_LOC       current;                /* current location */
66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    S_OTA_LOC       restore;                /* previous location */
67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    S_METADATA_CB   metadata;               /* metadata callback */
68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          flags;                  /* bit flags */
69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          numPatterns;            /* number of patterns left in song */
70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          currentPattern;         /* current pattern for loop */
71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          note;                   /* MIDI note number */
72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          octave;                 /* octave modifier */
73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          style;                  /* from STYLE */
74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          velocity;               /* current volume */
75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          state;                  /* current state EAS_STATE_XXXX */
76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    EAS_U8          loopCount;              /* loop count for pattern */
77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} S_OTA_DATA;
78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
81f836d531b4146465342939fe32ae47d157ee07b2Howard Hinnant
82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant