答えられる中級者が居ない様なのでヒントを
MMLを解析すれば再生時間を求めることはできる。
MMLはSmileBASICからすれば単なる文字列なので、1文字ずつ切り出して判別できる。
それにはSmileBASICの基礎知識と文字列の扱い方を知らなくてはならない。
http://petitcom.net/3gou/category/intstrary/string次にMMLがどの様な文字で構成されているのか理解する必要がある。
https://smileboom.com/special/ptcm2/co_manual/p10.php#3MMLって音楽の譜面を文字だけで表したものなので、音楽の知識も必要となる。
と言っても、知る必要があるのは時間的なものだけだ。
譜面には音符があり、音符は音の高さだけでなく、音の長さの情報でもある。
音が鳴らない所は休符だ、これにも長さがある。
MMLでは音符はドレミファソラシをCDEFGABで表現する、休符はR
では音符や休符って、どうやって長さを表現しているのか、
それは、全音符(MMLではC1)を基準として
全音符の1/2の長さが2分音符(MMLではC2)
全音符の1/4の長さが4分音符(MMLではC4)
全音符の1/8の長さが8分音符♪(MMLではC8)
全音符の1/16の長さが16分音符(MMLではC16)
全音符の1/32の長さが32分音符(MMLではC32)
といった具合だ。
連続する音符と休符の長さを全て合算すれば、曲の長さが求まる。