/*----------------------------------------------------------------------------
 *
 * File: 
 * eas_rtttldata.h
 *
 * Contents and purpose:
 * SMF File Parser
 *
 * This file contains data declarations for the RTTTL parser.  
 *			
 * Copyright Sonic Network Inc. 2005

 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 *----------------------------------------------------------------------------
 * Revision Control:
 *   $Revision: 82 $
 *   $Date: 2006-07-10 11:45:19 -0700 (Mon, 10 Jul 2006) $
 *----------------------------------------------------------------------------
*/

#ifndef EAS_RTTTLDATA_H
#define EAS_RTTTLDATA_H

#include "eas_data.h"


/* maximum line size as specified in iMelody V1.2 spec */
#define MAX_LINE_SIZE			75

/*----------------------------------------------------------------------------
 *
 * S_RTTTL_DATA
 *
 * This structure contains the state data for the iMelody parser
 *----------------------------------------------------------------------------
*/

typedef struct
{
	EAS_FILE_HANDLE	fileHandle;				/* file handle */
	S_SYNTH *pSynth;					/* synthesizer handle */
	S_METADATA_CB	metadata;				/* metadata callback */
	EAS_I32		fileOffset;					/* offset to start of data */
	EAS_I32		time;						/* current time in 256ths of a msec */
	EAS_I32		tick;						/* length of 32nd note in 256th of a msec */
	EAS_I32		restTicks;					/* ticks to rest after current note */
	EAS_I32		repeatOffset;				/* file offset to start of repeat section */
	EAS_U8		repeatCount;				/* repeat counter */
	EAS_I8		dataByte;					/* storage for characters that are "put back" */
	EAS_U8		state;						/* current state EAS_STATE_XXXX */
	EAS_I8		style;						/* from STYLE */
	EAS_U8		note;						/* MIDI note number */
	EAS_U8		octave;						/* decault octave prefix */
	EAS_I8		duration;					/* default note duration */
} S_RTTTL_DATA;

#endif


