VOGONS


Reply 1960 of 2176, by Spesek

User metadata
Rank Newbie
Rank
Newbie

Hi again,

I tried to launch vbsyx in a win10 vm, but it still didn't work. It was missing the MIDIFL32.OCX file, like in wine.

However, I've found this
https://web.archive.org/web/20051204091727/ht … evoi/vbsyx.html

and this
https://web.archive.org/web/20051204091727/ht … org.au/~mlevoi/

But win10 just says "this app can't run on your pc". Not even running in winXP or 95 compability mode works.

I'll try XP VM next.
@EDIT:

WHOA
THE INSTALLER WORKED PERFECTLY IN WINE! IT WORKS!

Reply 1961 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-08-08, 14:03:
Hi again, […]
Show full quote

Hi again,

I tried to launch vbsyx in a win10 vm, but it still didn't work. It was missing the MIDIFL32.OCX file, like in wine.

However, I've found this
https://web.archive.org/web/20051204091727/ht … evoi/vbsyx.html

and this
https://web.archive.org/web/20051204091727/ht … org.au/~mlevoi/

But win10 just says "this app can't run on your pc". Not even running in winXP or 95 compability mode works.

I'll try XP VM next.

Hi,
I have already sent you MIDIFL32.OCX in this post (it's in the OCX_Files.zip):
Re: Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
You have to register the ocx files with the help of 32-bit regsvr32.exe (that is in SYSWOW64 folder on 64-bit Windows , not in SYSTEM32).

You could not run the installer on your 64-bit Windows 10 since the installer itself is a 16-bit application. But the installed apps are already 32-bit.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 1962 of 2176, by Spesek

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote on 2024-08-08, 14:11:
Hi, I have already sent you MIDIFL32.OCX in this post (it's in the OCX_Files.zip): Re: Falcosoft Soundfont Midi Player + Munt VS […]
Show full quote
Spesek wrote on 2024-08-08, 14:03:
Hi again, […]
Show full quote

Hi again,

I tried to launch vbsyx in a win10 vm, but it still didn't work. It was missing the MIDIFL32.OCX file, like in wine.

However, I've found this
https://web.archive.org/web/20051204091727/ht … evoi/vbsyx.html

and this
https://web.archive.org/web/20051204091727/ht … org.au/~mlevoi/

But win10 just says "this app can't run on your pc". Not even running in winXP or 95 compability mode works.

I'll try XP VM next.

Hi,
I have already sent you MIDIFL32.OCX in this post (it's in the OCX_Files.zip):
Re: Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
You have to register the ocx files with the help of 32-bit regsvr32.exe (that is in SYSWOW64 folder on 64-bit Windows , not in SYSTEM32).

You could not run the installer on your 64-bit Windows 10 since the installer itself is a 16-bit application. But the installed apps are already 32-bit.

The attachment Screenshot_BINBOWS_10_2024-08-08.png is no longer available

It does not seem to work.

Reply 1963 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-08-08, 14:34:
Falcosoft wrote on 2024-08-08, 14:11:
Hi, I have already sent you MIDIFL32.OCX in this post (it's in the OCX_Files.zip): Re: Falcosoft Soundfont Midi Player + Munt VS […]
Show full quote
Spesek wrote on 2024-08-08, 14:03:
Hi again, […]
Show full quote

Hi again,

I tried to launch vbsyx in a win10 vm, but it still didn't work. It was missing the MIDIFL32.OCX file, like in wine.

However, I've found this
https://web.archive.org/web/20051204091727/ht … evoi/vbsyx.html

and this
https://web.archive.org/web/20051204091727/ht … org.au/~mlevoi/

But win10 just says "this app can't run on your pc". Not even running in winXP or 95 compability mode works.

I'll try XP VM next.

Hi,
I have already sent you MIDIFL32.OCX in this post (it's in the OCX_Files.zip):
Re: Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
You have to register the ocx files with the help of 32-bit regsvr32.exe (that is in SYSWOW64 folder on 64-bit Windows , not in SYSTEM32).

You could not run the installer on your 64-bit Windows 10 since the installer itself is a 16-bit application. But the installed apps are already 32-bit.

The attachment Screenshot_BINBOWS_10_2024-08-08.png is no longer available

It does not seem to work.

I have told you that the 32-bit regsvr32.exe is in the SYSWOW64 folder on 64-bit Windows. When you run a native 64-bit shell and run regsvr32.exe from your 'Desktop\New Folder' then you invokde the native 64-bit regsvr32.exe (from SYSTEM32 folder).
You have to invoke regsvr32.exe explicitly from C:\Windows\SYSWOW64\regsvr32.exe

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 1964 of 2176, by Spesek

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote on 2024-08-08, 14:47:
Spesek wrote on 2024-08-08, 14:34:
Falcosoft wrote on 2024-08-08, 14:11:
Hi, I have already sent you MIDIFL32.OCX in this post (it's in the OCX_Files.zip): Re: Falcosoft Soundfont Midi Player + Munt VS […]
Show full quote

Hi,
I have already sent you MIDIFL32.OCX in this post (it's in the OCX_Files.zip):
Re: Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
You have to register the ocx files with the help of 32-bit regsvr32.exe (that is in SYSWOW64 folder on 64-bit Windows , not in SYSTEM32).

You could not run the installer on your 64-bit Windows 10 since the installer itself is a 16-bit application. But the installed apps are already 32-bit.

The attachment Screenshot_BINBOWS_10_2024-08-08.png is no longer available

It does not seem to work.

I have told you that the 32-bit regsvr32.exe is in the SYSWOW64 folder on 64-bit Windows. When you run a native 64-bit shell and run regsvr32.exe from your 'Desktop\New Folder' then you invokde the native 64-bit regsvr32.exe (from SYSTEM32 folder).
You have to invoke regsvr32.exe explicitly from C:\Windows\SYSWOW64\regsvr32.exe

This did not change anything...

The attachment It_still_does_not_work.png is no longer available

Reply 1965 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-08-08, 14:52:

This did not change anything...

The attachment It_still_does_not_work.png is no longer available

You cannot register components with normal user rights. You should start the command prompt with elevated/administrator rights:
(On your last screenshot it's obvious from the caption that you have not used elevated/admin command prompt.)

The attachment regsvr1.png is no longer available

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 1966 of 2176, by Spesek

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote on 2024-08-08, 14:58:
You cannot register components with normal user rights. You should start the command prompt with elevated/administrator rights: […]
Show full quote
Spesek wrote on 2024-08-08, 14:52:

This did not change anything...

The attachment It_still_does_not_work.png is no longer available

You cannot register components with normal user rights. You should start the command prompt with elevated/administrator rights:
(On your last screenshot it's obvious from the caption that you have not used elevated/admin command prompt.)

The attachment regsvr1.png is no longer available

Thanks. that works! 😀
Man, windows is so confusing sometimes...
Couldn't it just say "Permission denied" or something?

Reply 1967 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-08-08, 15:12:
Thanks. that works! :) Man, windows is so confusing sometimes... Couldn't it just say "Permission denied" or something? […]
Show full quote
Falcosoft wrote on 2024-08-08, 14:58:
You cannot register components with normal user rights. You should start the command prompt with elevated/administrator rights: […]
Show full quote
Spesek wrote on 2024-08-08, 14:52:

This did not change anything...

The attachment It_still_does_not_work.png is no longer available

You cannot register components with normal user rights. You should start the command prompt with elevated/administrator rights:
(On your last screenshot it's obvious from the caption that you have not used elevated/admin command prompt.)

The attachment regsvr1.png is no longer available

Thanks. that works! 😀
Man, windows is so confusing sometimes...
Couldn't it just say "Permission denied" or something?

Certainly it could, but then where would be the challange?
First you got error 0x80040200 and then error 0x8002801c. What was so hard to understand it ? You do not speak Hex? 😀

But seriously yes, it should.
The introduction of UAC and 64-bit support did not make things simpler for sure...

@Edit:
Ian has responded and he explained somewhat the SF3/SF2Pack differences:
https://www.un4seen.com/forum/?topic=20475.ms … 43457#msg143457
So it seems there is a fundamental difference between compression/decomprerssion strategies of the 2 formats.
Maybe that is why I always felt that SF2Pack compressed soundfonts decompress faster than SF3 compressed ones even when the same encoder/decoder is used (at least in Bassmidi).

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 1968 of 2176, by Spesek

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote on 2024-08-08, 15:24:
Certainly it could, but then where would be the challange? First you got error 0x80040200 and then error 0x8002801c. What was so […]
Show full quote
Spesek wrote on 2024-08-08, 15:12:
Thanks. that works! :) Man, windows is so confusing sometimes... Couldn't it just say "Permission denied" or something? […]
Show full quote
Falcosoft wrote on 2024-08-08, 14:58:

You cannot register components with normal user rights. You should start the command prompt with elevated/administrator rights:
(On your last screenshot it's obvious from the caption that you have not used elevated/admin command prompt.)

The attachment regsvr1.png is no longer available

Thanks. that works! 😀
Man, windows is so confusing sometimes...
Couldn't it just say "Permission denied" or something?

Certainly it could, but then where would be the challange?
First you got error 0x80040200 and then error 0x8002801c. What was so hard to understand it ? You do not speak Hex? 😀

But seriously yes, it should.
The introduction of UAC and 64-bit support did not make things simpler for sure...

@Edit:
Ian has responded and he explained somewhat the SF3/SF2Pack differences:
https://www.un4seen.com/forum/?topic=20475.ms … 43457#msg143457
So it seems there is a fundamental difference between compression/decomprerssion strategies of the 2 formats.
Maybe that is why I always felt that SF2Pack compressed soundfonts decompress faster than SF3 compressed ones even when the same encoder/decoder is used (at least in Bassmidi).

Hi,
I've read Ian's response and I've added experimental sfogg support.
Feel free to check it in the demo!

But to be honest, I think this is a worse approach because of 2 issues:
1. What about different sample rates? Everything is encoded as one big vorbis block with a specific sample rate.
2. This kills the entire idea of dynamically loaded samples. I have to decompress the entire SMPL chunk into memory, which is not good. Also the load time is longer (it's still pretty fast because the base sfont is 32 mb, but imagine it with the 1GB sfont I'm using)
3. This also kills the entire idea of preserving compression: in sf3, you can keep the compressed samples as they are and add more uncompressed ones, without recompressing the compressed ones, avoiding the quality loss while maintaing file size saving (I've actually proposed this idea to the dev of Polyphone sfont editor)
With SF2pack, if you want to edit the soundfont (and you don't have the original .sf2), you have to decompress the samples and recompress them again, losing quality, or leave them uncompressed, increasing the size.

Also I've noticed 2 issues with the soundfont itself:
1. 001:080 square is way louder than everything else.
2. It has messed up loops for the highest pitched sample (this actually helped to expose a bug which killed all sound. Thanks for that!)
Still, it's worth fixing i think:

The attachment why_offset.png is no longer available

Reply 1969 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-08-08, 17:26:
Hi, I've read Ian's response and I've added experimental sfogg support. Feel free to check it in the demo! […]
Show full quote
Falcosoft wrote on 2024-08-08, 15:24:
Certainly it could, but then where would be the challange? First you got error 0x80040200 and then error 0x8002801c. What was so […]
Show full quote
Spesek wrote on 2024-08-08, 15:12:

Thanks. that works! 😀
Man, windows is so confusing sometimes...
Couldn't it just say "Permission denied" or something?

Certainly it could, but then where would be the challange?
First you got error 0x80040200 and then error 0x8002801c. What was so hard to understand it ? You do not speak Hex? 😀

But seriously yes, it should.
The introduction of UAC and 64-bit support did not make things simpler for sure...

@Edit:
Ian has responded and he explained somewhat the SF3/SF2Pack differences:
https://www.un4seen.com/forum/?topic=20475.ms … 43457#msg143457
So it seems there is a fundamental difference between compression/decomprerssion strategies of the 2 formats.
Maybe that is why I always felt that SF2Pack compressed soundfonts decompress faster than SF3 compressed ones even when the same encoder/decoder is used (at least in Bassmidi).

Hi,
I've read Ian's response and I've added experimental sfogg support.
Feel free to check it in the demo!

But to be honest, I think this is a worse approach because of 2 issues:
1. What about different sample rates? Everything is encoded as one big vorbis block with a specific sample rate.
2. This kills the entire idea of dynamically loaded samples. I have to decompress the entire SMPL chunk into memory, which is not good. Also the load time is longer (it's still pretty fast because the base sfont is 32 mb, but imagine it with the 1GB sfont I'm using)
3. This also kills the entire idea of preserving compression: in sf3, you can keep the compressed samples as they are and add more uncompressed ones, without recompressing the compressed ones, avoiding the quality loss while maintaing file size saving (I've actually proposed this idea to the dev of Polyphone sfont editor)
With SF2pack, if you want to edit the soundfont (and you don't have the original .sf2), you have to decompress the samples and recompress them again, losing quality, or leave them uncompressed, increasing the size.

Also I've noticed 2 issues with the soundfont itself:
1. 001:080 square is way louder than everything else.
2. It has messed up loops for the highest pitched sample (this actually helped to expose a bug which killed all sound. Thanks for that!)
Still, it's worth fixing i think:

The attachment why_offset.png is no longer available

Hi,
1. I can only tell that in Bassmidi's context the situation is no different in case of SF3 vs. SF2Pack since it seems SF3 samples are also fully decompressed before samples played and it seems decompressing big chunks is somewhat faster than decompressing samples one by one. And in case of Bassmidi when Dynamic (No Preload) strategy is used then SF2Pack files seemingly only occupies as much memory as the actually loaded (and decompressed) samples use. Maybe we should ask Ian how he could accomplished this.
2. Thanks, I will fix that.

@Edit:
Here is an rmi with my full Reality_GMGS_falcomod.sfogg embedded. If you set 'Soundfont Loading' to 'Dynamic (No Preload)' in Device Settings dialog then if you open the rmi in FSMP you can see as the memory usage grows as the samples are loaded when needed.
https://falcosoft.hu/human1gm.rmi

Last edited by Falcosoft on 2024-08-09, 04:05. Edited 1 time in total.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 1970 of 2176, by Spesek

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote on 2024-08-08, 17:52:
Hi, 1. I can only tell that in Bassmidi's context the situation is no different in case of SF3 vs. SF2Pack since it seems SF3 sa […]
Show full quote
Spesek wrote on 2024-08-08, 17:26:
Hi, I've read Ian's response and I've added experimental sfogg support. Feel free to check it in the demo! […]
Show full quote
Falcosoft wrote on 2024-08-08, 15:24:
Certainly it could, but then where would be the challange? First you got error 0x80040200 and then error 0x8002801c. What was so […]
Show full quote

Certainly it could, but then where would be the challange?
First you got error 0x80040200 and then error 0x8002801c. What was so hard to understand it ? You do not speak Hex? 😀

But seriously yes, it should.
The introduction of UAC and 64-bit support did not make things simpler for sure...

@Edit:
Ian has responded and he explained somewhat the SF3/SF2Pack differences:
https://www.un4seen.com/forum/?topic=20475.ms … 43457#msg143457
So it seems there is a fundamental difference between compression/decomprerssion strategies of the 2 formats.
Maybe that is why I always felt that SF2Pack compressed soundfonts decompress faster than SF3 compressed ones even when the same encoder/decoder is used (at least in Bassmidi).

Hi,
I've read Ian's response and I've added experimental sfogg support.
Feel free to check it in the demo!

But to be honest, I think this is a worse approach because of 2 issues:
1. What about different sample rates? Everything is encoded as one big vorbis block with a specific sample rate.
2. This kills the entire idea of dynamically loaded samples. I have to decompress the entire SMPL chunk into memory, which is not good. Also the load time is longer (it's still pretty fast because the base sfont is 32 mb, but imagine it with the 1GB sfont I'm using)
3. This also kills the entire idea of preserving compression: in sf3, you can keep the compressed samples as they are and add more uncompressed ones, without recompressing the compressed ones, avoiding the quality loss while maintaing file size saving (I've actually proposed this idea to the dev of Polyphone sfont editor)
With SF2pack, if you want to edit the soundfont (and you don't have the original .sf2), you have to decompress the samples and recompress them again, losing quality, or leave them uncompressed, increasing the size.

Also I've noticed 2 issues with the soundfont itself:
1. 001:080 square is way louder than everything else.
2. It has messed up loops for the highest pitched sample (this actually helped to expose a bug which killed all sound. Thanks for that!)
Still, it's worth fixing i think:

The attachment why_offset.png is no longer available

Hi,
1. I can only tell that in Bassmidi's context the situation is no different in case of SF3 vs. SF2Pack since it seems SF3 samples are also fully decompressed before samples played and it seems decompressing big chunks is somewhat faster than decompressing samples one by one. And in case of Bassmidi when Dynamic (No Preload) strategy is used then SF2Pack files seemingly only occupies as much memory as the actually loaded (and decompressed) samples use. Maybe we should ask Ian how he could accomplished this.
2. Thanks, I will fix that.

@Edit:
Here is an rmi with my full Reality_GMGS_falcomod.sfogg embedded. If you set 'Soundfont Loading' to 'Dynamic (No Preload)' in Device Settings dialog then if you open the rmi in FSMP you can see as the memory usage grows as the samples are loaded when needed.
https://falcosoft.hu/human1gm.rmi

Hi once more,
I have an idea for another chunk, this time closely related to an FSMP feature which spessasynth stole took inspiration from 😉

Loop points!
There would be an (optional) "LPTS" chunk with the length of 8 bytes, formed like this:
ss ss ss ss ee ee ee ee
where ss is a 32-bit number for loop start in MIDI ticks
and e is a 32-bit number for loop end in midi ticks! Both little-endian unsigned of course.
That way we can transfer the unofficial detected loops (for example CC 2/4) into a format readable by all RMIDI capable players!
What do you think? Can we add it to the spec or is it too much?

PS: It's great that BASS can do some magic and only decompress the needed part of the vorbis stream.
However spessa is made to work on the web, so it can't read a file from a hard drive, it has to load the entire stuff into RAM (when you upload the file, you upload it as a whole)
PS 2: when I clicked the link do download the rmi, firefox downloaded it as .mid. Strange.

PS 3: Out of curiosity, why is FSMP6 closed source?

Reply 1971 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-08-08, 20:56:
Hi once more, I have an idea for another chunk, this time closely related to an FSMP feature which spessasynth stole took inspir […]
Show full quote
Falcosoft wrote on 2024-08-08, 17:52:
Hi, 1. I can only tell that in Bassmidi's context the situation is no different in case of SF3 vs. SF2Pack since it seems SF3 sa […]
Show full quote
Spesek wrote on 2024-08-08, 17:26:
Hi, I've read Ian's response and I've added experimental sfogg support. Feel free to check it in the demo! […]
Show full quote

Hi,
I've read Ian's response and I've added experimental sfogg support.
Feel free to check it in the demo!

But to be honest, I think this is a worse approach because of 2 issues:
1. What about different sample rates? Everything is encoded as one big vorbis block with a specific sample rate.
2. This kills the entire idea of dynamically loaded samples. I have to decompress the entire SMPL chunk into memory, which is not good. Also the load time is longer (it's still pretty fast because the base sfont is 32 mb, but imagine it with the 1GB sfont I'm using)
3. This also kills the entire idea of preserving compression: in sf3, you can keep the compressed samples as they are and add more uncompressed ones, without recompressing the compressed ones, avoiding the quality loss while maintaing file size saving (I've actually proposed this idea to the dev of Polyphone sfont editor)
With SF2pack, if you want to edit the soundfont (and you don't have the original .sf2), you have to decompress the samples and recompress them again, losing quality, or leave them uncompressed, increasing the size.

Also I've noticed 2 issues with the soundfont itself:
1. 001:080 square is way louder than everything else.
2. It has messed up loops for the highest pitched sample (this actually helped to expose a bug which killed all sound. Thanks for that!)
Still, it's worth fixing i think:

The attachment why_offset.png is no longer available

Hi,
1. I can only tell that in Bassmidi's context the situation is no different in case of SF3 vs. SF2Pack since it seems SF3 samples are also fully decompressed before samples played and it seems decompressing big chunks is somewhat faster than decompressing samples one by one. And in case of Bassmidi when Dynamic (No Preload) strategy is used then SF2Pack files seemingly only occupies as much memory as the actually loaded (and decompressed) samples use. Maybe we should ask Ian how he could accomplished this.
2. Thanks, I will fix that.

@Edit:
Here is an rmi with my full Reality_GMGS_falcomod.sfogg embedded. If you set 'Soundfont Loading' to 'Dynamic (No Preload)' in Device Settings dialog then if you open the rmi in FSMP you can see as the memory usage grows as the samples are loaded when needed.
https://falcosoft.hu/human1gm.rmi

Hi once more,
I have an idea for another chunk, this time closely related to an FSMP feature which spessasynth stole took inspiration from 😉

Loop points!
There would be an (optional) "LPTS" chunk with the length of 8 bytes, formed like this:
ss ss ss ss ee ee ee ee
where ss is a 32-bit number for loop start in MIDI ticks
and e is a 32-bit number for loop end in midi ticks! Both little-endian unsigned of course.
That way we can transfer the unofficial detected loops (for example CC 2/4) into a format readable by all RMIDI capable players!
What do you think? Can we add it to the spec or is it too much?

PS: It's great that BASS can do some magic and only decompress the needed part of the vorbis stream.
However spessa is made to work on the web, so it can't read a file from a hard drive, it has to load the entire stuff into RAM (when you upload the file, you upload it as a whole)
PS 2: when I clicked the link do download the rmi, firefox downloaded it as .mid. Strange.

PS 3: Out of curiosity, why is FSMP6 closed source?

Hi,
1. This is an idea I strongly disagree with 🙁
I think there is already too many kinds of loop markers and one more cannot help in this chaotic situation.
Not to mention the problem of what should happen if some kind of loop points already exist in the Midi file that the rmi author does not recognize (but the affected player does) and they are not consistent with the loop points that are defined in the rmi chunk.
Furthermore testing and correcting loop points is much harder in the rmi chunk than in the Midi file itself so from a pure practical point of view I do not think that this would be helpful for authors either.
So I beg you not to include this in the specification...
If your intention is really some kind of standardization then I think you should pick an existing one like CC#116/CC#117 since they are more versatile (they can define the loop count and are not restricted to 1 start and 1 end) and they are already supported in 2 kinds of independent Midi 'standard' (i.e. EMIDI and XMI). So you can mention in the specification that this kind of loop markers are recommended in the Midi file itself.

2. I have already talked about this many times before so let me link an earlier answer:
Re: Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi

Last edited by Falcosoft on 2024-08-08, 22:27. Edited 2 times in total.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 1972 of 2176, by Spesek

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote on 2024-08-08, 21:46:
Hi, 1. This is an idea I stronly disagree with :( I think there is already too many kinds of loop markers and one more cannot he […]
Show full quote
Spesek wrote on 2024-08-08, 20:56:
Hi once more, I have an idea for another chunk, this time closely related to an FSMP feature which spessasynth stole took inspir […]
Show full quote
Falcosoft wrote on 2024-08-08, 17:52:
Hi, 1. I can only tell that in Bassmidi's context the situation is no different in case of SF3 vs. SF2Pack since it seems SF3 sa […]
Show full quote

Hi,
1. I can only tell that in Bassmidi's context the situation is no different in case of SF3 vs. SF2Pack since it seems SF3 samples are also fully decompressed before samples played and it seems decompressing big chunks is somewhat faster than decompressing samples one by one. And in case of Bassmidi when Dynamic (No Preload) strategy is used then SF2Pack files seemingly only occupies as much memory as the actually loaded (and decompressed) samples use. Maybe we should ask Ian how he could accomplished this.
2. Thanks, I will fix that.

@Edit:
Here is an rmi with my full Reality_GMGS_falcomod.sfogg embedded. If you set 'Soundfont Loading' to 'Dynamic (No Preload)' in Device Settings dialog then if you open the rmi in FSMP you can see as the memory usage grows as the samples are loaded when needed.
https://falcosoft.hu/human1gm.rmi

Hi once more,
I have an idea for another chunk, this time closely related to an FSMP feature which spessasynth stole took inspiration from 😉

Loop points!
There would be an (optional) "LPTS" chunk with the length of 8 bytes, formed like this:
ss ss ss ss ee ee ee ee
where ss is a 32-bit number for loop start in MIDI ticks
and e is a 32-bit number for loop end in midi ticks! Both little-endian unsigned of course.
That way we can transfer the unofficial detected loops (for example CC 2/4) into a format readable by all RMIDI capable players!
What do you think? Can we add it to the spec or is it too much?

PS: It's great that BASS can do some magic and only decompress the needed part of the vorbis stream.
However spessa is made to work on the web, so it can't read a file from a hard drive, it has to load the entire stuff into RAM (when you upload the file, you upload it as a whole)
PS 2: when I clicked the link do download the rmi, firefox downloaded it as .mid. Strange.

PS 3: Out of curiosity, why is FSMP6 closed source?

Hi,
1. This is an idea I stronly disagree with 🙁
I think there is already too many kinds of loop markers and one more cannot help in this chaotic situation.
Not to mention the problem of what should happen if some kind of loop points already exist in the Midi file that the rmi author does not recognize (but the affected player does) and they are not consistent with the loop points that are defined in the rmi chunk.
Furthermore testing and correcting loop points is much harder in the rmi chunk than in the Midi file itself so from a pure practical point of view I do not think that this would be helpful for authors either.
So I beg you not to include this in the specification...

2. I have already talked about this many times before so let me link an earlier answer:
Re: Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi

Hi Zoltan,
1. Oh well...
To specify more clearly, this was my idea:
This chunk would allow loop points to be standardized:

  • This means that all RMIDI-capable players would use them. That way no matter what the actual MIDI file uses, if the RMIDI writing software recognizes the loop points, it would write them in an official, specified way so all software (even that ignoring cc or marker loops) playing back the file would be aware of them.
  • RMIDIs without LPTS chunk (as it's optional) would behave like normal MIDIs (capable software can try to find the loop points)
  • To turn off the loop, the LPTS chunk would have both loop start and loop end set to 0, indicating no loop. This also disables loop points within the MIDI file itself.
  • And the loop points would override the loop points in the midi. That way both loop aware and non-loop aware software would loop using the LPTS chunk.

That was my general idea. And I would add all these constraints to the spec, ensuring the same behavior everywhere.
If you're still against it though, I won't add it. You're the standard's creator, after all.

2. That's fair. Curious if BASS being closed source was Ian's choice or being forced to stay closed due to legal reasons like you.

Reply 1973 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-08-08, 22:12:
Hi Zoltan, 1. Oh well... To specify more clearly, this was my idea: This chunk would allow loop points to be standardized: […]
Show full quote
Falcosoft wrote on 2024-08-08, 21:46:
Hi, 1. This is an idea I stronly disagree with :( I think there is already too many kinds of loop markers and one more cannot he […]
Show full quote
Spesek wrote on 2024-08-08, 20:56:
Hi once more, I have an idea for another chunk, this time closely related to an FSMP feature which spessasynth stole took inspir […]
Show full quote

Hi once more,
I have an idea for another chunk, this time closely related to an FSMP feature which spessasynth stole took inspiration from 😉

Loop points!
There would be an (optional) "LPTS" chunk with the length of 8 bytes, formed like this:
ss ss ss ss ee ee ee ee
where ss is a 32-bit number for loop start in MIDI ticks
and e is a 32-bit number for loop end in midi ticks! Both little-endian unsigned of course.
That way we can transfer the unofficial detected loops (for example CC 2/4) into a format readable by all RMIDI capable players!
What do you think? Can we add it to the spec or is it too much?

PS: It's great that BASS can do some magic and only decompress the needed part of the vorbis stream.
However spessa is made to work on the web, so it can't read a file from a hard drive, it has to load the entire stuff into RAM (when you upload the file, you upload it as a whole)
PS 2: when I clicked the link do download the rmi, firefox downloaded it as .mid. Strange.

PS 3: Out of curiosity, why is FSMP6 closed source?

Hi,
1. This is an idea I stronly disagree with 🙁
I think there is already too many kinds of loop markers and one more cannot help in this chaotic situation.
Not to mention the problem of what should happen if some kind of loop points already exist in the Midi file that the rmi author does not recognize (but the affected player does) and they are not consistent with the loop points that are defined in the rmi chunk.
Furthermore testing and correcting loop points is much harder in the rmi chunk than in the Midi file itself so from a pure practical point of view I do not think that this would be helpful for authors either.
So I beg you not to include this in the specification...

2. I have already talked about this many times before so let me link an earlier answer:
Re: Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi

Hi Zoltan,
1. Oh well...
To specify more clearly, this was my idea:
This chunk would allow loop points to be standardized:

  • This means that all RMIDI-capable players would use them. That way no matter what the actual MIDI file uses, if the RMIDI writing software recognizes the loop points, it would write them in an official, specified way so all software (even that ignoring cc or marker loops) playing back the file would be aware of them.
  • RMIDIs without LPTS chunk (as it's optional) would behave like normal MIDIs (capable software can try to find the loop points)
  • To turn off the loop, the LPTS chunk would have both loop start and loop end set to 0, indicating no loop. This also disables loop points within the MIDI file itself.
  • And the loop points would override the loop points in the midi. That way both loop aware and non-loop aware software would loop using the LPTS chunk.

That was my general idea. And I would add all these constraints to the spec, ensuring the same behavior everywhere.
If you're still against it though, I won't add it. You're the standard's creator, after all.

2. That's fair. Curious if BASS being closed source was Ian's choice or being forced to stay closed due to legal reasons like you.

I think you missed this:

If your intention is really some kind of standardization then I think you should pick an existing one like CC#116/CC#117 since they are more versatile (they can define the loop count and are not restricted to 1 start and 1 end) and they are already supported in 2 kinds of independent Midi 'standard' (i.e. EMIDI and XMI). So you can mention in the specification that this kind of loop markers are recommended in the Midi file itself.

Furthermore XMI/EMIDI style loop markers are already supported in most Midi players that are aware of loops (e.g. XMPlay, Foobar's Midi plugin, and other players that can play .xmi files).

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 1974 of 2176, by Spesek

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote on 2024-08-08, 22:16:
I think you missed this: […]
Show full quote
Spesek wrote on 2024-08-08, 22:12:
Hi Zoltan, 1. Oh well... To specify more clearly, this was my idea: This chunk would allow loop points to be standardized: […]
Show full quote
Falcosoft wrote on 2024-08-08, 21:46:
Hi, 1. This is an idea I stronly disagree with :( I think there is already too many kinds of loop markers and one more cannot he […]
Show full quote

Hi,
1. This is an idea I stronly disagree with 🙁
I think there is already too many kinds of loop markers and one more cannot help in this chaotic situation.
Not to mention the problem of what should happen if some kind of loop points already exist in the Midi file that the rmi author does not recognize (but the affected player does) and they are not consistent with the loop points that are defined in the rmi chunk.
Furthermore testing and correcting loop points is much harder in the rmi chunk than in the Midi file itself so from a pure practical point of view I do not think that this would be helpful for authors either.
So I beg you not to include this in the specification...

2. I have already talked about this many times before so let me link an earlier answer:
Re: Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi

Hi Zoltan,
1. Oh well...
To specify more clearly, this was my idea:
This chunk would allow loop points to be standardized:

  • This means that all RMIDI-capable players would use them. That way no matter what the actual MIDI file uses, if the RMIDI writing software recognizes the loop points, it would write them in an official, specified way so all software (even that ignoring cc or marker loops) playing back the file would be aware of them.
  • RMIDIs without LPTS chunk (as it's optional) would behave like normal MIDIs (capable software can try to find the loop points)
  • To turn off the loop, the LPTS chunk would have both loop start and loop end set to 0, indicating no loop. This also disables loop points within the MIDI file itself.
  • And the loop points would override the loop points in the midi. That way both loop aware and non-loop aware software would loop using the LPTS chunk.

That was my general idea. And I would add all these constraints to the spec, ensuring the same behavior everywhere.
If you're still against it though, I won't add it. You're the standard's creator, after all.

2. That's fair. Curious if BASS being closed source was Ian's choice or being forced to stay closed due to legal reasons like you.

I think you missed this:

If your intention is really some kind of standardization then I think you should pick an existing one like CC#116/CC#117 since they are more versatile (they can define the loop count and are not restricted to 1 start and 1 end) and they are already supported in 2 kinds of indepentend Midi 'standard' (i.e. EMIDI and XMI). So you can mention in the specification that this kind of loop markers are recommended in the Midi file itself.

Furthermore XMI/EMIDI style loop markers are already supported in most Midi players that are aware of loops (e.g. XMPlay, Foobar's Midi plugin, and other players that can play .xmi files).

Hi,
Yeah, I think you edited your post while i was writing mine.
Generally, I think we want to avoid adding stuff to the MIDI file. And even if it's "standardized" the only way I found out about cc's being used as loop points, was when I played a MIDI with these through FSMP6. Fluidsynth (the biggest (I think), most well known SF2-based midi player (and used in VLC) does not use these. And it probably won't since it isn't in any specification. (When I suggested adding support for the 0x21 meta message for multi-port, it was promptly rejected.
Using the LPTS chunk will be officially standardized.

And about multiple loop points: sure thing! I'm not sure how do multiple loop points work, so you will have to help me describe the behavior

For the chunk itself, it would be pretty straightforward:
LPTS:
1 byte of looping mode (o would be forward, 1 would be backwards, 2 would be back-and-forth. More can be added later if you have ideas)
any amount of LPNT chunks (minimum of 2, being start and end), where:
LPNT:
tt tt pp pp pp pp
where tt is the loop point type (0 is start, 1 is end, More can be added later. Also it's 2 bytes because the chunk's length has to be even anyways so why waste it on a zero byte)
and pp is the 32-bit little-endian tick number for a given loop point.
If loops should be disabled, the LPTS would have a length of 1 with a single byte of 0, indicating no loops. If LPTS doesn't exist, normal MIDI loop behavior is enabled.

If this solution lacks any features that the cc loops offer, let me know so we can add them. Only when we're really sure about loop points having enough flexibility, I will add the final LPTS version to the spec.
What do you think? Are you still against the idea?

Reply 1975 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-08-08, 22:37:
Hi, Yeah, I think you edited your post while i was writing mine. Generally, I think we want to avoid adding stuff to the MIDI fi […]
Show full quote
Falcosoft wrote on 2024-08-08, 22:16:
I think you missed this: […]
Show full quote
Spesek wrote on 2024-08-08, 22:12:
Hi Zoltan, 1. Oh well... To specify more clearly, this was my idea: This chunk would allow loop points to be standardized: […]
Show full quote

Hi Zoltan,
1. Oh well...
To specify more clearly, this was my idea:
This chunk would allow loop points to be standardized:

  • This means that all RMIDI-capable players would use them. That way no matter what the actual MIDI file uses, if the RMIDI writing software recognizes the loop points, it would write them in an official, specified way so all software (even that ignoring cc or marker loops) playing back the file would be aware of them.
  • RMIDIs without LPTS chunk (as it's optional) would behave like normal MIDIs (capable software can try to find the loop points)
  • To turn off the loop, the LPTS chunk would have both loop start and loop end set to 0, indicating no loop. This also disables loop points within the MIDI file itself.
  • And the loop points would override the loop points in the midi. That way both loop aware and non-loop aware software would loop using the LPTS chunk.

That was my general idea. And I would add all these constraints to the spec, ensuring the same behavior everywhere.
If you're still against it though, I won't add it. You're the standard's creator, after all.

2. That's fair. Curious if BASS being closed source was Ian's choice or being forced to stay closed due to legal reasons like you.

I think you missed this:

If your intention is really some kind of standardization then I think you should pick an existing one like CC#116/CC#117 since they are more versatile (they can define the loop count and are not restricted to 1 start and 1 end) and they are already supported in 2 kinds of indepentend Midi 'standard' (i.e. EMIDI and XMI). So you can mention in the specification that this kind of loop markers are recommended in the Midi file itself.

Furthermore XMI/EMIDI style loop markers are already supported in most Midi players that are aware of loops (e.g. XMPlay, Foobar's Midi plugin, and other players that can play .xmi files).

Hi,
Yeah, I think you edited your post while i was writing mine.
Generally, I think we want to avoid adding stuff to the MIDI file. And even if it's "standardized" the only way I found out about cc's being used as loop points, was when I played a MIDI with these through FSMP6. Fluidsynth (the biggest (I think), most well known SF2-based midi player (and used in VLC) does not use these. And it probably won't since it isn't in any specification. (When I suggested adding support for the 0x21 meta message for multi-port, it was promptly rejected.
Using the LPTS chunk will be officially standardized.

And about multiple loop points: sure thing! I'm not sure how do multiple loop points work, so you will have to help me describe the behavior

For the chunk itself, it would be pretty straightforward:
LPTS:
1 byte of looping mode (o would be forward, 1 would be backwards, 2 would be back-and-forth. More can be added later if you have ideas)
any amount of LPNT chunks (minimum of 2, being start and end), where:
LPNT:
tt tt pp pp pp pp
where tt is the loop point type (0 is start, 1 is end, More can be added later. Also it's 2 bytes because the chunk's length has to be even anyways so why waste it on a zero byte)
and pp is the 32-bit little-endian tick number for a given loop point.
If loops should be disabled, the LPTS would have a length of 1 with a single byte of 0, indicating no loops. If LPTS doesn't exist, normal MIDI loop behavior is enabled.

If this solution lacks any features that the cc loops offer, let me know so we can add them. Only when we're really sure about loop points having enough flexibility, I will add the final LPTS version to the spec.
What do you think? Are you still against the idea?

Sorry, I still agains it in this form, but honestly I do not mind that much.
Only one thing is sure : FSMP will not support it...
And honestly I still do not understand why this implementation would have any advantage compared to XMI style loop markers. If you include XMI Loop markers in the specification then it's in the standard and loop markers have to be implemeted this way or forget 'compliance'.

Generally, I think we want to avoid adding stuff to the MIDI file.

In this case: Why?
There are many more intelligent Midi editors than RIFF editors that could help inserting loop markers at the right place. Besides you and me almost no other users would even know what a Midi 'tick' is.

Last edited by Falcosoft on 2024-08-08, 22:56. Edited 1 time in total.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 1976 of 2176, by Spesek

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote on 2024-08-08, 22:46:
Sorry, I still agains it in this form, but honestly I do not mind that much. Only one thing is sure : FSMP will not support it.. […]
Show full quote
Spesek wrote on 2024-08-08, 22:37:
Hi, Yeah, I think you edited your post while i was writing mine. Generally, I think we want to avoid adding stuff to the MIDI fi […]
Show full quote
Falcosoft wrote on 2024-08-08, 22:16:

I think you missed this:

Furthermore XMI/EMIDI style loop markers are already supported in most Midi players that are aware of loops (e.g. XMPlay, Foobar's Midi plugin, and other players that can play .xmi files).

Hi,
Yeah, I think you edited your post while i was writing mine.
Generally, I think we want to avoid adding stuff to the MIDI file. And even if it's "standardized" the only way I found out about cc's being used as loop points, was when I played a MIDI with these through FSMP6. Fluidsynth (the biggest (I think), most well known SF2-based midi player (and used in VLC) does not use these. And it probably won't since it isn't in any specification. (When I suggested adding support for the 0x21 meta message for multi-port, it was promptly rejected.
Using the LPTS chunk will be officially standardized.

And about multiple loop points: sure thing! I'm not sure how do multiple loop points work, so you will have to help me describe the behavior

For the chunk itself, it would be pretty straightforward:
LPTS:
1 byte of looping mode (o would be forward, 1 would be backwards, 2 would be back-and-forth. More can be added later if you have ideas)
any amount of LPNT chunks (minimum of 2, being start and end), where:
LPNT:
tt tt pp pp pp pp
where tt is the loop point type (0 is start, 1 is end, More can be added later. Also it's 2 bytes because the chunk's length has to be even anyways so why waste it on a zero byte)
and pp is the 32-bit little-endian tick number for a given loop point.
If loops should be disabled, the LPTS would have a length of 1 with a single byte of 0, indicating no loops. If LPTS doesn't exist, normal MIDI loop behavior is enabled.

If this solution lacks any features that the cc loops offer, let me know so we can add them. Only when we're really sure about loop points having enough flexibility, I will add the final LPTS version to the spec.
What do you think? Are you still against the idea?

Sorry, I still agains it in this form, but honestly I do not mind that much.
Only one thing is sure : FSMP will not support it...
And honestly I still do not understand why this implementation would have any advantage compared to XMI style loop points. If you include it in the specification then it's in the standard and loop markers have to be implemeted this way or forget 'compliance'.

Generally, I think we want to avoid adding stuff to the MIDI file.

In this case: Why?
There are many more intelligent Midi editors than RIFF editors that could help inserting loop markers at the right place.

The entire advantage would be standardization (every RMID compliant synth would have to support these. And every developer would be aware of them too. If i only based my synth on the midi specification, it would not support these.) and posibility for further expansion.

But if you don't want it, that's fine. I won't add LPTS to the specification...

Reply 1977 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-08-08, 22:53:

...
The entire advantage would be standardization (every RMID compliant synth would have to support these. And every developer would be aware of them too. If i only based my synth on the midi specification, it would not support these.) and posibility for further expansion.

But if you don't want it, that's fine. I won't add LPTS to the specification...

I still do not understand why this kind of standardization could not apply if you choose XMI style loop markers for the standard. The fact that RIFF chunk loop markers have never been impleneted in anything so far does not sound as an advantage for me.
Please, help me understand.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 1978 of 2176, by Spesek

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote on 2024-08-08, 23:00:
Spesek wrote on 2024-08-08, 22:53:

...
The entire advantage would be standardization (every RMID compliant synth would have to support these. And every developer would be aware of them too. If i only based my synth on the midi specification, it would not support these.) and posibility for further expansion.

But if you don't want it, that's fine. I won't add LPTS to the specification...

I still do not understand why this kind of standardization could not apply if you choose XMI style loop markers for the standard. The fact that RIFF chunk loop markers have never been impleneted in anything so far does not sound as an advantage for me.
Plesae, help me understand.

Alright, let's use XMI then.
The entire point of this is to standardize loop points, so if you insist on using XMI points, we can use that.

So, how do they work?
Which CC is which loop point? How do you specify multiple loop points?
I honestly know nothing about these except that they use CC messages, so you need to help me here.

Reply 1979 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-08-08, 23:05:
Alright, let's use XMI then. The entire point of this is to standardize loop points, so if you insist on using XMI points, we ca […]
Show full quote
Falcosoft wrote on 2024-08-08, 23:00:
Spesek wrote on 2024-08-08, 22:53:

...
The entire advantage would be standardization (every RMID compliant synth would have to support these. And every developer would be aware of them too. If i only based my synth on the midi specification, it would not support these.) and posibility for further expansion.

But if you don't want it, that's fine. I won't add LPTS to the specification...

I still do not understand why this kind of standardization could not apply if you choose XMI style loop markers for the standard. The fact that RIFF chunk loop markers have never been impleneted in anything so far does not sound as an advantage for me.
Plesae, help me understand.

Alright, let's use XMI then.
The entire point of this is to standardize loop points, so if you insist on using XMI points, we can use that.

So, how do they work?
Which CC is which loop point? How do you specify multiple loop points?
I honestly know nothing about these except that they use CC messages, so you need to help me here.

OK,
1. CC#116 marks the start of a loop section. The 3rd byte is the loop count (1-127). 0 means infinite/undefined loop count so of course the player/user can use constraints on the loop count.
2. CC#117 marks the end of the loop section. The 3rd byte is not used but should be 127.
3. Multiple loop sections can be defined in the same file but they should not overlap. So you should avoid multiple loop start markers without a loop end marker and vice versa.
4. Loop markers have no channel context so the coded channel is ignored. The default should be 1.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper