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)