VOGONS


Reply 20 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Thank you.
This test build working great, except this:

When I change an instrument on a channel (by mistake or not), the new instrument stays even when I click Stop then Play again.
I expect the instrument changes to reset completely when I click Stop, instead they initialize only when I double-click the file.
This is okay if I Pause the song to keep the new instrument settings, but not when Stopping.
Even when I click the Reset button, the new instrument stays, I can't get rid of it.
If I have a long playlist I have to find the file way down to double-click it, or click next song then previous song, this is not intuitive at all for new users.

Cheers. 😀


my important / useful posts are here

Reply 21 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
This behavior is by design. Actually patch and bank settings changes are modified in the memory image of the file.
Reasons:
1. This way if a channel switches instruments your choice for the instrument remembered.
2. Rewind/Forward do not reset Patch/Bank settings.
3. I you choose 'Repeat one' you do not have to reapply all your customizations when the song restarts.
4. This way you can save file with changed patch map. This is very important e.g for Technics synth users
with many not well documented patches (NX sound).
More info:
http://technicskn7000.com/index.php?cID=2353& … 9737223#msg2368
and
http://falcosoft.hu/midiplayer_howto.html#a13
5. Actually users likes it better this way. Most users even think that it is not intuitive that modified channel controls
such as modulation/volume/reverb do not work the same way. They can be if they choose 'Force manual mode' button.
6. Actually I like this way of working so I don't think I would like to modify it.
Solutions for you:
1. As you have written reload the file. If you don't want to double click the file in the playlist, just press a Next/Prev sequence.
2. You can change back the instrument to the original 😀

Last edited by Falcosoft on 2016-05-23, 07:39. Edited 5 times in total.

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

Reply 23 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
Here are the results of the investigation about duplicate sending of program/bank messages.
This is not an unintended bug/error but I have forgotten the reason why I had implemented this way.
The main reason for sending these messages are midi files that do not define all channel programs/banks, or do not define any programs at all! ( I have midi files that contain only note messages and expects program 0 Grand Piano as default).
If you use midi files like warcraft songs that define (nearly) all programs on all channel then they can appear as duplicates.
It is a workaround for synths that do not support sysex resets. This way Midiplayer can make sure all programs are set to default.
If the synth does not respond to sysex resets properly (e.g. YMF262 OPL3 emulator, SB Live with some drivers) or wrong sysex type is selected then the programs/banks become undefined. More precisely are defined by previous midi songs/events. So instead of Grand piano the midi starts to play using e.g a guitar.
To prevent this potential false behavior Midiplayer sends the default/best known program/bank change events to all channels as part of the reset process.

I hope I could make myself clear.
So there is a reason for doing this and the only drawback I know of is LoopBe. But I have tried without the reset routines and LoopBE still drops feedback errors when you Rewind/Forward or press Reset button. I have even found files that trigger loopback error by simple playback.

What do you think ? Is there a better all around solution ?

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

Reply 24 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

I see two kinds of behaviors at playback.

1. When a file is double-clicked the player will:
a. Send sysex Reset
b. PC: 000 (piano) and MSB+LSB 000 to all 16 channels.
c. Player will send the instrument list and start playing notes.
* For some reason it starts sending notes while still loading the instrument list, or as soon at the instrument is loaded it starts playing its notes, while still loading other instruments.
I guess it is okay if there are no time problems.

notes while loading list.png
Filename
notes while loading list.png
File size
62.88 KiB
Views
5668 views
File license
Fair use/fair dealing exception

2. When clicking Play/Unpause (song already in memory with 1-16 Piano):
a. Player sends an instrument list (no notes yet).
b. Player sends another (second) instrument list and starts playing notes.
* It starts sending notes while still loading the SECOND instrument list.

With a song that doesn't specify and Patches/Banks:
If you already sent all Piano 1-16 list (b) when double-clicking it (song now in memory with 1-16 Piano), even if you have a Channel with undefined Patch, it is already a Piano.
You load 1-16 Piano when changing songs anyway, so I still don't see the need for a second instrument list even with a Patch-less midi.

The duplicated Stop list is definitely unnecessary.


my important / useful posts are here

Reply 25 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie
Falcosoft wrote:
The main reason for sending these messages are midi files that do not define all channel programs/banks, or do not define any pr […]
Show full quote

The main reason for sending these messages are midi files that do not define all channel programs/banks, or do not define any programs at all! ( I have midi files that contain only note messages and expects program 0 Grand Piano as default).
If the synth does not respond to sysex resets properly (e.g. YMF262 OPL3 emulator, SB Live with some drivers) or wrong sysex type is selected then the programs/banks become undefined.
More precisely are defined by previous midi songs/events. So instead of Grand piano the midi starts to play using e.g a guitar.
To prevent this potential false behavior Midiplayer sends the default/best known program/bank change events to all channels as part of the reset process.

This is not true with the current build of your player, double-clicking a different song send a 1-16 Piano instrument list even before the Patch/Instrument list.
I created a midi file without defining a Patch just notes, I disabled sysex in SAVIHost, and selected Guitar before starting the song.
It works as Piano in any case.

I really don't see the need for a double Patch list even with sysex disabled.


my important / useful posts are here

Reply 26 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
1.

1. When a file is double-clicked the player will: a. Send sysex Reset b. PC: 000 (piano) and MSB+LSB 000 to all 16 channels. c. […]
Show full quote

1. When a file is double-clicked the player will:
a. Send sysex Reset
b. PC: 000 (piano) and MSB+LSB 000 to all 16 channels.
c. Player will send the instrument list and start playing notes.
* For some reason it starts sending notes while still loading the instrument list, or as soon at the instrument is loaded it starts playing its notes, while still loading other instruments.

a. and b.: This is the reset part sent independently from the file.
c. and *: This is defined by the file, no reordering happens on the player's side. As I have written type 1 midi files are organized by tracks. So when you want to play e.g. the first 10 ms of the song you should iterate through all the tracks and search for events that are within this 10 ms time-window. If you have a file that defines instruments per track at the beginning (typical for type 1 midi files) then you will get this pattern. E.g track 1 sets channel 1 program 0 at 5ms and starts playing notes at 7 ms, track 2 sets channel 2 program 1 at 5ms starts playing notes at 7 ms, you will get:
Ch:1 Program 0
Ch:1 Note on
Ch:2 Program 1
Ch:2 Note on

This original loading process is what I have investigated and this does what it is intended to do.

2.
I have not investigated this part so far but on my side it seems to work differently.
a. Simply pressing Unpause after a Pause does not send instrument list at all ( unless there are program change events at that time slice).
b. After you press the Stop button and you press Start there is duplicate sending problem, I will correct this.

So summing it up I think we agree:
1. At the start the initial loading of all default instrument is necessary and remains the part of the reset process. (I have only written about this part in my previous post, I think there was a misunderstanding here).
2. The duplicate loading of instrument list after a stop/start sequence is a problem that should be corrected. (I have not handled this so far)

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

Reply 27 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Ok, new test version:
http://falcosoft.hu/midiplayer_35_test.zip

1. Duplicate sending of instruments fixed.
2. If Sysex reset is set, sysex is also sent when the program exits.

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

Reply 28 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Excellent! Thank you.
I wanted to comment about the program exit, but you already noticed that.

BTW,
Here is a nice OPL3 Midi Driver: Windows, Doom, Apogee OPL3 Synthesizer.
Can you suggest a good soundfont to try? Even though the SC-VA probably the most balanced.

EDIT:
When the file is already playing, when I click Stop the player send All notes All sounds Off list Twice.
This can also be fixed, unless there is a reason for that.

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


my important / useful posts are here

Reply 29 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Found a Bug.
Probably related to the midi length you tweaked.

http://midkar.com/MidiStudio/Japan/index.html
Download the first midi song "A Cosmos At Midnight", I can't play it, time shows ???.
Same for "Follow Dreams" and "Graduation".

These midi's are the most complex midi songs I have ever seen speaking in terms of sysex commands and instrument customization.
They utilize almost every corner of unusual aspects of the GS standard, very good for bug testing.
They also sound far beyond anything I previously heard on midi, each song is a masterpiece in sound and musicality.


my important / useful posts are here

Reply 30 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Found a Bug.
Probably related to the midi length you tweaked.
http://midkar.com/MidiStudio/Japan/index.html

This is not a bug. Complexity is not a problem but these files contain simply invalid Sysex messages so the files are not valid midi files.
You can Use GNMIDI (http://www.gnmidi.com/) -> 'Analyse' -> 'Check and repair midi' menu option to repair them.

Before: (Notice that there is no mandatory 0xF7 closing byte at event 13 in sysex)

buggymidi.jpg
Filename
buggymidi.jpg
File size
193.62 KiB
Views
5609 views
File license
Fair use/fair dealing exception

After using GNMIDI's repair:

goodmidi.jpg
Filename
goodmidi.jpg
File size
197.47 KiB
Views
5609 views
File license
Fair use/fair dealing exception

My parser is rather strict by default. I can modify the parser to skip error checking and play invalid files also if you want.

When the file is already playing, when I click Stop the player send All notes All sounds Off list Twice.

I have uploaded a new version that fixes duplicate note off/sound off sending.
Download location is the same as before.

Can you suggest a good soundfont to try? Even though the SC-VA probably the most balanced.

I agree about SC-VA.
Shameless Plug: Have you tried http://falcosoft.hu/reality_gmgs_falcomod.zip 😀

[EDIT]
I have uploaded another version that skips sysex error checking and plays invalid files. I don't know if there are any drawbacks ( maybe it could hang some devices).
Download location is the same as before.

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

Reply 31 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Thank you.

I don't think wrong sysex can do harm to any synth, at worst it will ignore it.
Besides, these files were written on a SC-88 hardware so the wrong sysex probably was responsive and fulfilled its function, and they have been played on countless synths till now without problems.
Most players are not that strict nor they should be, but I see you already let it pass wrong sysex, so that is fine.

I was looking for the reality Soundfont after seeing you use it in your videos, but couldn't find it.
I'll give it a go, the guitars sound is great.

I think SF Midi Player v3.5 is ready for the masses (maybe I'll give it a torture test at the weekend as a final check).
I had pleasure helping you improve SF Midi Player, anything from here is personal requests and suggestions,I hope you are open for them. 😀


my important / useful posts are here

Reply 32 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
Yes, you are very helpful and I thank you for all your feedback.
Of course I'm looking forward to your future suggestions. My lonely development process needs a knowledgeable experienced user and good tester like you.
OK, I think I will release v3.5 at the weekend.

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

Reply 33 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

A convenient feature missing from Falcosoft Midi Player:

Start from first note: If this option is enabled, vanBasco's Player will skip any silence at the beginning of a MIDI file and begin playback immediately with the first note.

http://leejacksonaudio.lbjackson.com/html/download.html
This official Duke Nukem 3D midi has couple of seconds of silence at the beginning, the above feature makes the player more responsive with less silence between songs.
If you decide you want to implement this feature, please consider making it switchable (on/off).
I think it's the last useful feature that vanBasco has that your player doesn't (yet [hopefully]).

A big UI cosmetic and convenience request:

Is it possible to make the player height adjustable so that the playlist is longer?
Dragging a file into the playlist from windows browser always puts it last, not in the position I dragged it into.
Dragging the file inside the playlist is a pain because the playlist doesn't scroll while I drag;
I have to use the keyboard arrows up/down while holding the mouse left button, and the playlist is short, only 11 visible places.
This aspect could be much improved for convenience and playlist organization.

I believe that adding a song and putting it right after the current playing one should be an easy and intuitive task.
1. By dragging it in from windows to playlist.
2. By dragging it inside the playlist.
3. My playlists are LONG so scrolling with 11 visible spaces feels very constraining, like reading a book through a keyhole.


my important / useful posts are here

Reply 34 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
Most of the requested features are added.
1. Playlist context menu -> Start from first Note
2. Height is adjustable (make sure main menu -> Appearance -> Show Border is selected. You can drag the bottom of the player/playlist).
3. Dragging items to playlist places the items right where you drop them. If you drag/drop items outside of playlist (e.g caption/display area) they are placed at the bottom of the list just like before.
4. While dragging an item inside the playlist the playlist scrolls if you move your mouse outside of the list (top/bottom). There are 2 speeds. The faster triggers when you move your mouse further than 80 px. (There are some jerky movements, I know about them)

Please, test the new features. Many changes so bugs are inevitable.
Download location is the same as before.

Bye

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

Reply 35 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

This is a long post related primarily to Playlist improvement and bugs.

The "Start from first Note" works perfectly (can you share what you did?).
The Playlist is an improvement but still has many things to work out.

File highlighting in Midi Player playlist is following the mouse movement, it should not do that.
Highlighting a file should be done only by clicking it.
I can't select several files from the playlist to delete them, I have to go one-by-one or hold the delete key.
I also have to be careful not to move the mouse while deleting so that I don't del a different file by mistake.
Clicking a single file then clicking a different file while holding shift should select all the files between them, Ctrl for individual file selection.

1. Basically the playlist should behave like Windows Explorer when set to "Details" view type.
Winamp, AIMP, Foobar, "any music player" etc.. all their playlists behave like windows explorer when selecting (click, shift, ctrl) and deleting files (organizing).
Dragging files from windows explorer to playlist is working properly, you nailed that.

2. It would be nice that that player finishes playing the song even if it was already deleted from the playlist.
With AIMP (winamp), I usually empty the playlist while still listening to the last song, and adding new songs to a clean playlist.
If the playlist is empty, the song will finish playing and stop the player.
If files are added, the player will finish the playing song and start playing from the new first song.

Currently, the player stops and sends a reset command when I select "Remove All".
It also starts playing automatically when adding songs to an empty playlist, it should not do that, the proper behavior is explained above in #2.
"Auto play (next song)" and "Start playing when adding files to empty playlist" are two different things.

3. I think that "Repeat Playlist" should be an option (user switchable), and not the default like it currently is.
The default should be to stop the playlist at the last song and the "Repeat Playlist" should be the name of the switchable option, similar to "Repeat One".

4. Multimedia Key (on my keyboard) "Stop" is not working yet since you implemented a stop button in the player.
Play and Next/Previous are working.

The above are standard behavior of playlists across many players, Foobar 2000, AIMP, ITunes, etc...

Do you keep a "Fixed, Added" list to show when v3.5 released?
It'll be huge! v3.5 is already miles ahead of v3.4.2 in terms of functionality. 😀
I hope these are not hard to fix/implement and I'm not making your life harder that it should.

PS.
I have a SC-55 MKII (hardware) on the way.
Real midi interfaces, slow hardware buffers, real cables, all will reveal more because they are not ideal like a software midi loop and a VST plug-in.
Looking forward to this.


my important / useful posts are here

Reply 36 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie
1.png
Filename
1.png
File size
59.21 KiB
Views
5531 views
File license
Fair use/fair dealing exception

Drag a file from the playlist to windows explorer and release the mouse left button in windows explorer.
Now move the mouse into the Playlist and click on an empty space at the bottom of the playlist.

BTW, you can subscribe to this thread so that you'll receive e-mail when anyone posts here.


my important / useful posts are here

Reply 37 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
First the last:
Access violation fixed.

Multimedia Key (on my keyboard) "Stop" is not working yet since you implemented a stop button in the player.
Play and Next/Previous are working.

Strange. I have re-cheked and re-tested it and it is working perfectly with my USB MM keyboard.
The key that is implemented as stop has the value VK_MEDIA_STOP: 0xB2 in the specification. Maybe some other application has already reserved the stop hotkey on your system.

File highlighting in Midi Player playlist is following the mouse movement, it should not do that.
Highlighting a file should be done only by clicking it.

May I say this is opinion based 😀. Some argue this is a useful hint. See:

Why do you want to go against the platform's standard way of doing things? That blue rectangle is a very important hint to the user. It tells him what would be selected if he clicked there and then. – Marjan Venema Mar 1 '13 at 9:11

http://stackoverflow.com/questions/15153442/t … e-rectangle-how

Playlist is a standard Windows Listview control in report mode. Maybe it was not the perfect choice for a playlist component, but the decision was made long time ago and now it is deeply integrated.
I don't think I will change its internal working. It would be too much trouble without real benefit.

There are other tips in your list that definitely should be implemented in the future. Others are arguable simply because it's not worth the efforts (like the highlight) .

But the important thing is ( as you have also suggested) that for v3.5 so many changes are enough. So no new features till next version, only bug fixes.
So if you still would like to help report only bug fixes for v3.5. (e.g we should continue to investigate what could cause the non-functioning Stop hotkey on your system)
Thanks in advance.

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

Reply 38 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie
Falcosoft wrote:

Maybe some other application has already reserved the stop hotkey on your system.

Nope.
They cannot be reserved individually if I'm not mistaken.

Falcosoft wrote:

May I say this is opinion based 😀. Some argue this is a useful hint. See:

DT02q.png
In the link you provided, I see two kinds of high-lighting :
1. Clicked (Hard)
2. Non-clicked, only hovered above with mouse (Soft).

The person in the link you provided asks to how to disable the soft highlighting which is harmless and unimportant.
Your midi player not only highlights the file when the mouse over it, but also selects it, simultaneously.
* There is no difference between clicking the file once and hovering above it in your player, but the two are completely different.

There is a significant difference between the soft highlighting when hovering above the list with the mouse, and hard highlight by clicking the file.
With hard highlighting (selected) you can preform actions on the file like deleting it or clicking Enter to play it.
With soft highlighting (mouse hovering) you can't do any actions on the file, it's only an indicator.
Windows explorer works like this.

But your player uses soft highlighting (mouse hovering) as hard highlighting (clicking).
When I click on a file the hard Highlighting should stay on the file not move with the mouse.
Moving with the arrows is always hard highlighting, but mouse hovering without clicking is always soft highlighting.

This IS a bug, not a feature request.

Falcosoft wrote:

So no new features till next version, only bug fixes.
So if you still would like to help report only bug fixes for v3.5.
Thanks in advance.

Alright.
I still get the access violation bug, and the non responsive multimedia stop.
Have you re-uploaded?

Are you still open for suggestion in the next build?


my important / useful posts are here

Reply 39 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,

Nope.
They cannot be reserved individually if I'm not mistaken.

I'm afraid you are wrong. Otherwise how can MM Hotkeys be global ?
Try this: Start one instance of Midiplayer. Then start another. Notice which is which. Now make the second instance active. Use the play/pause hotkey (you have said it's working).
The hotkey still affects only the first instance, since it has reserved it as global. In the same way if an application reserved any keys on your system midiplayer cannot override this reservation later.

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