Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: foo_midi (foobar2000 v2.0) (Read 26181 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Re: foo_midi (foobar2000 v2.0)

Reply #75
Apologies for bothering you, but I feel like a dummy.

If my memory serves me right, in the previous mantainer's emulator I could set the path of the MIDI soundfont I wished to use from the config page.
I am unable to do so in this version, and I can't figure out if that feature exists at all now. Can anyone clarify, and if it's implemented, help me set it up?

Re: foo_midi (foobar2000 v2.0)

Reply #76
Apologies for bothering you, but I feel like a dummy.

If my memory serves me right, in the previous mantainer's emulator I could set the path of the MIDI soundfont I wished to use from the config page.
I am unable to do so in this version, and I can't figure out if that feature exists at all now. Can anyone clarify, and if it's implemented, help me set it up?
The old Advanced settings are still available but a new sub-page of the main settings page called "Paths" groups all paths in a more user friendly way.

Re: foo_midi (foobar2000 v2.0)

Reply #77
v2.8.4.0, 2023-06-26, Beat the Drum
  • New: Added detection of an extra percussion channel in Standard MIDI Files (*.MID). When meta data messages of type Text, Track Name or Instrument Name containing the word "drum" preceed the first message for channel 16 it will be used as an extra percussion channel in addition to channel 10.
  • New: A new Info tag "MIDI_EXTRA_PERCUSSION_CHANNEL" contains the (1-based) number of the channel that acts as an additional percussion channel (only channel 16 for now).
Thank you for adding this feature, and for going the extra mile by adding a dedicated info tag. Works fine as intended. 😃👍

Re: foo_midi (foobar2000 v2.0)

Reply #78
The new %__MIDI_PLAYER% field got me thinking about a totally pie-in-the-sky idea: is it even remotely feasible to specify which synthesizers to use on a per-midi basis? I'm not sure why I'm asking because it seems kind of absurd and difficult to implement something like that for a bunch of reasons, probably creating more problems than it solves, and not even sure how it could work since MIDI format doesn't contain standard metadata fields so you'd have to use External Tags or something for the component to read from, but it would be a useful feature. I've held off on ReplayGain scanning midis because of course the volume varies significantly depending on device, so no good if the device is subject to change. Otherwise I already know what synthesizer I'm using 100% of the time and exposing it in the interface with %__MIDI_PLAYER% is strictly for show. Hm, I am thinking aloud here mainly I guess!

Also, I don't know how recent this change is since I only just noticed, but I appreciate the %__midi_type% field defaulting to "GM" for midis that don't contain reset messages - before it was just blank. I think it's a good change personally. I'm glad work on this component is continuing one way or another!

Re: foo_midi (foobar2000 v2.0)

Reply #79
The new %__MIDI_PLAYER% field got me thinking about a totally pie-in-the-sky idea: is it even remotely feasible to specify which synthesizers to use on a per-midi basis?

I added the info field because foo_midi did already override the selected MIDI player:

* If a saved preset is found, the player in the preset will be used.
* If an .sflist is found in the same directory as the MIDI file BASSMIDI will be used.
* If MT-32 messages our found SuperMunt will be used

I thought it would be helpful to have a way to know which player was actually being used  during playback in case any of the conditions above were met.

Re: foo_midi (foobar2000 v2.0)

Reply #80
Oh, I didn't know that was possible! In that case yes it's definitely useful. Is there more information about setting presets somewhere? I can't find any instructions in the documentation. I basically only use Secret Sauce and S-YXG50 - it'd be great if midis with XG resets automatically played with the latter, if that's possible.

Re: foo_midi (foobar2000 v2.0)

Reply #81
Oh, I didn't know that was possible! In that case yes it's definitely useful. Is there more information about setting presets somewhere? I can't find any instructions in the documentation. I basically only use Secret Sauce and S-YXG50 - it'd be great if midis with XG resets automatically played with the latter, if that's possible.
Someone else currently maintains the wiki. I haven't had any time to look at it. You set the settings you like, right-click the track and select "Utilities / Save synthesizer preset".
I'll see if how I can best expand the rules to use Secret Sauce with XG files.

Re: foo_midi (foobar2000 v2.0)

Reply #82
I changed from Secret Sauce -> S-YXG50 VSTi, saved synthesizer preset on a midi, changed back to Secret Sauce then played the midi, expecting it to play with S-YXG50, but it still plays with Secret Sauce SCVA. Tried this with Emu de MIDI too, but the same outcome. So it ostensibly is not working for me.

Where are the preset configurations stored btw? And is there some means to check whether or not a midi has one assigned? Perhaps it'd be good information to make visible under Properties->Details, so it could be exposed as a column. Quite excited about this idea though~

Re: foo_midi (foobar2000 v2.0)

Reply #83
Hi, I noticed that loop detection seems to be broken in several EMIDI files. For example, this file was previously detected as having a loop in previous versions, but it broke somewhere around 2.8.3.

Re: foo_midi (foobar2000 v2.0)

Reply #84
Hi, I noticed that loop detection seems to be broken in several EMIDI files. For example, this file was previously detected as having a loop in previous versions, but it broke somewhere around 2.8.3.

Thanks for the report. I'll look into it.

Re: foo_midi (foobar2000 v2.0)

Reply #85
Where are the preset configurations stored btw? And is there some means to check whether or not a midi has one assigned? Perhaps it'd be good information to make visible under Properties->Details, so it could be exposed as a column. Quite excited about this idea though~

Presets used to be stored as meta tags but along the way code crept in that converted meta tags into info tags; I'm not sure why.

I'll have a good look at the code and see what I can do about XG.

Re: foo_midi (foobar2000 v2.0)

Reply #86
I changed from Secret Sauce -> S-YXG50 VSTi, saved synthesizer preset on a midi, changed back to Secret Sauce then played the midi, expecting it to play with S-YXG50, but it still plays with Secret Sauce SCVA. Tried this with Emu de MIDI too, but the same outcome. So it ostensibly is not working for me.

Where are the preset configurations stored btw? And is there some means to check whether or not a midi has one assigned? Perhaps it'd be good information to make visible under Properties->Details, so it could be exposed as a column. Quite excited about this idea though~

Preset saving was broken. It's fixed in the next version. The preset is stored as MIDI_PRESET tag.

As a convenience I added a separate configuration setting that, when enabled, will use Secret Sauce whenever an XG file is played.

Re: foo_midi (foobar2000 v2.0)

Reply #87
Hi, I noticed that loop detection seems to be broken in several EMIDI files. For example, this file was previously detected as having a loop in previous versions, but it broke somewhere around 2.8.3.

Fixed in the next version. I switched the order of the detection algorithms, There's an EMIDI control change in the file that clears all previously detected loop markers. The markers that matter for this file are XMI markers.

BTW. great track. Reminds me of some of The Matrix songs.

Re: foo_midi (foobar2000 v2.0)

Reply #88
I changed from Secret Sauce -> S-YXG50 VSTi, saved synthesizer preset on a midi, changed back to Secret Sauce then played the midi, expecting it to play with S-YXG50, but it still plays with Secret Sauce SCVA. Tried this with Emu de MIDI too, but the same outcome. So it ostensibly is not working for me.

Where are the preset configurations stored btw? And is there some means to check whether or not a midi has one assigned? Perhaps it'd be good information to make visible under Properties->Details, so it could be exposed as a column. Quite excited about this idea though~

Preset saving was broken. It's fixed in the next version. The preset is stored as MIDI_PRESET tag.

As a convenience I added a separate configuration setting that, when enabled, will use Secret Sauce whenever an XG file is played.
Strike that, I meant "use S-YXG50 whenever an XG file is played."

 

Re: foo_midi (foobar2000 v2.0)

Reply #89
v2.8.5.0, 2023-07-23

* New: Added a configuration option to always use Super Munt when playing an MT-32 file. Default is on.
* New: Added an configuration option to always use a VSTi to play an XG file. Default is off.
  * Don't forget to specify the path name of the VSTi in the Advanced preferences.
* Bug Fix: Saving MIDI presets was broken.
* Bug Fix: Loop detection was broken for some files.

Download from GitHub or the foobar2000 Components Repository.

Automatic update from within foobar2000 still does not work...

Re: foo_midi (foobar2000 v2.0)

Reply #90
The XG mode is working great!
I am now remembering how this VSTi has low polyphony by default. It's possible to change the polyphony setting in its configuration but the setting doesn't stick. Wonder if there's some workaround here?

Also preset saving is working (tags are updated) but the specified presets aren't being read on playback. I have some GM midis set to use the S-YXG50 but they are still playing with my default device. Have I missed something?

bug

Reply #91
2.8.5.0 bug
the following settings:
Quote
playback = never loop
playback = never loop, 1s
other = never loop
other = never loop, 1s
actually act like "loop and fade when detected"

BTW the new version with bassmidi is much better than with fluidsynth.

Re: foo_midi (foobar2000 v2.0)

Reply #92
2.8.5.0 bug
the following settings:
Quote
playback = never loop
playback = never loop, 1s
other = never loop
other = never loop, 1s
actually act like "loop and fade when detected"

BTW the new version with bassmidi is much better than with fluidsynth.
I initially stayed away from the looping code because it's hard to understand. Now that I've written foo_input_pmd from scratch with looping I'l spend some time on it.

Actually, the next version will bring back FluidSynth in addition to BASS.

Re: foo_midi (foobar2000 v2.0)

Reply #93
v2.9.0.0, 2023-08-02, Revenge of the FluidSynth

* New: Added FluidSynth player again.
  * It can be selected after setting the path to the directory that contains the FluidSynth libraries. You can download FluidSynth [here](https://github.com/FluidSynth/fluidsynth/releases). Make sure you download the version that has the same CPU architecture as foobar2000 (x64 or x86).
* New: Added .XFM as an alternative file extension for XMI files.
* Improved: Added FluidSynth settings to preferences page.
* Improved: MIDI standard detection
  * Some XG files where not recognized as such if the file contained anyy GS messages first.
  * GM 2 detection.
* Changed: Renamed dynamic info tags *bassmidi_voices* and *bassmidi_voices_max* to *midi_active_voices* and *midi_peak_voices*. The FluidSynth player also sets those tags while playing.
* Bug Fix: An old bug in the XMI parser prevent some XMI files from loading..

Download from GitHub or the foobar2000 Components Repository.

Automatic update from within foobar2000 still does not work...

Re: foo_midi (foobar2000 v2.0)

Reply #94
v2.9.0.0, 2023-08-02, Revenge of the FluidSynth

* New: Added FluidSynth player again.
  * It can be selected after setting the path to the directory that contains the FluidSynth libraries. You can download FluidSynth [here](https://github.com/FluidSynth/fluidsynth/releases). Make sure you download the version that has the same CPU architecture as foobar2000 (x64 or x86).
* New: Added .XFM as an alternative file extension for XMI files.
* Improved: Added FluidSynth settings to preferences page.
* Improved: MIDI standard detection
  * Some XG files where not recognized as such if the file contained anyy GS messages first.
  * GM 2 detection.
* Changed: Renamed dynamic info tags *bassmidi_voices* and *bassmidi_voices_max* to *midi_active_voices* and *midi_peak_voices*. The FluidSynth player also sets those tags while playing.
* Bug Fix: An old bug in the XMI parser prevent some XMI files from loading..

Download from GitHub or the foobar2000 Components Repository.

Automatic update from within foobar2000 still does not work...
hi Pqyt,
thx for the update.




Re: foo_midi (foobar2000 v2.0)

Reply #98
You're probably using a higher DPI setting.
Yes, you're correct. Perhaps make the options dialog screen scrollable? No worries though, at least to me, it's just a minor issue. :)

Re: foo_midi (foobar2000 v2.0)

Reply #99
Hey, I was wondering if it'd be much of a bother to implement a custom decay time on the never loop option for playback and conversion, instead of the fixed 1 second.
I have several midis that aren't meant to loop or don't end in a fade-out, almost all of which have the track end coincide with the last note played. A single second is never enough decay time for the instruments to fade to silence, it's especially jarring when ending on a cymbal hit on the drum track.