0
0

Hi. I use fmod to open a midi file with lyrics

[code:ahlaqy01]
FMOD_TAG tag;

int i,n;
sound->getNumTags(&n, 0);
for(i=0; i<n; i++)
{
sound->getTag(NULL, i, &tag);
qDebug() << QString("Name: %1").arg(tag.name);
}
[/code:ahlaqy01]

This code output:
[code:ahlaqy01]
"Name: Track 0 Name"
"Name: Instrument"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Text"
"Name: Text (Time Ms)"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Lyric"
"Name: Number of channels"
[/code:ahlaqy01]

So there is only one tag with name "Text (Time Ms)". what’s wrong?

  • You must to post comments
0
0

You code or your midi. Post the midi. I can check it.

the tags (make sure they are string tags) should look like this:
Text:/We

Text (Time Ms):90793

Text: will,

Text (Time Ms):91464

Text: we

Text (Time Ms):92196

Text: will

Text (Time Ms):92928

Text: rock

Text (Time Ms):93659

Text: you.

Text (Time Ms):94025

Text:%+

Text (Time Ms):94208

Text:/Al

Text (Time Ms):96037

Text:right

Text (Time Ms):96220

Text: now!

Text (Time Ms):96403

Text:%+

Text (Time Ms):98111

Text:%+

Text (Time Ms):121830

  • You must to post comments
0
0

Here is my implementation.

tagname and tag data are global pre-alocated buffers.
instance is a FMOD channel, nevermind the double

I get next tag untile I get 0 returned.
I place everything is a tagname string and tag data string
[code:2ppub427]
export double FMODInstanceGetNextTag(double instance)
{
tagname[0] = 0;
tagdata[0] = 0;
if(!inited) {{FMODASSERT(FMOD_ERR_INITIALIZATION);}}
if(!(instance>0)){{FMODASSERT(FMOD_ERR_INVALID_HANDLE);}}

FMOD_SOUND * sound = NULL;

FMODASSERT(FMOD_Channel_GetCurrentSound((FMOD_CHANNEL *) (DWORD) instance, &amp;sound));
if(sound==NULL) {{FMODASSERT(FMOD_ERR_INVALID_HANDLE);}}
FMOD_TAG tag;
if (FMOD_Sound_GetTag(sound, 0, -1, &amp;tag) != FMOD_OK)
{
    return (double)0;
}
if(tag.name == NULL) return (double) 2;
int l; l = min(2047, strlen(tag.name)+1);
lstrcpynA(tagname,
        tag.name,
        l);
tagname[l+1] = 0;
if(tag.data == NULL) return (double) 2;
if (tag.datatype == FMOD_TAGDATATYPE_STRING)
{
    l = min(2047, strlen((char*) tag.data)+1);
    lstrcpynA(tagdata,
        (char*)tag.data,
        l);
    tagdata[l+1] = 0;
    return (double)1;
}
else if (tag.datatype == FMOD_TAGDATATYPE_FLOAT)
{
    float *f = (float*)tag.data;
    wsprintfA(tagdata,&quot;%f&quot;,*f);
    return (double)1;
}
else
{
    int *v = (int*)tag.data;
    wsprintfA(tagdata,&quot;%d&quot;,*v);
    return (double)1;
}
return (double)2;

}

export double FMODGetTagName(LPSTR buffer)
{
if(!inited) {{FMODASSERT(FMOD_ERR_INITIALIZATION);}}
lstrcpyA(buffer,tagname);
//MessageBoxA(GetActiveWindow(),buffer,(LPCSTR)"DebugGetName",MB_ICONINFORMATION);
return (double)lstrlenA(tagname);
}
export double FMODGetTagData(LPSTR buffer)
{
if(!inited) {{FMODASSERT(FMOD_ERR_INITIALIZATION);}}
lstrcpyA(buffer,tagdata);
return (double)lstrlenA(tagdata);
}
[/code:2ppub427]

char tname[2048];
char tdata[2048];
while(FMODInstanceGetNextTag(playingchannel))
{
FMODGetTagName(tname);
FMODGetTagData(tdata);
}

  • You must to post comments
0
0

my midi file is this http://www.sarasini.it/1.kar

thanks
😮

  • You must to post comments
0
0

[code:30urypmq]
while(sound->getTag(NULL, -1, &tag) == FMOD_OK)
{
if(tag.name == NULL)
continue;

    qDebug() &lt;&lt; QString(&quot;Name: %1&quot;).arg(tag.name);

    if (tag.datatype == FMOD_TAGDATATYPE_STRING)
    {
        qDebug() &lt;&lt; &quot;STR: &quot; &lt;&lt; (char *)tag.data;
    }
    else if (tag.datatype == FMOD_TAGDATATYPE_FLOAT)
    {
        qDebug() &lt;&lt; &quot;FLO: &quot; &lt;&lt; QString(&quot;%1&quot;).arg(*(float*)tag.data);
    }
    else
    {
        qDebug() &lt;&lt; &quot;INT: &quot; &lt;&lt; QString(&quot;%1&quot;).arg(*(int*)tag.data);
    }

    qDebug() &lt;&lt; &quot;-------------&quot;;
}

[/code:30urypmq]

result:

[code:30urypmq]
"Name: Track 0 Name"

STR: Salvami

"Name: Instrument"

STR: Dispositivo GM

"Name: Lyric"

STR: All

"Name: Lyric"

STR: rights

"Name: Lyric"

STR: re

"Name: Lyric"

STR: served

"Name: Lyric"
STR:


"Name: Text"

STR: QUANTUM JUMP

"Name: Text (Time Ms)"

INT: "957"

"Name: Lyric"

STR: SAL

"Name: Lyric"

STR: VA

"Name: Lyric"

STR: MI

"Name: Lyric"
STR:


"Name: Lyric"

STR: MI

"Name: Lyric"

STR: FA

"Name: Lyric"

STR: MA

"Name: Lyric"

STR: LE

"Name: Lyric"

STR: QUAN

"Name: Lyric"

STR: DO

"Name: Lyric"

STR: E’

"Name: Lyric"

STR: SIN

"Name: Lyric"

STR: CE

"Name: Lyric"

STR: RO

"Name: Lyric"
STR:


"Name: Lyric"

STR: SAL

"Name: Lyric"

STR: VA

"Name: Lyric"

STR: MI

"Name: Lyric"
STR:


"Name: Lyric"

STR: DIM

"Name: Lyric"

STR: MI AL

"Name: Lyric"

STR: ME

"Name: Lyric"

STR: NO

"Name: Lyric"

STR: CHE

"Name: Lyric"

STR: NON

"Name: Lyric"

STR: E’

"Name: Lyric"

STR: VE

"Name: Lyric"

STR: RO

"Name: Lyric"

STR: ...

"Name: Lyric"
STR:


"Name: Lyric"

STR: GUAR

"Name: Lyric"

STR: DA

"Name: Lyric"

STR: MI

"Name: Lyric"
STR:


"Name: Lyric"

STR: PAS

"Name: Lyric"

STR: SI

"Name: Lyric"

STR: SBA

"Name: Lyric"

STR: GLIA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: AN

"Name: Lyric"

STR: GE

"Name: Lyric"

STR: LI

"Name: Lyric"
STR:


"Name: Lyric"

STR: SO

"Name: Lyric"

STR: LI E

"Name: Lyric"

STR: AC

"Name: Lyric"

STR: CER

"Name: Lyric"

STR: CHIA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: PAR

"Name: Lyric"

STR: LA

"Name: Lyric"

STR: MI

"Name: Lyric"
STR:


"Name: Lyric"

STR: TU

"Name: Lyric"

STR: SA

"Name: Lyric"

STR: I

"Name: Lyric"

STR: LA

"Name: Lyric"

STR: VE

"Name: Lyric"

STR: RI

"Name: Lyric"

STR: TA’

"Name: Lyric"
STR:


"Name: Lyric"

STR: AL

"Name: Lyric"

STR: ZA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: A

"Name: Lyric"

STR: MA

"Name: Lyric"

STR: PER

"Name: Lyric"

STR: SEM

"Name: Lyric"

STR: PRE

"Name: Lyric"
STR:


"Name: Lyric"

STR: SBA

"Name: Lyric"

STR: GLIA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: NON

"Name: Lyric"

STR: SER

"Name: Lyric"

STR: VE A

"Name: Lyric"

STR: NIEN

"Name: Lyric"

STR: TE

"Name: Lyric"
STR:


"Name: Lyric"

STR: VI

"Name: Lyric"

STR: VE

"Name: Lyric"

STR: RE

"Name: Lyric"
STR:


"Name: Lyric"

STR: SE

"Name: Lyric"

STR: NON

"Name: Lyric"

STR: SI

"Name: Lyric"

STR: DA’

"Name: Lyric"
STR:


"Name: Lyric"

STR: AL

"Name: Lyric"

STR: ZA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: NA

"Name: Lyric"

STR: SCI O

"Name: Lyric"

STR: GNI

"Name: Lyric"

STR: VOL

"Name: Lyric"

STR: TA

"Name: Lyric"
STR:


"Name: Lyric"

STR: PER

"Name: Lyric"

STR: DI

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: SOT

"Name: Lyric"

STR: TO IL

"Name: Lyric"

STR: DI

"Name: Lyric"

STR: LU

"Name: Lyric"

STR: VIO

"Name: Lyric"
STR:


"Name: Lyric"

STR: SPO

"Name: Lyric"

STR: GLIA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: BEL

"Name: Lyric"

STR: LA

"Name: Lyric"

STR: CO

"Name: Lyric"

STR: SI’

"Name: Lyric"

STR: SA

"Name: Lyric"

STR: RA

"Name: Lyric"

STR: I

"Name: Lyric"
STR:


"Name: Lyric"

STR: GUAR

"Name: Lyric"

STR: DA

"Name: Lyric"

STR: LO

"Name: Lyric"
STR:


"Name: Lyric"

STR: HA

"Name: Lyric"

STR: MA

"Name: Lyric"

STR: NI

"Name: Lyric"

STR: BEL

"Name: Lyric"

STR: LIS

"Name: Lyric"

STR: SI

"Name: Lyric"

STR: ME

"Name: Lyric"
STR:


"Name: Lyric"

STR: GUAR

"Name: Lyric"

STR: DA

"Name: Lyric"

STR: LO

"Name: Lyric"
STR:


"Name: Lyric"

STR: E’

"Name: Lyric"

STR: PU

"Name: Lyric"

STR: RO

"Name: Lyric"

STR: NEL

"Name: Lyric"

STR: L’A

"Name: Lyric"

STR: NI

"Name: Lyric"

STR: MA

"Name: Lyric"
STR:


"Name: Lyric"

STR: SMET

"Name: Lyric"

STR: TI

"Name: Lyric"

STR: LA

"Name: Lyric"
STR:


"Name: Lyric"

STR: SE

"Name: Lyric"

STR: SA

"Name: Lyric"

STR: I

"Name: Lyric"

STR: CO

"Name: Lyric"

STR: ME

"Name: Lyric"

STR: SI

"Name: Lyric"

STR: FA

"Name: Lyric"
STR:


"Name: Lyric"

STR: AL

"Name: Lyric"

STR: ZA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: A

"Name: Lyric"

STR: MA

"Name: Lyric"

STR: PER

"Name: Lyric"

STR: SEM

"Name: Lyric"

STR: PRE

"Name: Lyric"
STR:


"Name: Lyric"

STR: SPO

"Name: Lyric"

STR: GLIA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: RI

"Name: Lyric"

STR: DI

"Name: Lyric"

STR: DI

"Name: Lyric"

STR: NIEN

"Name: Lyric"

STR: TE

"Name: Lyric"
STR:


"Name: Lyric"

STR: VI

"Name: Lyric"

STR: VE

"Name: Lyric"

STR: RE

"Name: Lyric"
STR:


"Name: Lyric"

STR: CI

"Name: Lyric"

STR: BA

"Name: Lyric"

STR: STE

"Name: Lyric"

STR: RA’

"Name: Lyric"
STR:


"Name: Lyric"

STR: AL

"Name: Lyric"

STR: ZA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: E UN

"Name: Lyric"

STR: SEN

"Name: Lyric"

STR: TI

"Name: Lyric"

STR: MEN

"Name: Lyric"

STR: TO

"Name: Lyric"
STR:


"Name: Lyric"

STR: LI

"Name: Lyric"

STR: BE

"Name: Lyric"

STR: RO

"Name: Lyric"
STR:


"Name: Lyric"

STR: VE

"Name: Lyric"

STR: RO

"Name: Lyric"

STR: TOR

"Name: Lyric"

STR: MEN

"Name: Lyric"

STR: TO

"Name: Lyric"
STR:


"Name: Lyric"

STR: VI

"Name: Lyric"

STR: VI

"Name: Lyric"

STR: LO

"Name: Lyric"
STR:


"Name: Lyric"

STR: GUAR

"Name: Lyric"

STR: DA

"Name: Lyric"

STR: IL

"Name: Lyric"

STR: SO

"Name: Lyric"

STR: LE

"Name: Lyric"

STR: BRU

"Name: Lyric"

STR: CIA

"Name: Lyric"

STR: PER

"Name: Lyric"

STR: TE

"Name: Lyric"
STR:


"Name: Lyric"

STR: PER

"Name: Lyric"

STR: TE

"Name: Lyric"

STR: ...

"Name: Lyric"
STR:


"Name: Lyric"

STR: PER

"Name: Lyric"

STR: LU

"Name: Lyric"

STR: I

"Name: Lyric"
STR:


"Name: Lyric"

STR: LA

"Name: Lyric"

STR: BOC

"Name: Lyric"

STR: CA

"Name: Lyric"

STR: TRE

"Name: Lyric"

STR: MA

"Name: Lyric"

STR: DI

"Name: Lyric"

STR: PAS

"Name: Lyric"

STR: SIO

"Name: Lyric"

STR: NE

"Name: Lyric"
STR:


"Name: Lyric"

STR: PER

"Name: Lyric"

STR: ME

"Name: Lyric"
STR:


"Name: Lyric"

STR: PER

"Name: Lyric"

STR: ME

"Name: Lyric"
STR:


"Name: Lyric"

STR: RI

"Name: Lyric"

STR: VO

"Name: Lyric"

STR: GLIO

"Name: Lyric"

STR: QUEL

"Name: Lyric"

STR: SUO

"Name: Lyric"

STR: BA

"Name: Lyric"

STR: CIO

"Name: Lyric"
STR:


"Name: Lyric"

STR: SEN

"Name: Lyric"

STR: ZA

"Name: Lyric"

STR: MAI

"Name: Lyric"

STR: FI

"Name: Lyric"

STR: NE

"Name: Lyric"
STR:


"Name: Lyric"

STR: AL

"Name: Lyric"

STR: ZA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: A

"Name: Lyric"

STR: MA

"Name: Lyric"

STR: PER

"Name: Lyric"

STR: SEM

"Name: Lyric"

STR: PRE

"Name: Lyric"
STR:


"Name: Lyric"

STR: SBA

"Name: Lyric"

STR: GLIA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: NON

"Name: Lyric"

STR: SER

"Name: Lyric"

STR: VE A

"Name: Lyric"

STR: NIEN

"Name: Lyric"

STR: TE

"Name: Lyric"
STR:


"Name: Lyric"

STR: VI

"Name: Lyric"

STR: VE

"Name: Lyric"

STR: RE

"Name: Lyric"
STR:


"Name: Lyric"

STR: SE

"Name: Lyric"

STR: NON

"Name: Lyric"

STR: CI

"Name: Lyric"

STR: SI

"Name: Lyric"

STR: DA’

"Name: Lyric"
STR:


"Name: Lyric"

STR: AL

"Name: Lyric"

STR: ZA

"Name: Lyric"

STR: TI

"Name: Lyric"
STR:


"Name: Lyric"

STR: DEN

"Name: Lyric"

STR: TRO

"Name: Lyric"

STR: AL

"Name: Lyric"

STR: CIE

"Name: Lyric"

STR: LO

"Name: Lyric"
STR:


"Name: Lyric"

STR: E LUC

"Name: Lyric"

STR: CI

"Name: Lyric"

STR: CA

"Name: Lyric"
STR:


"Name: Lyric"

STR: SPA

"Name: Lyric"

STR: ZIO IN

"Name: Lyric"

STR: FI

"Name: Lyric"

STR: NI

"Name: Lyric"

STR: TO E

"Name: Lyric"

STR: LI

"Name: Lyric"

STR: BER

"Name: Lyric"

STR: TA’

"Name: Lyric"
STR:


"Name: Lyric"

STR: CHE

"Name: Lyric"

STR: NON

"Name: Lyric"

STR: FI

"Name: Lyric"

STR: NI

"Name: Lyric"

STR: RA’

"Name: Lyric"

STR: MA

"Name: Lyric"

STR: I

"Name: Lyric"
STR:


"Name: Number of channels"

INT: "9"

[/code:30urypmq]

It’s the same with other midi files. Only one (or sometimes none) tag "Text (Time Ms)"

  • You must to post comments
0
0

<Oh, I see reading the preview you posted…>

Yeah, something wrong with it… Or the way FMOD decoded it.

My player did have trouble reading the file. That is I have my own code to look in the file at the notes and tags and the events which I used before I realised FMOD did it (for lyrics, still need it for timing the notes)…

That is I declared a variable in a condition (the language I use allows that) and use it in another <separate> condition

if tag
{
var text; text = ""
some other stuff
}
later
if that
text += new stuff…

which would crash because some things happens out of sequence.

Anyway, I fixed the code to read it.

Anyway, it indicates something wrong with the file itself, which may not matter. But either some information is missing, or something stops FMOD from fully processing it.

Here is what I found:

Only
Text:QUANTUM JUMP

Text (Time Ms):957

are descriptive enough to handle… Sure there are a bunch of Lyric tags. But there is no Matching Time stamps and matching text (real lyrics) other than the stuff above

[code:2zp27umc]
Track 0 Name:Salvami

Instrument: Dispositivo GM

Lyric:All

Lyric:rights

Lyric: re

Lyric:served

Lyric:

Text:QUANTUM JUMP

Text (Time Ms):957

Lyric:SAL

Lyric:VA

Lyric:MI
[/code:2zp27umc]
and so on, only lyric tags…

In any case, your code, if it was working should show the stuff above, like mine does.

As for why FMOD has Lyrics tag (with no time stamp) and a mirror Text Tag (holding a slight varient of the lyric) with a ralated time stamp is something I have not undertood yet.

here is what all my .kar look like (some extra data from my own decoder mixed in; tracks…

[code:2zp27umc]
Track 1 Name:Soft Karaoke

Text:@KMIDI KARAOKE FILE tm

Text (Time Ms):0

Text:@KAll rights reserved, TUNE 1000 CORP.

Text (Time Ms):0

Text:@V0100

Text (Time Ms):0

Text:@I 06-02-93, 15:40, V.T.

Text (Time Ms):0

Text:@KCopyright EMI International rights secured

Text (Time Ms):0

Track 2 Name:Words

Text:@LENGL

Text (Time Ms):0

Text:@TWE WILL ROCK YOU

Text (Time Ms):0

Text:@TWords & Music by Brian May

Text (Time Ms):0

Text:@TCopyright EMI International rights secured

Text (Time Ms):0

Text:@WALL rights reserved. Not for broadcast or

Text (Time Ms):0

Text:@Wtransmission of any kind.

Text (Time Ms):0

Text:@WDO NOT DUPLICATE. NOT FOR RENTAL.

Text (Time Ms):0

Track 3 Name:Melody

Track 4 Name:Drums

Track 5 Name:Guitar 1

Track 6 Name:Guitar 2

Track 7 Name:Guitar 3

Track 8 Name:Guitar 4

Track 9 Name:Vocals 1

Track 10 Name:Vocals 2

Text:%-

Text (Time Ms):0

Track 11 Name:Bass Drum

Text:%-

Text (Time Ms):0

Track 12 Name:Applause

Text:%-

Text (Time Ms):0

Text:\Bud

Text (Time Ms):14634

Text:dy,

Text (Time Ms):14878

Text: you’re

Text (Time Ms):14999

Text: a

Text (Time Ms):15243

Text: boy,

Text (Time Ms):15426

Text:/make

Text (Time Ms):15792

Text: a

Text (Time Ms):15975

Text: big

Text (Time Ms):16158

Text: noise

Text (Time Ms):16524

Text: play

Text (Time Ms):16890

Text:ing

Text (Time Ms):17012

Text: in

Text (Time Ms):17195

Text: the

Text (Time Ms):17378

Text: street,

Text (Time Ms):17560

Text:/gon

Text (Time Ms):17926

Text:na

Text (Time Ms):18109

Text: be

Text (Time Ms):18353
[/code:2zp27umc]
and so on to the end (Which I posted in other post)

NOTICE there is not Lyrics tag LOL… It’s very confusing

  • You must to post comments
0
0

which version of Fmod are you using?

mine is 42806 (on linux ubuntu)

  • You must to post comments
0
0

can you send me the midi file you are using?

thanks

  • You must to post comments
0
0

Here is set of kars that do work

[url=http://host-a.net/icuurd12b42/samplekars.zip:9450i34w]Download samplekars.zip[/url:9450i34w]

I use the same version as you, but on windows.

I’m pretty confident the problem is in your file and/or FMOD’s midi system. you should submit it for analysis to the FMOD crew.

  • You must to post comments
Showing 8 results
Your Answer

Please first to submit.