VOGONS


Reply 2000 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-09-28, 19:12:
Hi, Thanks for your response, Zoltan. […]
Show full quote

Hi,
Thanks for your response, Zoltan.

1. Yeah, I agree. And some files don't mark, well, anything at all. I have to manually set up 0x21 messages for it to work properly which can be a pain.. Fortunately MIDI 2.0 solves this issue, except it's almost non-existent right now and useless for retro tracks... MIDI 1.0 should've just used a separate byte for status and a second one for the channel IMO, it would've made things a lot simpler.

2. I see... May I ask for some sort of pseudo-code on the logic FSMP6 uses for determining these? I'd like to implement this functionality into my synth if you don't mind...

1. AFAIK only the Midi 2.0 protocol is ready but currently there is no Midi 2.0 equivalent of SMF files. Or have I missed some new developments on this area?
2. OK, maybe later. I have to find the relevant parts. Most likely I will give you native Pascal code 😀

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

Reply 2002 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Spesek wrote on 2024-09-28, 19:29:

1. I'm assuming that these are MIDI2 (and also according to README they are): https://github.com/jazz-soft/test-midi-files/tree/main/midi2
2. Thanks! 😁

1. Oh, yes. Midi 2.0 SMF2CLIP format has been defined since June 15 2023.
2. First here is the part from the loader that parses meta events of a track:

          TempPort := 0;
...
case metaEvent of
metaTrackName :
begin
if System.Pos('PartB', st) > 0 then TempPort := 1
else if System.Pos('PartC', st) > 0 then TempPort := 2
else if System.Pos('PartD', st) > 0 then TempPort := 3
else if (Length(st) >= 2) and (st[1] in ['B', 'C', 'D']) then
begin
st2 := Copy(st, 2, 2);
val(st2, sval, scode);
if (st[1] = 'B') and (scode = 0) then
TempPort := 1
else if (st[1] = 'C') and (scode = 0) then
TempPort := 2
else if (st[1] = 'D') and (scode = 0) then
TempPort := 3;
end;
end;
metaDeviceName:
if events^.sysexSize > 1 then
begin
pc := events^.data.sysex + 1;
setlength(DeviceName, events^.sysexSize - 1);
move(pc^, DeviceName[1], events^.sysexSize - 1);
end;
metaMIDIPort:
begin
if (events^.sysexSize > 1) then
TempPort := Byte(events^.data.sysex[1]);
end;

Then (after a track is fully loaded) there is an additional part that calculates Midi port from Midi device name (if it is present).

//falco: port calculation from DeviceName (MetaEvent 0x9)
if (track.DeviceName <> '') and (track.TempPort = 0) then
begin
st := LowerCase(Trim(track.DeviceName));
i := DeviceNameList.IndexOf(st);
if i = -1 then
track.TempPort := DeviceNameList.Add(st)
else
track.TempPort := i;
end;

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

Reply 2003 of 2176, by Roland User

User metadata
Rank Member
Rank
Member

Hi Zoltan )
Sometimes was be sadnes when understand so what you was offer not no one needs it... I before asked you do WinMM MultiPort VSTi plugin for YAMAHA Vampire because I theinked what in Russia will be created best synthesizer in world whitch will be XG Level1++ and GS SC-8820 compatible , but now I understand , what I was offer you work whitch not was be apply.
Because the way I see the project is not compatible with the way the author sees the project.
Now project Vampire in strange condition , XG Level1+ available , but GS not complette , in GS mode available only first 128 instruments of GM and all. And it looks like so and leaving.
By the way TyRUS formed from Tyros with wish specify on so what created in Russia , but If I lived in Germany , synthesizer will be named TyGER )
And in the beginning was be plan :
XG mode XG Level3+ with use live instruments
GS mode SC-8820 with use live instruments
GM2 mode GM2 with use live instruments
GM mode 128x128 that is first 128 instruments and 120 variation each instrument that is 120 version Grand Piano and next in summ 15360 instruments ) , in 121-124 banks I wanted 512 SFX instruments , 125-128 banks I wanted 512 drum kits
But , all this so and not will do.
Thank you for help )

Reply 2004 of 2176, by Roland User

User metadata
Rank Member
Rank
Member

Hi Zoltan
I have question ) not about your FSMP , but a VST plugins )
If you known please , say which VST plugin I can use with SAVIHost for transfer 24 bit sound in lossless mode ? I can not search such plugin ) this need only as interception sound from first virtual cable and sent to second or third virtual cable , but necessarily in lossless mode )
all virtual cables work in mode 48000 hz / 24 bit
I want find pass-through VST plugin , but I not known what is it called and does it exist )

Reply 2005 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t

I do not think there is such a plugin. VST specification demands floating point audio formats. So only 32 or 64 bit floating point samples can be used by both VST hosts and plugins.

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

Reply 2006 of 2176, by Roland User

User metadata
Rank Member
Rank
Member

Yes , but why if test in RMAA 6.5 per VST plugin result worsed ? Without VSTi result better , why ? Result in VST plugin as if lower then 24 bit , but higher then 16 bit , why so ?

Reply 2007 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Roland User wrote on 2024-10-03, 19:09:

Yes , but why if test in RMAA 6.5 per VST plugin result worsed ? Without VSTi result better , why ? Result in VST plugin as if lower then 24 bit , but higher then 16 bit , why so ?

I do not know. Maybe some rounding errors.
In theory all possible signed 24-bit integer values can be represented without loss in both 32-bit and 64-bit floating point formats.
But in floating point audio world normalized sample values are in the -1.0/+1.0 range. During conversion integer values are divided to get the floating point sample values and floating point sample values are multiplied to get the integer sample values. So when converting from 24-bit integer audio format to 32-bit floating point audio format and then back to 24-bit integer format some rounding errors can occur.

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

Reply 2008 of 2176, by Roland User

User metadata
Rank Member
Rank
Member

Here and the question arises , from floating point in whitch format do convert from 32/64 floating point to 16 bit or from 32/64 floating point to 24 bit ? As work VST especially SAVIHost )
As you can see , have select buffer , samplerate , device , but absetnt select bit depth

Reply 2009 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Roland User wrote on 2024-10-03, 20:16:

Here and the question arises , from floating point in whitch format do convert from 32/64 floating point to 16 bit or from 32/64 floating point to 24 bit ? As work VST especially SAVIHost )
As you can see , have select buffer , samplerate , device , but absetnt select bit depth

SAVIHost always uses 32-bit floating point format since it is mandatory according to VST specification. 64-bit floating point format is only optional (not many plugins support it) and it is supported only by a special version of VSTHost (named dvsthost) from the creator of SAVIHost:
https://www.hermannseib.com/english/vsthost.htm

The attachment vsthost_double.png is no longer available

BTW, if the plugin does not support 64-bit floating point format (and Virtual Sound Canvas, S-YXG50 etc. do NOT support it) then it does not make much sense to use the double precision version of VSTHost since it results in another conversion from 32-bit float to 64-bit double...

PS:
Do not take it as offense but none of these has anything to do with my software. If you want to talk about SAVIHost or VST internals in general there are more appropriate forums for it:
https://forum.hermannseib.com/
https://www.kvraudio.com/forum/
https://hydrogenaud.io

Last edited by Falcosoft on 2024-10-03, 22:00. Edited 1 time in total.

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

Reply 2010 of 2176, by Roland User

User metadata
Rank Member
Rank
Member

All good ) I understand and that's why firstly said what this little off top and not FSMP topic ) I easy wanted learn as do routing per VSTi ) for example , you can see what I use some audiocables , and when I want record only MIID or only Wave or Mixed signal , me need open Windows sound properties , but this not comfortly , and I try find comfortably method ) now this record per highlighted device and switch in acon plugin signal from other cables and export signal to Recording cable ) but this have little losses , that's why I try as do managament comfortably )
Thank you )

Reply 2011 of 2176, by Meowdori

User metadata
Rank Newbie
Rank
Newbie

Hey, it's been a long, long while since i last wrote here, but today an interesting case of inconsistent playback between few different MIDI players caught my attention. I can't seem to be able to pinpoint the cause, so any help solving this issue would be appreciated.

One of the Yamaha XG demo songs (see the attachment) plays pretty much the same in FalcoSoft MIDI Player, in MIDITrail and in old Winamp 2.91, with one exception being TMIDI.

The actual differences i've spotted, together with their timestamps are as follows:

- [1:03] - Drum fills sound different (bongos) in TMIDI (starting from that moment, they repeat several times throughout the track)
- [2:32] - Different and stronger snare is only audible in TMIDI

Does anyone have any ideas on what might be causing this inconsistent playback behaviour and which one is the correct sounding of the track?

Reply 2012 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Meowdori wrote on 2024-10-04, 17:37:
Hey, it's been a long, long while since i last wrote here, but today an interesting case of inconsistent playback between few di […]
Show full quote

Hey, it's been a long, long while since i last wrote here, but today an interesting case of inconsistent playback between few different MIDI players caught my attention. I can't seem to be able to pinpoint the cause, so any help solving this issue would be appreciated.

One of the Yamaha XG demo songs (see the attachment) plays pretty much the same in FalcoSoft MIDI Player, in MIDITrail and in old Winamp 2.91, with one exception being TMIDI.

The actual differences i've spotted, together with their timestamps are as follows:

- [1:03] - Drum fills sound different (bongos) in TMIDI (starting from that moment, they repeat several times throughout the track)
- [2:32] - Different and stronger snare is only audible in TMIDI

Does anyone have any ideas on what might be causing this inconsistent playback behaviour and which one is the correct sounding of the track?

Hi,
I used S-YXG50 VSTi for the investigation since its user interface helps to understand what is happening.
When you use FSMP you can also use its 'Midi Channels' visualization dialog to follow my explanation.
Your Midi file uses 2 drum channels: 10 and 11. Channel 10 is set to Rock Kit and Channel 11 to Analog Kit by the Midi file.
When your timestamped parts start you can notice on both FSMP's Midi Channel display and on S-YXG50's channel display that both channel 10 and channel 11 are active.
Contrary, when you use TMIDI you can notice from the start that it falsely identifies channel 11 as a melodic channel -> 'Acoustic Guitar (steel) -BK 127',
and when your timestamped parts start you can notice on S-YXG50's channel display that only channel 10 is active, you cannot see any activity on channel 11.
Yet, the notes on channel 11 are audible but they are sent by TMIDI to channel 10 !
It seems that TMIDI sends all drum related notes to channel 10. But the problem is with this approach is that channel 10 and 11 use different drum kits, so when channel 11 notes are sent to channel 10 by TMIDI then you get different sounds.
The bongos are actually there in all players (channel 11), but they are more quiet in case of Analog Kit than in case of Rock Kit.
The same is true for the 'stronger snare'.
So all in all, the other players play this song properly and TMIDI has a strange (and wrong) approach when playing multiple drum channels.

PS:
Maybe the idea behind TMIDI's behavior is that in case of Midi devices that cannot use more than 1 drum channel (only channel 10 as defined by GM) you can still hear at least drum sounds even in case of multi-drum channel XG files. Maybe this is true also for multi-drum channel GS files when played by TMIDI. I do not know since I have not tested this.

Now, I'm thinking about adding TMIDI's 'wrong' implementation as an optional feature to FSMP 😀
This way drum channel constrained devices like Sound Blaster HW SF2 synths could play multi-drum channel XG/GS Midi files somewhat better.

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

Reply 2013 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t

Here is an experimental 32-bit test version (only the midiplayer.exe file is included so you need the full version and you have to overwrite the exe file with this).
There is a new comaptibility option in 'Main menu -> Compatibility Settings -> Play all GS/XG/GM2 drums on Ch.10'. If you enable this FSMP will play your file (and other multi-drum channel XG files) the same way as TMIDI. The setting also works for multi-drum channel GS and GM2 files.
Of course the default state is disabled.

The attachment MidiPlayer_65_x86_test.zip is no longer available

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

Reply 2014 of 2176, by Roland User

User metadata
Rank Member
Rank
Member

As far as I know TMIDI was be created for use synthesizr TMIDITY or something same ) if I'm not mistaken and as I known , this synthesizer have only one drum channel because this synthesizer was be created for play MIDI with SoundFonts and there if see standard only one drums channel , and and therefore this player remaping all drum c hannels to 10 channel )
But S-YXG50 does not fit well for see what's happening ) for this better does fit BASSMIDI SoundFont player ) there clearly can see as use channels and what selected on each channel )

Reply 2015 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Roland User wrote on 2024-10-05, 22:55:

As far as I know TMIDI was be created for use synthesizr TMIDITY or something same ) if I'm not mistaken and as I known , this synthesizer have only one drum channel because this synthesizer was be created for play MIDI with SoundFonts and there if see standard only one drums channel , and and therefore this player remaping all drum c hannels to 10 channel )
But S-YXG50 does not fit well for see what's happening ) for this better does fit BASSMIDI SoundFont player ) there clearly can see as use channels and what selected on each channel )

Hi,
TMIDI has nothing to do with Timidity. The 'T' in TMIDI is for Tom Grandgent. That is "Tom's Midi Player" 😀
https://www.grandgent.com/tom/projects/tmidi/

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

Reply 2016 of 2176, by Roland User

User metadata
Rank Member
Rank
Member

Then this error in TMIDI , although and very funny ) because )
Maybe this linked with so , what TIMIDI player was be created only for GS MIDI and use with Roland SoundCanvas family synthesizers )
For esxample in this two drums channels
Although it works strangely if play this melody , TMIDI select two channels as drums ) this player see what need two drums channels , but both channel play only on standard for GM / SF2 drum channel )

Last edited by Roland User on 2024-10-06, 08:31. Edited 1 time in total.

Reply 2017 of 2176, by Trelokk

User metadata
Rank Member
Rank
Member

I'm currently experimenting with the BassMIDI VSTi plugin in combination with the VSTi MIDI Synth and the new GeneralUser GS v2.0 soundfont (which seems to be a lot better than previous versions). Are there any special settings I should set in the VSTi menu to optimize playback? I have already found out it wouldn't work at all in games like Doom unless I check "Preload soundfont". Anything else?

Reply 2018 of 2176, by Falcosoft

User metadata
Rank l33t
Rank
l33t
Trelokk wrote on 2024-10-06, 08:29:

I'm currently experimenting with the BassMIDI VSTi plugin in combination with the VSTi MIDI Synth and the new GeneralUser GS v2.0 soundfont (which seems to be a lot better than previous versions). Are there any special settings I should set in the VSTi menu to optimize playback? I have already found out it wouldn't work at all in games like Doom unless I check "Preload soundfont". Anything else?

Hi,
1. According to Christian Collins you have to enable the 'Do not emulate SB hardware limits' option for GeneralUser GS v2.0 soundfont.
2. No, you do not need to enable the 'Preload soundfont' option. You must have something strange on your system if it works only with this option enabled.
Here is a test video that shows how VST Midi driver + BassMIDI VSTi plugin + GeneralUser GS v2.0 soundfont work together perfectly without enabling 'Preload soundfont' option when playing Doom:
https://youtu.be/lhRgy0b9vGo

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

Reply 2019 of 2176, by Trelokk

User metadata
Rank Member
Rank
Member

Wonderful! I adjusted the settings according to your video (thanks for that, btw), i.e. without the preload option, and that worked as well. Your BassMidi VSTi is really neat since like this it's not necessary to install something like VirtualMIDISynth if you already have your VST MIDI Synth working. Normally I'm using the S-YXG5o, but this new soundfont release made me curious, especially after watching Collins' thorough comparison video to showcase the changes.

In the documentation, Collins also recommends to do some fine-tuning in the reverb/chorus settings (Reverb lvl 60, Chorus lvl 43, Chorus type 3). I'll try that as well.

*EDIT*
1) GeneralUser GS documentation states:

Beginning with BASSMIDI 2.4.14.33, Sound Blaster emulation is disabled by default.

Your VSTi is currently (still) using 2.4.14.32. Does that mean that once you update the DLL, "Do not emulate SB hardware limits" won't have to be set any more? (I guess the flag will just be preset in the settings menu, then.)

2) I updated BassMidi VSTi from v2.3 to v2.5 and now it seems I cannot save settings any more when using the soundfont. I am loading the sf2 as default soundfont, start adjusting the sliders and suddenly the setup window closes, with an error message saying "Cannot save plugin settings for BassMidiVsti!". When I reload, everything is back to default, no soundfont selected. The crash basically already happens after selecting the soundfont itself, I don't have to adjust any setting. The window will just close after a few seconds without doing anything else.

Last edited by Trelokk on 2024-10-06, 14:20. Edited 1 time in total.