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