VOGONS


Reply 620 of 1699, by RetroGC

User metadata
Rank Member
Rank
Member
Falcosoft wrote:

You will know when you meet such a file and feel the need that you have to change something for correct playback 😀. The obvious sign of such a file is bad sound (piano instead of drum) on channel 16. If such an MS dual authored file does not contain anything on channel 16 there is no problem. You will actually get a 'richer' sound by playing channels 1-15 together.

I'm going to download again and test, and as always thank you for your great software. I've been able to go backward with your suggestion and record the wrong dune 20's midi file too. My youtube videogames' ost project is taking shape thanks to your software too.

I would like to ask a couple of things... that japanese midi file are from Nec PC 88 game. Maybe the japanese user would like to share japanese internet site midi resource...

Just another thing, it could be possible to add a column for start - end of each songs... I'll try to explain: If i load for example 32 midi file and i record them with an external synth on my PC, i'll have a single file of about one hour. It would be great to have start / end of each song inside that wav file. Now I'm recording single tracks, but i would like to record a single file with the whole soundtrack too and it would be really usefull.

Thank you for your patience.

Aldo

My Videogames Music Channel:
https://www.youtube.com/c/RetroGamesClub

Reply 621 of 1699, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
RetroGC wrote:

Just another thing, it could be possible to add a column for start - end of each songs... I'll try to explain: If i load for example 32 midi file and i record them with an external synth on my PC, i'll have a single file of about one hour. It would be great to have start / end of each song inside that wav file. Now I'm recording single tracks, but i would like to record a single file with the whole soundtrack too and it would be really usefull.

Maybe I do not understand you fully but I think this feature is already implemented in FSMP. From the ReadMe:

version 5.0
1. Added Batch File Mode to record mode options. Consecutive files from the playlist are saved to the same folder with the same format you have selected in the dialog for the first file. File names will be the same as the original midi file but with wav/mp3 extension.

'Record mode options' can be selected by right clicking the Record button. There is also a hint for this if you move your mouse above the button. Knowing the right click context menus is vital when using FSMP. 😀

@Edit:

It would be great to have start / end of each song inside that wav file

I really do not understand what you mean by this. Do you mean a pause? You can have a CD standard 2 sec. pause between songs (also applied during recording) by checking 'Pause between Songs' in the right click context menu of the playlist.

Last edited by Falcosoft on 2018-02-16, 10:05. Edited 1 time in total.

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

Reply 622 of 1699, by Scali

User metadata
Rank l33t
Rank
l33t

By the way, I read on that other page that the CANYON.MID that came with Windows 3.1 was also one of those 'special' MS MIDI files.
Is there a place somewhere where I can get all MIDI files included with all versions of Windows?
I saw various MIDs in this video that I never even knew about: https://youtu.be/_omoN4UpYws

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 623 of 1699, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Is there a place somewhere where I can get all MIDI files included with all versions of Windows?
I saw various MIDs in this video that I never even knew about: https://youtu.be/_omoN4UpYws

I do not know where you can download an 'all of Windows midis' collection from but with the exception of clouds.mid i have found those files from the video on my legacy virtual machines:
Canyon.mid - Win NT4
Passport.mid - Win NT4
Town.mid - WinXp
Flourish.mid - WinXp
Onestop.mid - WinXp
+ Edge.mid. It was the original Directmusic test song before Flourish.mid.

Filename
MSMIDS.zip
File size
76.97 KiB
Downloads
122 downloads
File license
Fair use/fair dealing exception

Ps:
Yes, Canyon.mid and Passport.mid are actually problematic MS specific 'dual channel layout' midi files, but in case of Passport.mid it's not so easy to hear the problem. At least they do not contain GM On SysEx messages.

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

Reply 624 of 1699, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
I think I have found the best compromise. I have added an additional Auto(All -> MS GM) option to Compatibility -> Channels options. This will be the default one. It switches between All (channels 1-16) and MS GM Compatible (channels 1-15) automatically depending on detection of the MS meta sequencer event. This way users who do not care/understand this whole problem still gets proper sound. And even in case of a false positive detection only channel 16 is sacrificed (unlike in WMP where channels 11-16 are skipped). I have not found so far midi files that include this special MS meta sequencer event and contain non-drum notes on channel 16.
Although this solution is different from WMP's but so far resulted in better sound and compatibility. And if you want you still can select a different channel layout manually.
Download:
http://falcosoft.hu/midiplayer_53_test.zip

Ps:
Also added better 'Sequencer specific' meta event display (includes the 'data' part of the event) to Event Viewer/Debugger dialog. This way it will be easier to debug problematic cases.

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

Reply 625 of 1699, by RetroGC

User metadata
Rank Member
Rank
Member
Falcosoft wrote:

version 5.0
1. Added Batch File Mode to record mode options. Consecutive files from the playlist are saved to the same folder with the same format you have selected in the dialog for the first file. File names will be the same as the original midi file but with wav/mp3 extension.

I thought this was only for internal VST Synthetizer, non for external. That's just great, i'm recording for the third time hexen 2 soundtrack with different synths and settings. I'm using PCM 16 bit (i can not check 32 bit flag right?)

Falcosoft wrote:

Maybe I do not understand you fully but I think this feature is already implemented in FSMP. From the ReadMe:

I'll try to explain myself in a better way with photo tomorrow.

Just another question... I've noticed that my Roland SD-50 produce MIDI in a different way if before playback i send a SyX containing GS Standard mode.Could it be possible to implement an analysis of the midi file to verify if it contain only GS Mode or it's a full compliant GM Mode?
Thank you and excuse me for my poor english.

Aldo

My Videogames Music Channel:
https://www.youtube.com/c/RetroGamesClub

Reply 626 of 1699, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

I thought this was only for internal VST Synthetizer, non for external. That's just great, i'm recording for the third time hexen 2 soundtrack with different synths and settings. I'm using PCM 16 bit (i can not check 32 bit flag right?)

FSMP can record both external and internal synths and the selected recording option applies to both mode. But the underlying methods are very different. Internal/VSTi synths are recorded through Bass infrastructure while external synths are recorded through Directsound/ACM subsystems of Windows. Recording to 32 bit float wave files is only possible when using Bass.

I've noticed that my Roland SD-50 produce MIDI in a different way if before playback i send a SyX containing GS Standard mode.Could it be possible to implement an analysis of the midi file to verify if it contain only GS Mode or it's a full compliant GM Mode?

in FSMP it's actually very easy to tell what midi system (SysEx message) a midi files uses, there's no need for implementing additional 'analysis'.
1. On the main display you can see what kind of reset SysEx message the loaded midi uses/sends last (it's the first row that starts with an icon and says either GM, GM2, GS, SC-88, XG, MT32 or NX)
2. You can also open the Even Viewer/Debugger dialog where you can inspect the SysEx messages included in the file.

Last edited by Falcosoft on 2018-02-19, 00:31. Edited 1 time in total.

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

Reply 627 of 1699, by RetroGC

User metadata
Rank Member
Rank
Member
Falcosoft wrote:

in FSMP it's actually very easy to tell what midi system (SysEx message) a midi files uses, there's no need for implementing additional 'analysis'.
1. On the main display you can see what kind of reset SysEx message the loaded midi uses/sends last (it's the first row that starts with an icon and says either GM, GM2, GS, SC-88, XG, MT32 or NX)
2. You can also open the Even Viewer/Debugger dialog where you can inspect the SysEx messages included in the file.

I'm trying to understand: for example i've loaded a specific mt-32 midi file with syx for mt-32 hardware but the icon mark this midi file as GM.
I should see this as MT-32? I refer to the tracks from dune 2, monkey island 1 and monkey island 2 specific for mt-32 and i always see GM.
Thank you.
Aldo

My Videogames Music Channel:
https://www.youtube.com/c/RetroGamesClub

Reply 628 of 1699, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

I'm trying to understand: for example i've loaded a specific mt-32 midi file with syx for mt-32 hardware but the icon mark this midi file as GM.
I should see this as MT-32? I refer to the tracks from dune 2, monkey island 1 and monkey island 2 specific for mt-32 and i always see GM.

No. You mix up 2 different things. In your original question you referred to 'Midi files'.
So in my answer I considered only midi files.
If you send an MT-32 or any other reset SysEx messages to your synth, that does not influence/modify the reset messages included in the midi file.
So on the interface you still see black 'GM' if the file itself contains a GM reset message. I think it's logical. An example: If you send e.g. a GS reset to a synth that supports it the synth switches into GS mode. But if you start playing a file that contains an explixit GM reset message it will override your previous GS reset message. So the file will be played in GM mode. If you want to avoid this you can prevent the file to send its own reset message by disabling Main menu->SysEx Options->Enable SysEx in Files.
By the way a 'grey GM sign' means no explicit SysEx reset message is detected in the file (so it's handled as a GM file since GM is the most common denominator system and most GM midis do not include explicit GM reset messages).
But a 'black GM sign' means that the midi file contains an explicit GM reset SysEx message.

Edit:
To sum it up:

Could it be possible to implement an analysis of the midi file to verify if it contain only GS Mode or it's a full compliant GM Mode?

If the file contains GS mode reset then you will see a black 'GS' sign when you load it. If it's a full compliant GM (meaning it contains an explicit GM reset) then you will see a black 'GM' sign.
If the file contains neither you will see a grey GM sign meaning midi system is not defined in the file.

I refer to the tracks from dune 2, monkey island 1 and monkey island 2 specific for mt-32 and i always see GM

In these cases you can see a grey GM sign since these files do not contain any explicit SysEx messages since the SysEx messages (including the reset) are in a separate syx file.

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

Reply 629 of 1699, by Scali

User metadata
Rank l33t
Rank
l33t

Perhaps I can paraphrase it...
Basically MIDI is a very generic file format, and there is no way to tell for which device (or devices) the file was originally made.
If the MIDI file contains SysEx messages, you could in theory derive which manufacturer and device the SysEx messages are for, and try to assume that the file is meant for this device.

Now, if I understand correctly, the GM/GS/MS 'detection' mechanism in the player works like that:
It can detect some SysEx messages, particularly the standardized GM and GS reset messages, and also the special MS meta sequencer event.
So if it detects one or more of these messages in a MIDI file, it assumes that it is a GM, GS or MS file, depending on which type of messages it finds (and there is no reason why you can't have all types of messages in a single file, but that's another story).
Now, these messages are purely optional, and most MIDI files do not contain any SysEx messages at all. This means the player also cannot derive anything, so it can only assume that it is the most common format, which is GM. So that is the default (and it is shown in grey to indicate it hasn't actually detected that it's GM).

Now, I have a few MIDI files for my Yamaha FB-01/IBM Music Feature Card, which aren't even remotely GM (the standard wasn't invented until many years after these devices hit the market) and I'm pretty sure the player will display them as 'grey' GM files, because they don't contain any GM commands, and the SysEx commands are specific for the FB-01, so the player wouldn't know these.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 630 of 1699, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Thanks Scali,
the mechanism works exactly the way you have written. Since neither Aldo nor me is a native English speaker your help is more than welcome in situations like this 😀

So if it detects one or more of these messages in a MIDI file, it assumes that it is a GM, GS or MS file, depending on which type of messages it finds (and there is no reason why you can't have all types of messages in a single file, but that's another story).

If the synth and the player know the same messages (as in case of FSMP and its internal basmmidi synth) multiple SysEx reset messages are not problematic since the last message overrides all the previous ones. So FSMP would indicate the last reset message as the midi system of the file and the synth would be in the same mode.
E.g. in case of XG midi files the most common scenario is that they include both a GM and an XG reset message (but this order is mandatory).
But it can be problematic in cases when the synth that FSMP sends the messages to does not understand the same messages as FSMP.
So if Scali would be wicked enough to include both a GS and FB-01 reset message in a prepared midi file FSMP would indicate that the file's system is GS but the Yamaha FB-01/IBM Music Feature Card would not be in GS mode during playback time.

Last edited by Falcosoft on 2018-02-18, 23:18. Edited 1 time in total.

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

Reply 631 of 1699, by Scali

User metadata
Rank l33t
Rank
l33t

Yea, but that sort of thing is actually valid.
For example, if you are using 'studio' MIDI files, you generally have multiple MIDI devices connected to a single MIDI sequencer, each device listening to a few dedicated channels in the MIDI file.
This is a perfectly legal scenario, where you might have some GM devices, some GS devices, and some 'special' devices... And you may be sending SysEx commands to each of these devices. All recorded into a single MIDI file.

Heck, you can use MIDI for things that aren't even synths at all.
For example, I have a Marshall 6101 guitar amp, which has MIDI support. This means that I can send a MIDI command to select any of the 3 channels of the amp. I could record these commands with a sequencer, so that when I play back the MIDI file, the guitar amp switches to a certain channel at a specific position in the song automatically.
Same goes for some guitar effect processors I have: I can switch presets and control effect parameters with MIDI.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 632 of 1699, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

For example, if you are using 'studio' MIDI files, you generally have multiple MIDI devices connected, each device listening to a few dedicated channels in the MIDI file.

If the separation of devices were really channel based then the SysEx messages would be sent to all (or none) devices since SysEx messages do not contain channel information. AFAIK in these cases the separation is track based and the Midi port/Device name meta events are used to indicate which device uses which track. This way even more than 16 midi channels can be used since every device can have its own 16 channel domain.

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

Reply 633 of 1699, by Scali

User metadata
Rank l33t
Rank
l33t
Falcosoft wrote:

If the separation of devices were really channel based then the SysEx messages would be sent to all (or none) devices since SysEx messages do not contain channel information.

Yes, but each device only listens to its own SysEx commands. So if they are different devices, there is no problem.
When they are the same devices, it depends. The FB-01 for example has a 'node' number. You send a SysEx message to a specific node. So you can have multiple FB-01s connected. As long as you assign each one their own node number, you can still send SysEx messages to a specific unit only.
I don't know how many other devices have a system like this, but I would imagine the FB-01 isn't the only one, it's quite useful.

Falcosoft wrote:

AFAIK in these cases the separation is track based and the Midi port/Device name meta events are used to indicate which device uses which track. This way even more than 16 midi channels can be used since every device can have its own 16 channel domain.

Oh yes, now you're opening up a whole new can of worms 😀
Yes, there is the 'port preference' meta-event, that you can send in each MIDI track. This is a hint to make the MIDI track output on a specific MIDI port only (assuming you have multiple MIDI ports, and the devices connected to different ports).
Yes, in that case each track has its own 16 channel 'domain' on that specific port.

You can make such a mess with MIDI if you really want to 😀

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 634 of 1699, by RetroGC

User metadata
Rank Member
Rank
Member

I'll trying to explain what i was meaning in my previous message in a different way.
Unitl now i've 4 synth... to populate my youtube channel i've decided to record from roland sd-50 (untill MU2000 will arrive , then i'll use itr for xg midi).
Now, Roland SD-50 can playback music in SD Mode and in GM2 mode.
What i intended was:
with a loop, is it possible for your software to intercept all midi event in a file and: if this event are all GS standard, then inform me i've to use GS mode (i've to send a sysex manually to SD-50)
If midi file contain non GS compliant message but GM Message, inform me that i've to not use my SD-50 as GS but as GM-2.
Inform me if a midi file contain explicit GM2 message.

I think, if that a midi was full GS maybe when it was created for a game it was created having in mind roland hardware, while maybe if midi contains GM then, maybe has been used another hardware to produce that soundtrack.

Last edited by RetroGC on 2018-02-19, 20:27. Edited 1 time in total.

My Videogames Music Channel:
https://www.youtube.com/c/RetroGamesClub

Reply 635 of 1699, by RetroGC

User metadata
Rank Member
Rank
Member
Scali wrote:

You can make such a mess with MIDI if you really want to 😀

This is really too complicated, but i think instead of became creazy with external synths mixed uo together it would be easier to use cubase to obtain better results spending less time.

My Videogames Music Channel:
https://www.youtube.com/c/RetroGamesClub

Reply 636 of 1699, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

What i intended was:
with a loop, is it possible for your software to intercept all midi event in a file and: if this event are all GS standard, then inform me i've to use GS mode (i've to send a sysex manually to SD-50)
If midi file contain non GS compliant message but GM Message, inform me that i've to not use my SD-50 as GS but as GM-2.

Seriously Aldo, have you read what Scali and I have written above?

Scali wrote:

Perhaps I can paraphrase it...
Basically MIDI is a very generic file format, and there is no way to tell for which device (or devices) the file was originally made.
If the MIDI file contains SysEx messages, you could in theory derive which manufacturer and device the SysEx messages are for, and try to assume that the file is meant for this device.

It's useless to 'intercept all midi events in a loop' again. The midi file itself is already analyzed when it's loaded. You can see the result of the analysis in the Event Viewer/Debugger dialog as I have written previously.
The most important thing that you failed to understand is that there are no such things as special GS standard events that could inform you that you have to use a GS reset SysEx.
It's just the other way around. Only the GS reset SysEx included in the file can inform you that a specific midi file is intended for a GS device. All the other midi messages are the same in case of GM/GM2/GS/XG etc. So a Note On/Off, Program Change, Controller etc. message is the same in all midi systems. There are no special versions of them for GM/GS/XG. Finding the way how you should interpret them is only possible when there is an explicit SysEx reset included in the file. SysEx messages themselves are the indicators about what device/system a midi file should be played on.

Last edited by Falcosoft on 2018-02-19, 21:59. Edited 2 times in total.

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

Reply 638 of 1699, by RetroGC

User metadata
Rank Member
Rank
Member

HI,
today when i was recording trough Roland SD-50 Daggerfall Sondtrack i've noticed that a mid file retirieved a wrong time.
I'll embed this here.
Aldo

Attachments

  • Filename
    SUNNYDAY.rar
    File size
    3.19 KiB
    Downloads
    75 downloads
    File license
    Fair use/fair dealing exception

My Videogames Music Channel:
https://www.youtube.com/c/RetroGamesClub

Reply 639 of 1699, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
2:46:34 is the correct length of this midi file. Other players/midi software agree with FSMP:

sunny1.jpg
Filename
sunny1.jpg
File size
154.23 KiB
Views
1875 views
File license
Fair use/fair dealing exception

Unfortunately this midi is badly programmed. Someone had left a legitimate controller event on Track 6 at 2:46:34. FSMP has already a workaround against badly placed End of Track events, but it already caused problems for users who wanted End of Track to behave according to standards. So there is already a compatibility option to enable/disable 'Ignore End of Track for Song Length'. But I think ignoring normal controller events is more than a player should/can do to compensate problems caused by badly programmed midis.

BTW It's very easy to correct the problem. You only have to delete the problematic event on Track 6 an save the file:

sunny2.jpg
Filename
sunny2.jpg
File size
180.49 KiB
Views
1875 views
File license
Fair use/fair dealing exception

@Edit:
Here's the corrected file:

Filename
SUNNYDAY_corrected.zip
File size
3.63 KiB
Downloads
92 downloads
File license
Fair use/fair dealing exception

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