Lines Matching refs:pData

110 static void PutBackChar (S_IMELODY_DATA *pData)
112 if (pData->index)
113 pData->index--;
114 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_DETAIL, "PutBackChar '%c'\n", pData->buffer[pData->index]); */ }
117 EAS_INLINE void PutBackChar (S_IMELODY_DATA *pData) { if (pData->index) pData->index--; }
133 static EAS_BOOL IMY_PlayNote (S_EAS_DATA *pEASData, S_IMELODY_DATA *pData, EAS_I8 note, EAS_INT parserMode);
134 static EAS_BOOL IMY_PlayRest (S_EAS_DATA *pEASData, S_IMELODY_DATA *pData);
135 static EAS_BOOL IMY_GetDuration (EAS_HW_DATA_HANDLE hwInstData, S_IMELODY_DATA *pData, EAS_I32 *pDuration);
136 static EAS_BOOL IMY_GetLEDState (S_EAS_DATA *pEASData, S_IMELODY_DATA *pData);
137 static EAS_BOOL IMY_GetVibeState (S_EAS_DATA *pEASData, S_IMELODY_DATA *pData);
138 static EAS_BOOL IMY_GetBackState (S_EAS_DATA *pEASData, S_IMELODY_DATA *pData);
139 static EAS_BOOL IMY_GetVolume (EAS_HW_DATA_HANDLE hwInstData, S_IMELODY_DATA *pData, EAS_BOOL inHeader);
140 static EAS_BOOL IMY_GetNumber (EAS_HW_DATA_HANDLE hwInstData, S_IMELODY_DATA *pData, EAS_INT *temp, EAS_BOOL inHeader);
141 static EAS_RESULT IMY_ParseHeader (S_EAS_DATA *pEASData, S_IMELODY_DATA* pData);
142 static EAS_I8 IMY_GetNextChar (EAS_HW_DATA_HANDLE hwInstData, S_IMELODY_DATA *pData, EAS_BOOL inHeader);
190 S_IMELODY_DATA* pData;
209 pData = EAS_CMEnumData(EAS_CM_IMELODY_DATA);
211 pData = EAS_HWMalloc(pEASData->hwInstData, sizeof(S_IMELODY_DATA));
212 if (!pData)
214 EAS_HWMemSet(pData, 0, sizeof(S_IMELODY_DATA));
217 pData->fileHandle = fileHandle;
218 pData->fileOffset = offset;
219 pData->state = EAS_STATE_ERROR;
220 pData->state = EAS_STATE_OPEN;
223 *ppHandle = pData;
249 S_IMELODY_DATA* pData;
257 pData = (S_IMELODY_DATA*) pInstData;
258 if (pData->state != EAS_STATE_OPEN)
262 if ((result = VMInitMIDI(pEASData, &pData->pSynth)) != EAS_SUCCESS)
269 if ((result = IMY_ParseHeader(pEASData, pData)) != EAS_SUCCESS)
276 pData ->state = EAS_STATE_READY;
301 S_IMELODY_DATA *pData;
303 pData = (S_IMELODY_DATA*) pInstData;
307 *pTime = pData->time >> 8;
330 S_IMELODY_DATA* pData;
336 pData = (S_IMELODY_DATA*) pInstData;
337 if (pData->state >= EAS_STATE_OPEN)
341 if (pData->time == 0)
348 VMProgramChange(pEASData->pVoiceMgr, pData->pSynth, IMELODY_CHANNEL, IMELODY_PROGRAM);
351 VMControlChange(pEASData->pVoiceMgr, pData->pSynth, IMELODY_CHANNEL, 7, 127);
355 if (pData->note)
359 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_DETAIL, "Stopping note %d\n", pData->note); */ }
362 VMStopNote(pEASData->pVoiceMgr, pData->pSynth, IMELODY_CHANNEL, pData->note, 0);
363 pData->note = 0;
366 if (pData->restTicks)
368 pData->time += pData->restTicks;
369 pData->restTicks = 0;
380 c = IMY_GetNextChar(pEASData->hwInstData, pData, EAS_FALSE);
391 if (pData->repeatOffset < 0)
393 pData->repeatOffset = pData->startLine + (EAS_I32) pData->index;
396 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_DETAIL, "Repeat offset = %d\n", pData->repeatOffset); */ }
407 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_DETAIL, "End repeat section, repeat offset = %d\n", pData->repeatOffset); */ }
410 if (pData->repeatCount >= 0)
414 if (pData->repeatCount > 0)
416 if (--pData->repeatCount == 0)
418 pData->repeatCount = -1;
427 if ((parserMode == eParserModePlay) || (pData->repeatCount != 0))
434 if ((result = EAS_HWFileSeek(pEASData->hwInstData, pData->fileHandle, pData->repeatOffset)) != EAS_SUCCESS)
436 IMY_ReadLine(pEASData->hwInstData, pData->fileHandle, pData->buffer, &pData->startLine);
437 pData->index = 0;
440 if (pData->repeatCount == -1)
441 pData->repeatOffset = -1;
448 if (!IMY_GetNumber(pEASData->hwInstData, pData, &temp, EAS_FALSE))
450 else if (pData->repeatOffset > 0)
454 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_DETAIL, "Repeat count = %dt", pData->repeatCount); */ }
456 if (pData->repeatCount < 0)
457 pData->repeatCount = (EAS_I16) temp;
463 if (!IMY_GetVolume(pEASData->hwInstData, pData, EAS_FALSE))
469 pData->noteModifier = -1;
474 pData->noteModifier = +1;
479 c = IMY_GetNextChar(pEASData->hwInstData, pData, EAS_FALSE);
481 pData->octave = (EAS_U8) ((c - '0' + 1) * 12);
488 if (!IMY_GetLEDState(pEASData, pData))
494 if (!IMY_GetVibeState(pEASData, pData))
500 if (IMY_GetNextChar(pEASData->hwInstData, pData, EAS_FALSE) == 'a')
502 if (!IMY_GetBackState(pEASData, pData))
507 PutBackChar(pData);
508 if (IMY_PlayNote(pEASData, pData, c, parserMode))
517 if (IMY_PlayRest(pEASData, pData))
535 if (IMY_PlayNote(pEASData, pData, c, parserMode))
549 pData->state = EAS_STATE_STOPPING;
550 VMReleaseAllVoices(pEASData->pVoiceMgr, pData->pSynth);
575 S_IMELODY_DATA* pData;
578 pData = (S_IMELODY_DATA*) pInstData;
581 if (pData->state == EAS_STATE_STOPPING)
583 if (VMActiveVoices(pData->pSynth) == 0)
585 pData->state = EAS_STATE_STOPPED;
592 if (pData->state == EAS_STATE_PAUSING)
594 if (VMActiveVoices(pData->pSynth) == 0)
599 pData->state = EAS_STATE_PAUSED;
604 *pState = pData->state;
627 S_IMELODY_DATA* pData;
634 pData = (S_IMELODY_DATA*) pInstData;
637 if ((result = EAS_HWCloseFile(pEASData->hwInstData, pData->fileHandle)) != EAS_SUCCESS)
641 if (pData->pSynth != NULL)
642 VMMIDIShutdown(pEASData, pData->pSynth);
646 EAS_HWFree(pEASData->hwInstData, pData);
670 S_IMELODY_DATA* pData;
676 pData = (S_IMELODY_DATA*) pInstData;
679 VMReset(pEASData->pVoiceMgr, pData->pSynth, EAS_TRUE);
682 pData->time = 0;
683 pData->note = 0;
686 pData->state = EAS_STATE_ERROR;
687 if ((result = EAS_HWFileSeek(pEASData->hwInstData, pData->fileHandle, pData->fileOffset)) != EAS_SUCCESS)
689 if ((result = IMY_ParseHeader (pEASData, pData)) != EAS_SUCCESS)
696 pData->state = EAS_STATE_READY;
719 S_IMELODY_DATA *pData;
726 pData = (S_IMELODY_DATA*) pInstData;
727 if (pData->state == EAS_STATE_STOPPED)
731 VMMuteAllVoices(pEASData->pVoiceMgr, pData->pSynth);
732 pData->state = EAS_STATE_PAUSING;
756 S_IMELODY_DATA *pData;
763 pData = (S_IMELODY_DATA*) pInstData;
764 if (pData->state == EAS_STATE_STOPPED)
768 pData->state = EAS_STATE_PLAY;
793 S_IMELODY_DATA *pData;
795 pData = (S_IMELODY_DATA*) pInstData;
801 EAS_HWMemCpy(&pData->metadata, (void*) value, sizeof(S_METADATA_CB));
831 S_IMELODY_DATA *pData;
833 pData = (S_IMELODY_DATA*) pInstData;
843 *pValue = (EAS_I32) pData->pSynth;
873 static EAS_BOOL IMY_PlayNote (S_EAS_DATA *pEASData, S_IMELODY_DATA *pData, EAS_I8 note, EAS_INT parserMode)
884 if (!IMY_GetDuration(pEASData->hwInstData, pData, &duration))
888 pData->note = (EAS_U8) (pData->octave + noteTable[note - 'a'] + pData->noteModifier);
889 velocity = (EAS_U8) (pData->volume ? pData->volume * IMELODY_VEL_MUL + IMELODY_VEL_OFS : 0);
893 VMStartNote(pEASData->pVoiceMgr, pData->pSynth, IMELODY_CHANNEL, pData->note, velocity);
896 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_DETAIL, "IMY_PlayNote: Start note %d, duration %d\n", pData->note, duration); */ }
900 switch (pData->style)
904 pData->restTicks = duration >> 4;
907 pData->restTicks = 0;
911 pData->restTicks = duration >> 1;
914 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_WARNING, "IMY_PlayNote: Note style out of range: %d\n", pData->style); */ }
916 pData->restTicks = duration >> 4;
921 pData->time += duration - pData->restTicks;
924 pData->noteModifier = 0;
945 static EAS_BOOL IMY_PlayRest (S_EAS_DATA *pEASData, S_IMELODY_DATA *pData)
954 if (!IMY_GetDuration(pEASData->hwInstData, pData, &duration))
962 pData->time += duration;
983 static EAS_BOOL IMY_GetDuration (EAS_HW_DATA_HANDLE hwInstData, S_IMELODY_DATA *pData, EAS_I32 *pDuration)
990 c = IMY_GetNextChar(hwInstData, pData, EAS_FALSE);
1002 duration = pData->tick * (1 << ('5' - c));
1005 c = IMY_GetNextChar(hwInstData, pData, EAS_FALSE);
1018 PutBackChar(pData);
1041 static EAS_BOOL IMY_GetLEDState (S_EAS_DATA *pEASData, S_IMELODY_DATA *pData)
1052 c = IMY_GetNextChar(pEASData->hwInstData, pData, EAS_FALSE);
1106 static EAS_BOOL IMY_GetVibeState (S_EAS_DATA *pEASData, S_IMELODY_DATA *pData)
1117 c = IMY_GetNextChar(pEASData->hwInstData, pData, EAS_FALSE);
1171 static EAS_BOOL IMY_GetBackState (S_EAS_DATA *pEASData, S_IMELODY_DATA *pData)
1182 c = IMY_GetNextChar(pEASData->hwInstData, pData, EAS_FALSE);
1236 static EAS_BOOL IMY_GetVolume (EAS_HW_DATA_HANDLE hwInstData, S_IMELODY_DATA *pData, EAS_BOOL inHeader)
1245 c = IMY_GetNextChar(hwInstData, pData, inHeader);
1248 if (pData->volume < 15)
1249 pData->volume++;
1254 if (pData->volume > 0)
1255 pData->volume--;
1263 c = IMY_GetNextChar(hwInstData, pData, inHeader);
1267 PutBackChar(pData);
1273 pData->volume = (EAS_U8) temp;
1294 static EAS_BOOL IMY_GetNumber (EAS_HW_DATA_HANDLE hwInstData, S_IMELODY_DATA *pData, EAS_INT *temp, EAS_BOOL inHeader)
1307 c = IMY_GetNextChar(hwInstData, pData, inHeader);
1316 PutBackChar(pData);
1343 static EAS_BOOL IMY_GetVersion (S_IMELODY_DATA *pData, EAS_INT *pVersion)
1352 c = pData->buffer[pData->index++];
1392 static void IMY_MetaData (S_IMELODY_DATA *pData, E_EAS_METADATA_TYPE metaType, EAS_I8 *buffer)
1397 if (!pData->metadata.callback)
1402 if (len >pData->metadata.bufferSize)
1403 len = pData->metadata.bufferSize;
1404 strncpy((char*) pData->metadata.buffer, (char*) buffer, (size_t) len);
1405 pData->metadata.buffer[len] = 0;
1408 pData->metadata.callback(metaType, pData->metadata.buffer, pData->metadata.pUserData);
1429 static EAS_RESULT IMY_ParseHeader (S_EAS_DATA *pEASData, S_IMELODY_DATA* pData)
1441 pData->time = 0;
1442 pData->tick = DEFAULT_TICK_CONV;
1443 pData->note = 0;
1444 pData->noteModifier = 0;
1445 pData ->restTicks = 0;
1446 pData->volume = 7;
1447 pData->octave = 60;
1448 pData->repeatOffset = -1;
1449 pData->repeatCount = -1;
1450 pData->style = 0;
1453 pData->index = 1;
1459 if (pData->index != 0)
1461 if ((result = IMY_ReadLine(pEASData->hwInstData, pData->fileHandle, pData->buffer, &pData->startLine)) != EAS_SUCCESS)
1469 token = IMY_ParseLine(pData->buffer, &pData->index);
1478 if (!IMY_GetVersion(pData, &temp))
1480 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_WARNING, "Invalid FORMAT field '%s'\n", pData->buffer); */ }
1491 if (!IMY_GetVersion(pData, &temp))
1493 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_WARNING, "Invalid VERSION field '%s'\n", pData->buffer); */ }
1504 IMY_MetaData(pData, EAS_METADATA_TITLE, pData->buffer + pData->index);
1508 IMY_MetaData(pData, EAS_METADATA_AUTHOR, pData->buffer + pData->index);
1513 IMY_GetNumber(pEASData->hwInstData, pData, &temp, EAS_TRUE);
1515 pData->tick = TICK_CONVERT / temp;
1520 c = IMY_GetNextChar(pEASData->hwInstData, pData, EAS_TRUE);
1522 c = IMY_GetNextChar(pEASData->hwInstData, pData, EAS_TRUE);
1524 pData->style = (EAS_U8) (c - '0');
1527 PutBackChar(pData);
1528 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_WARNING, "Error in style command: %s\n", pData->buffer); */ }
1534 c = IMY_GetNextChar(pEASData->hwInstData, pData, EAS_TRUE);
1537 PutBackChar(pData);
1540 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_WARNING, "Error in volume command: %s\n", pData->buffer); */ }
1544 IMY_GetVolume(pEASData->hwInstData, pData, EAS_TRUE);
1559 pData->index = 1;
1560 { /* dpp: EAS_ReportEx(_EAS_SEVERITY_WARNING, "Ignoring unrecognized token in iMelody file: %s\n", pData->buffer); */ }
1582 static EAS_I8 IMY_GetNextChar (EAS_HW_DATA_HANDLE hwInstData, S_IMELODY_DATA *pData, EAS_BOOL inHeader)
1590 c = pData->buffer[pData->index++];
1599 pData->index = 0;
1600 pData->buffer[0] = 0;
1601 if (IMY_ReadLine(hwInstData, pData->fileHandle, pData->buffer, &pData->startLine) != EAS_SUCCESS)
1610 if (IMY_ParseLine(pData->buffer, &index) == TOKEN_END)
1615 pData->buffer[0] = 0;