eas_imelodydata.h revision 7df30109963092559d3760c0661a020f9daf1030
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/*----------------------------------------------------------------------------
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * File:
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * eas_imelodydata.h
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Contents and purpose:
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * SMF File Parser
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
9d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) * This file contains data declarations for the iMelody parser.
10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) *
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Copyright Sonic Network Inc. 2005
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License");
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * you may not use this file except in compliance with the License.
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * You may obtain a copy of the License at
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *      http://www.apache.org/licenses/LICENSE-2.0
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Unless required by applicable law or agreed to in writing, software
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS,
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * See the License for the specific language governing permissions and
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * limitations under the License.
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *----------------------------------------------------------------------------
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Revision Control:
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *   $Revision: 778 $
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *   $Date: 2007-07-23 16:45:17 -0700 (Mon, 23 Jul 2007) $
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *----------------------------------------------------------------------------
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)*/
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef EAS_IMELODYDATA_H
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define EAS_IMELODYDATA_H
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "eas_data.h"
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* maximum line size as specified in iMelody V1.2 spec */
3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MAX_LINE_SIZE			75
3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)/*----------------------------------------------------------------------------
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * S_IMELODY_DATA
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * This structure contains the state data for the iMelody parser
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *----------------------------------------------------------------------------
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)*/
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)typedef struct
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	EAS_FILE_HANDLE	fileHandle;					/* file handle */
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	S_SYNTH 		*pSynth;					/* pointer to synth */
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	EAS_I32			fileOffset;					/* offset to start of data */
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	EAS_I32			time;						/* current time in 256ths of a msec */
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	EAS_I32			tickBase;					/* basline length of 32nd note in 256th of a msec */
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	EAS_I32			tick;						/* actual length of 32nd note in 256th of a msec */
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)	EAS_I32			restTicks;					/* ticks to rest after current note */
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)	EAS_I32			startLine;					/* file offset at start of line (for repeats) */
58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)	EAS_I32			repeatOffset;				/* file offset to start of repeat section */
59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)	S_METADATA_CB	metadata;					/* metadata callback */
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)	EAS_I16			repeatCount;				/* repeat counter */
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	EAS_U8			state;						/* current state EAS_STATE_XXXX */
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	EAS_U8			style;						/* from STYLE */
63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)	EAS_U8			index;						/* index into buffer */
64d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)	EAS_U8			octave;						/* octave prefix */
65d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)	EAS_U8			volume;						/* current volume */
66d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)	EAS_U8			note;						/* MIDI note number */
67d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)	EAS_I8			noteModifier;				/* sharp or flat */
68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)	EAS_I8			buffer[MAX_LINE_SIZE+1];	/* buffer for ASCII data */
69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} S_IMELODY_DATA;
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
7290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)