VOGONS


First post, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Falcosoft Soundfont Midi Player

midiplayer1.jpg
Filename
midiplayer1.jpg
File size
390.91 KiB
Views
41607 views
File license
Fair use/fair dealing exception

SoundFont Midi Player is a powerful midi player/router and real time midi synth combo, especially useful for Soundblaster (Live, Audigy, X-fi) users
who can load soundfonts automatically and real time. From version 2.0 Bassmidi output mode enables this feature to anyone.

Features:
---------
1. Fully configurable Midi in and out ports.
2. Real time program and bank modification on any midi channel.
3. Real Time effects on any midi channel.
4. Mute and solo on any channels.
5. Variable Tempo and Pitch during playback.
6. Virtual Piano (F1-F8 Function keys for octave change)
7. Chord mode for Virtual Piano and Midi input.
8. Send Sysex for Synth (GM, GS, XG, GM2, NX and custom)
9. Midi send and receive over Net.
10. Karaoke midi files support.
11. Bassmidi output mode.
12. Spectrum Analyzer.
13. Module files (mod,xm,s3m,it) playback support via converting.
14. Record to wave, mp3 (or any acm codecs) capability.
15. Real time soundfont loading from playlist.
16. Scale effect settings (transpose notes to different scales).
17. Supports Cakewalk/Sonar instrument definition (.ins) files.
18. Supports Sysex capturing from Midi input.
19. Supports VST effect/visualization and VSTi instrument plugins.
20. Fully supports Windows 9x, XP, 7, 8, 10 moreover Wine. (But it requires a Pentium class CPU with FPU).

Here in this topic me and James-F are trying to figure out how to build the best all-around midi player that not only useful for soundfont users but anyone.
Especially Roland HW/SC-VA and retro gaming are in the focus nowadays.
Current achievements are better compatibility with SC-55 and SC-VA including the most complete Capital Tone Fallback solution currently available.
Latest version added MT-32 support by integrated Munt VSTi.

Current development version can be downloaded from here (only exe files are included so downloading previous full version is required) :
https://falcosoft.hu/midiplayer_63_test.zip

Official release versions(x86, x64, +special Bassmidi edition) can always be downloaded from
https://falcosoft.hu/softwares.html#midiplayer

FAQ:
https://falcosoft.hu/midiplayer_howto.html

Any suggestions are welcome.

Last edited by Falcosoft on 2023-08-24, 09:18. Edited 38 times in total.

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

Reply 1 of 1689, by James-F

User metadata
Rank Oldbie
Rank
Oldbie
Falcosoft wrote:
Hi, I'm the developer of Soundfont Midi Player (including mod2midi converter http://falcosoft.hu/softwares.html). I have noticed […]
Show full quote

Hi,
I'm the developer of Soundfont Midi Player (including mod2midi converter http://falcosoft.hu/softwares.html).
I have noticed that there are many experienced users on this forum so I ask my questions here.

in GM specification (https://www.midi.org/specifications/item/tabl … lusive-messages) there is a sysex message for controlling Master Balance(F0 7F 7F 04 02 xx yy F7).
Midiplayer uses this sysex if you choose the option 'use sysex for Volume/Balance'.
But I have noticed that SC-VA and the synths I have met so far do not support this message.
1. Are there any soft synths/HW devices that actually do support GM Master Balance?
I have experimented with GS Master Pan (F0 41 10 42 12 40 00 06 xx 3A F7) and SC-VA support this sysex.
(But it's GS only and other GS implementations e.g. MS GM/GS softsynth does not support this either).
2. Are there any equivalent Master Balance/Pan sysex message in XG ?
I have tried to find one but no trace of Master Balance in XG specification.

So actually I would like to find an universal way to control Master Balance the same way Master Volume can be controlled.
(It's not problematic if the program has to send more than one kind of message since unknown messages are ignored by synths anyway)

Thanks in advance:
Zoltan Bacsko
Falcosoft

Welcome Zoltan.

Strange, SC-VA and S-YXG50 both ignore the GM Balance sysex command.
If I would have to guess, the panning is much more common on the output audio side therefor disregarded as "un-needed" at the input midi side.

Site where you can find full specs of various midi formats: http://www.jososoft.dk/yamaha/docs_specs.htm
Here is the official Yamaha XG spec (v2.0): http://www.jososoft.dk/yamaha/pdf/XGspec2-00e.pdf (page 27 for sysex commands).
Not a trace of Master Balance/Pan NONE.

May I add that I don't use your Soundfont Midi Player because it doesn't have a Stop button (the stop button is the pause button)...
It also has a bug when I start playing a file several times by clicking it rapidly the player does not change instruments but starts playing with all instruments as Piano (after GS reset).
It will skip the patch parameters like Reverb, Pan, Level, etc and start to play...
To fix this bug I have to move the playback slider a tiny bit back (rewind).

Last edited by James-F on 2016-06-14, 11:16. Edited 2 times in total.


my important / useful posts are here

Reply 2 of 1689, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

@James-F
Thanks for your fast reply. I have the official docs but they could not help.
I think I will add GS Master Pan since it works with some synths at least (e.g SC-VA).

It also has a bug when I start playing a file several times by clicking it rapidly the player does not change instruments but starts playing with all instruments as Piano (after GS reset).
It will skip the patch parameters like Reverb, Pan, Level, etc and start to play...

Unfortunately I cannot reproduce your issue. Does it occur with specific midi files or with all of them ? Moreover if you try a different output (e.g bassmidi mode) the buggy behavior still remains ?

I have uploaded a test video ( tested with version 3.4.2 32bit). What is the difference on your side ?
https://youtu.be/As1ZbQMPz-c

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

Reply 3 of 1689, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

@James-F
I have added ordinary Stop button functionality. Earlier Play button works as Play/Pause.
GS Master Pan is also added. 'Use sysex for Volume/Balance' in settings dialog has to be selected first.
This way both volume and pan works perfectly with SC-VA (it can be seen if you press the topmost 'ALL' button on SC-VA interface).
Test version: http://falcosoft.hu/midiplayer_35_test.zip

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

Reply 4 of 1689, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Here is a video of the bug:
https://www.dropbox.com/s/s5f55mt4z322rl2/Fal … layer.webm?dl=0

The bug occurs with these Warcraft 2 midi files:
http://www.mirsoft.info/gmb/music_info.php?id_file=MjYxNQ==

The bug does not occur in Bassmidi mode, only in software midi loop and real midi loop.
The bug also does not occur when using the new Stop button and clicking Play.
It occurs when the player move to the next song (Autopplay), clicking the file, or clicking the Next Song button.
BTW, I use LoopMidi to rout to SC-VA.
Using LoopBe1 it immediately detects a feedback loop with your player making it unusable, not so with other players.

Thanks for the stop button, the GS Master Pan also works.
I'll move to your player right after you fix this small bug and the feedback loop bug.

EDIT:
I analyzed you player with MidiOX and found the problem.
When I stop playing your player sends a HUGE list of every single note to Note Off, Sound Off.
If this huge list isn't finished loading and I start playing the song again there is unwanted interaction.
Other player (vanBasco) sends a short list of Channel 1-16 Notes Off, 1-16 Sounds Off, and a Reset command, NOT every single note on the keyboard.

If I use a real cable midi loop with my audio interface, your player is much MUCH slower and sometimes crashes, because with real midi there is a hardware buffer that sends the command one by one,
and it is very slow, may I remind you that Midi is OLD and SLOW. 😀
When stopping a song I have to wait 2 seconds for this long all notes Off list to go through the real midi loop.
Again (to emphasize), real midi loop is SLOW compared to a software loop, you can't send a million commands and expect snappy behavior.

I suggest taking the vanBasco approach and using Note Off and Sound Off per channel, not per note, for the sake of real midi users, and to fix this bug.
Also, sending a Reset sysex command after Stopping is important, which your player doesn't do.
vanBasco sends 1-16 Notes Off, 1-16 Sounds Off, and sysex Reset, when I click Play or Stop (right before playing a song and after stopping it).
Just copy that behavior for best results.

Last edited by James-F on 2016-05-22, 10:44. Edited 18 times in total.


my important / useful posts are here

Reply 6 of 1689, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Thanks Stiletto, it's Falcosoft not Falcomsoft BTW, my mistake. 😊
Can you please change the name of the thread to Falcosoft.

Last edited by James-F on 2016-05-22, 10:41. Edited 1 time in total.


my important / useful posts are here

Reply 9 of 1689, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Thanks for creating this topic.
@James-F:
I have tried to reproduce your exact environment but it have not triggered the bug on my system:
https://youtu.be/V8pMHUjFWXc
Windows 7 64 bit
SC-VA 1.03
Loopmidi 1.0.13
Warcraft 2: Game rip

I'm very curious what can be the difference. I suspect that is outside of MidiPlayer since the Midiplayer's interface shows the proper settings but the sent messages could not reach SC-VA in your case.
Anyway I have made a few modifications blindly that can affect the behavior on your system. It can be downloaded from the previous location:
http://falcosoft.hu/midiplayer_35_test.zip

If it could not fix your issue please, help me to find the root of the problem.
1. Please check that other normal midi output devices (e.g. MS GM/GS Softsynth) are also affected or the problem is SC-VA/loopmidi specific.
2. Please check what is happening if you choose 'No Sysex' reset type instead of GS.

Thanks in advance.

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

Reply 10 of 1689, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Yes it fixed the instruments bug.
BUT, I still see some abnormal behavior.
You have Midi-OX right?

Using the latest test build:
1. When clicking Play the player will send the instrument patch list TWICE.
2. When clicking Stop the player will send 1-16 Pitch Bend, All Notes Off, All Sounds Off, TWICE.
3. When clicking Pause it'll send the All Off list once, as it should.

The old version sends the All Off to channels 1-16 list 16 times!
This new one only 2 times, still one more than needed.

Also when clicking Play it will not send a sysex Reset command, only when double-clicking the file.
Looks like you have a mix of Play/Pause behavior that you didn't fix when adding the Stop button.
When clicking Stop from a paused or stopped state it will send the All Off list once, as it should.
But when clicking Stop when playing it will sent the All Off list Twice.

LoopBe1 still reports a feedback loop and mutes the midi connection, probably because the double sending of the same commands.

Last edited by James-F on 2016-05-22, 17:07. Edited 1 time in total.


my important / useful posts are here

Reply 11 of 1689, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

To clarify things a bit:

1. Clicking Play and double-clicking (from a Stopped state) the file should behave the same (they are not in this test build).
a. Send a sysex Reset.
b. Load instruments , ONCE.
c. Play notes.

2. Pausing the music should only send the 1-16 All Off list once.
Resuming playback should just continue playing notes.
Everything works correct here.

3. Stopping.
Should send the 1-16 All Off list ONCE, and a sysex Reset Command.


my important / useful posts are here

Reply 12 of 1689, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
OK, I will look after it.
The old version has not sent the reset messages fixed 16 times but since type 1 midi parsers have to be track based (I think track is not the most clever concept in midi) it has sent number of tracks * used channels count messages.
But it is obviously unnecessary since channels are track independent.
I think LoopBE is hopeless. I can even trigger a feedback error manually by using the virtual piano... Its threshold is ridiculously low.
https://youtu.be/cRksHMMbRX8

1. Clicking Play and double-clicking (from a Stopped state) the file should behave the same (they are not in this test build).

These 2 actions are not exactly the same. Double clicking involves midi data (file) reloading, but clicking play (in any positions including start) is not, since the file is already loaded.

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

Reply 13 of 1689, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

I agree about LoopBe, too sensitive, LoopMIDI let the user set its feedback loop time.
But if you already send All Off to all 16 channels why do you multiply it by the number of used tracks? This is completely unnecessary, once for all 16 channels is enough (saying the same as you are).

These 2 actions are not exactly the same. Double clicking involves midi data (file) reloading, but clicking play (in any positions including start) is not, since the file is already loaded.

Ah okay.
It still sends the Patch list twice when I click Play from a Stopped state.
It also sends the All Off list twice when I click Stop from a playing state.

BTW: I want to say that the Master Volume sysex is very useful, thank you for that.


my important / useful posts are here

Reply 14 of 1689, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
As I have written yes, you are right it is unnecessary. But if you look at type 1 midi file spec, all parts are built on tracks. So my parser parsed the tracks sequentially and recorded the used channels. (You have no information in midi 1 files on track independent used channels). In the new version only note off messages uses this scheme and All Sound Off/All Note Off controller messages are sent once (twice 😀 ) to all 16 channels whether they are used or not. It's still more simple and economical.
I will investigate the duplication cases.

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

Reply 15 of 1689, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Thanks!
Looking forward for the best Midi Player experience.

If it's not too cumbersome, can you please add a Reset sysex when clicking Stop.
Unless there is a reason not to...


my important / useful posts are here

Reply 16 of 1689, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

No problem, reset on stop, got it 😀 It will be the same reset type you set in the right click context menu of Reset button. So 'No Sysex' will not send Sysex, just controller messages.

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

Reply 17 of 1689, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Exactly, Thank You!
BTW, the file Orc3gm.mid is not 25 minutes long, it plays a long silence in Falcosoft player; It should be 2:20 as reported by other players.


my important / useful posts are here

Reply 18 of 1689, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Well, the length of Orc3gm.mid is debatable 😀. Actually there is a legitimate event at 25.22.76, but of course Midiplayer's calculation method should be corrected by convention.

orc3gm.jpg

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

Reply 19 of 1689, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Just for the fun GNMidi agrees that Orc3gm.mid is 25 minutes long.

orc3gm2.jpg

BTW I have added Reset on stop and modified length calculation (skips end of track meta events).
http://falcosoft.hu/midiplayer_35_test.zip

Bye

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