// Called when the game starts void UMMLComponent::LoadString(const FString &data) { isLoaded = false; TArray<TCHAR> CharData = data.GetCharArray(); delete[] MMLDataChar; MMLDataChar = new char[CharData.Num()]; for (int i = 0; i < CharData.Num(); i++) MMLDataChar[i] = CharData[i]; mml_setup(&mml, &mml_opt, (char*)MMLDataChar); isLoaded = true; }
Pattern *MMLReader::read(const char *text) { pattern = new Pattern(); currentPosition = Position(1, 0, 1); TimeSignature &time = AudioEngine::instance().getTimeSignature(); if(time.isValid()) { ticksPerBar = mmlopt.bticks * time.getNumerator() * 4 / time.getDenominator(); } else { ticksPerBar = mmlopt.bticks * 4; } mml_setup(&mml, &mmlopt, (char *)text); while (mml_fetch(&mml) == MML_RESULT_OK) {} return pattern; }