VOGONS


Reply 60 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Falco,

Starting playing notes before the patch list is done creates a stutter and sometimes skips these notes when using real hardware.
Now I have a Roland SC-55 MKII sound module (everyone got one here), and using a real midi cable with my professional audio interface Midi Out.
This is terrible, practically all songs cut the first few notes with hardware.
This does not happen with a software midi Loop because software is MUCH faster than a real midi cables and hardware.

Maybe the player should have an option to wait till all the patch list is done (including Pan, Volume, Reverb, Chorus, etc..) before starting playing?
* Yes I realize this will break Midi type 1 specification...

Notes before patch list done..png
Filename
Notes before patch list done..png
File size
49.21 KiB
Views
2798 views
File license
Fair use/fair dealing exception


my important / useful posts are here

Reply 61 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,

Maybe the player should have an option to wait till all the patch list is done (including Pan, Volume, Reverb, Chorus, etc..) before starting playing?

I have added a new compatibility option you should try it. Main menu->Compatibility -> Set missing defaults. You should try to disable this. This will reduce the sent messages at start and can only result in problems in rare situations.

I have posted a message to your Roland SC-VA topic about the Capital Tone Fallback problem and about a possible solution by a new test version of Midiplayer.
Re: Heads Up: Roland Sound Canvas VA VSTi Plugin!

The new test version location is the same as in that post ( and before).

[Edit]
1.Also you can try to disable 'GS' reset type to 'No Sysxes' for testing. Maybe the problem can be related to slow reset sysex processing on the real hardware. Now the player only waits 5 ms after sent sysex.
And you should also try disabling 'Send sysex for volume/balance' option since this option also sends additional 3 sysex messages at start.

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

Reply 62 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Capital Tone Fallback:

Channel 10 Drums should fall to Patch capital not only Bank capital (0), (not what happens now).
Patch: 0-7 = 0, 8-15 = 8, 16-23 = 16, etc...
Bank (MSB) is always 0 (capital) on channel 10, no matter what.

Instrument patches that have a variation should fall to Sub-Capital (next lowest variation) also.
Bank (CC#0) 0-7 = 7, 8-15 = 15, 16-31 = 16, 32-47 = 32, etc.. (this is not what is currently happening).
Only instruments that do NOT have a variation fall to capital.

Last edited by James-F on 2016-06-02, 17:45. Edited 1 time in total.


my important / useful posts are here

Reply 63 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

"Set missing defaults" does not help this, SC-55 skips first notes.
I disables "Reset" sysex, no change, skips first notes.
This is important to fix.

EDIT:
More detail.

"GS Rest" Double click file.
Slow reverb response, skip notes.
* Before playback - Sysex reset, 1-16 piano list.

"GS Reset" Play from Stopped state (Stop -> Play).
Everything is OK.
* Before playback - no sysex, no 1-16 piano.

"No SysEx" Double click file.
Reverb OK, skip notes.
* Before playback - no sysex, 1-16 instrument list.

"No SysEx" Play from Stopped state (Stop -> Play).
Everything is OK.
* Before playback - no sysex, no 1-16 piano.

So the slow reverb related to the SysEx Reset, and the skipped notes related to the 1-16 instrument list at the beginning.
The slow reverb appears to be only when Sysex Reset and 1-16 Piano list are TOGETHER.

Audio samples:
With GS Reset, the SC-55 Reverb starts later, and skips first notes (Double Click).
Without GS Reset, Reverb OK, skips first notes (double click).

Attachments

  • Filename
    SC-55 Canyon.7z
    File size
    882.45 KiB
    Downloads
    105 downloads
    File comment
    How SC-55 MKII sounds when playing this file with Midi Player v3.5.1 beta.
    File license
    Fair use/fair dealing exception
  • Filename
    canyon.7z
    File size
    12.2 KiB
    Downloads
    128 downloads
    File comment
    Canyon.mid
    File license
    Fair use/fair dealing exception


my important / useful posts are here

Reply 64 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,

Channel 10 Drums should fall to Patch capital not only Bank capital (0), (not what happens now).

Ok, I have not implemented Drums fallback at all so far.

Instrument patches that have a variation should fall to Sub-Capital (next lowest variation) also.

Are you sure ? I don't think it is correct at all. I have not met any synths that support CTF and behave like this.
E.g. Bassmidi, S=YXG50, MS Softsynth, SC-VA (in 8820 mode) do not work this way. I think you have been deceived by the effect of successive bank changes.
When you change from a known bank/program combination to an unknown one the last known/used remain in effect. But when you change from a clean/reset state to an unknown bank/program combination then NOT the next lowest variation can be heard but the first (bank 0/program x) combination.
I believe that your HW works that way, but I do not think it is consistent with the others.
So I don't think it would be a good idea to implement CTF this way.

Set missing defaults" does not help this, SC-55 skips first notes.

Ok, I have uploaded a test version ( this is really a test one) that can be used to find the sweet spot how many delay would be necessary for your HW.
Midiplayer is used regularly with Technics HW and real hardware cables and do not show this problem.
You can alter the 'Delay between sysex chunks' value in 'Send custom Sysex' dialog. Now it influences all the sysex and instrument reset delays. I do not think this will be the final place for this global value to set but it is good enough for this experiment.

Download location is the usual.

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

Reply 65 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

The whole point of CTF is to make the SC-55 MKII (or later) behave like SC-55 MK1.

http://cdn.roland.com/assets/media/pdf/SC-55_OM.pdf
This is the manual of SC-55 MK1, on page 42 - 44 it clearly describes CTF and Sub-CTF.
After SC-55 MK1 (1994), Roland stopped implementing this feature because Yamaha patented it.
This is useful mainly in games from that era, not so much in music.

Yes, the stop delay fixes the skipped notes.
Without sysex reset, I set it to at least 50 (100 preferably) to not skip notes.
With GS reset, I need to go to 500 to wait for the reverb, although it's not needed, might just disable GS reset and use "no sysex".
It is a good thing that you use this delay after the sysex, and after the 1-16 instrument stop list, the delay is needed even without sysex.

Also, the SC-55 will ignore the sysex message if there are too many events at once (like playing music), or the interval between GS reset messages is too small.
Sometimes it will ignore the sysex between songs if I skip between songs too fast, maybe because there are too many Stop events between songs BEFORE the sysex reset.
This is another trait of slower hardware compared to the software.
I don't think a synth unit is designed to receive a Reset message that often or when playing music; maybe once per session/song from stopped state, at least on the older SC-55.


my important / useful posts are here

Reply 66 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

The whole point of CTF is to make the SC-55 MKII (or later) behave like SC-55 MK1.

Then clearly our aims are different and using 'CTF' in both cases is ambiguous.
For me the most important aspect of implementing a 'CTF like' feature is to prevent some synths to stay silent (e.g. MS Soft Synth) or play wrong capital (SC-VA in SC55 mode - piano) in case of invalid bank/program combinations. Moreover I would like to get the most consistent behavior and my main reference point is not SC-55 but Bassmidi and SB sound cards since for a long time these are the 'primary' output of the program.
So I have misguided you by calling this feature CTF, clearly I would like to get a different behavior than you.

Yes, the stop delay fixes the skipped notes, so everything is okay now,

Ok, Then maybe I will set a default 50 ms delay after the initialization parts, this does not hurt anyone I think.
I will set this global delay value adjustable and persistent. Where do you think the best place would be for this ? Or can it stay where it is now ?

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

Reply 67 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

50 still skips notes, but 100 is perfectly fine and the difference is negligible.
Many midi programs like Midi-OX use 60ms delay as default every time F7 is sent at the end of a sysex message.
The note skipping is because of the 1-16 instrument reset list at the beginning, not because of sysex, but I am glad that it also applies to this.
Where it's now is fine because it's an advanced option anyway.
Also make this setting remember when I close FSMP (Falcosoft midi player).

CTF.
Alright, your CTF solution is definitely much better than none at all.
Sub-CTF is useless indeed, no known game or music use that.

http://www.mirsoft.info/gmb/music_info.php?id_file=MTA5Nw==
One of the worst cases of corrupt midi with wrong MSB (CC#0) and LSB (CC#32), which your CTF solution fixes.
Try Music1.mid to Music3.mid.

Music3.mid still has a bug with SC-VA, but the hardware SC-55 shows the correct instrument channels 9, 11, 12 with your CTF fix.
When MSB is 0, 8, 16, 24 etc (has variation), BUT the LSB is anything but 0-4, SC-VA has not instrument.
EDIT: SC-55 doesn't care about LSB CC#32, therefor no bug.

Last edited by James-F on 2016-06-03, 08:09. Edited 3 times in total.


my important / useful posts are here

Reply 68 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
Ok, I have made the delay value persistent.
Download location is the same.

Bye.

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

Reply 69 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Thank you.
Crash when closing, if anything but "no Sysex" is selected.

Can we do something about random/wrong LSB (CC#32)?
I have created a custom instrument map for the SC-55 with only CC#32 = 0, nothing else.
When MSB is 0, 8, 16, 24 etc (has variation), BUT the LSB is anything but 0-4, SC-VA has not instrument.

I want mention that even without a reset command "no Sysex", the player behaves very well because of the 1-16 instrument reset list before playback.
This is a great feature unique to Falcosoft Midi Player and I'm grateful for that.


my important / useful posts are here

Reply 70 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
New test version on the usual location. I think the crash was due to the reset was too delayed at program close.

Can we do something about random/wrong LSB (CC#32)?

I hope we can, but I need a more detailed explanation about what the problem exactly is.

[EDIT]

When MSB is 0, 8, 16, 24 etc (has variation), BUT the LSB is anything but 0-4, SC-VA has not instrument.

Ok, with this addition I understand the problem now.

Last edited by Falcosoft on 2016-06-03, 08:14. Edited 1 time in total.

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

Reply 71 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

I'm using the "Roland MS softsynth GS" instrument map.
When MSB is 0, 8, 16, 24 etc (has variation according to .ins map), BUT the LSB is anything but 0-4, SC-VA has not instrument.
SC-55 doesn't care about LSB CC#32 (SC-88 and later do care), therefor no bug.

EDIT: I would force LSB CC#32 to 0 if it is anything but 0-4, which should always select what is in SC-VA Map Mode.

SC-VA LSB CC#32:
0: What you select in Options.
1: SC-55
2: SC-88
3: SC-88Pro
4: SC-8820


my important / useful posts are here

Reply 72 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

The most obvious solution (without modifying program code) is to write an ins file that addresses the proper banks as MSB+LSB (BankSelMethod = 0 intead of 1 like in most GS based .ins files). This way any bank where LSB != 0 would be considered invalid so CTF would happen.

PS.
BankSelMethod = 0
old Bank[1] -> new Bank[128];
old Bank[2] -> new Bank[256]
and so on...

[EDIT]
But I have a better idea... If BankSelMethod =1 style ins file is selected then always zero LSB.
This would require only one line of code modification/

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

Reply 73 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

Yes, BankSelMethod = 0 solved the problem, but created a new one.
With LSB always on 0, Midi Player always selects 0: What you select in Options in SC-VA.
So midi files that use other LSB 1-4 will not play right.
On the second hand, I should not use instrument map if I play specifically designed midi files for the sc-88 or sc-88pro with CTF.

EDIT:
It would be nice if you provide the "style.ins" file with CC#32 0-4 Maps that the SC-VA (or SC-8820 hardware) understands.

EDIT2:
If you'd also consider Drum track Patch fallback (not Bank), I would replace Midi-OX with Midi Player for all my CTF needs. 😀
BTW. Drums can be on all track not only on channel 10, but with Midi-OX I'm limited to channel 10.
A proper instrument map should let Drum Patch fallback on any channel.


my important / useful posts are here

Reply 74 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
Patch[128]=Roland GS Var #01
Patch[129]=Roland GS Var #01
Patch[130]=Roland GS Var #01
...
Patch[256]=Roland GS Var #02
Patch[257]=Roland GS Var #02
Patch[258]=Roland GS Var #02

This way you can cover the 0..xx LSB values with BankSelMethod = 0.

On the second hand, I should not use instrument map if I play specifically designed midi files for the sc-88 or sc-88pro with CTF.

I really do not understand this.

If you'd also consider Drum track Patch fallback (not Bank), I would replace Midi-OX with Midi Player for all my CTF needs.

It's on my horizon. 😀

BTW:
sate of crash on exit ?

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

Reply 75 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

I have an SC-8850 ins file, maybe this can be used as a base.

Attachments

  • Filename
    Roland_SC-8850.zip
    File size
    37.49 KiB
    Downloads
    98 downloads
    File license
    Fair use/fair dealing exception

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

Reply 76 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

No crash on exit.

I don't understand this: Patch[128]=Roland GS Var #01.
But I can explain in language.

If CC#32 != 0-4, CC#32 = 0.
If CC#32 = 0, CC#32 = 0.
If CC#32 = 1, CC#32 = 1.
If CC#32 = 2, CC#32 = 2.
If CC#32 = 3, CC#32 = 3.
If CC#32 = 4, CC#32 = 4.


my important / useful posts are here

Reply 77 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,

II don't understand this: Patch[128]=Roland GS Var #01. But I can explain in language. […]
Show full quote

II don't understand this: Patch[128]=Roland GS Var #01.
But I can explain in language.

If CC#32 != 0-4, CC#32 = 0.
If CC#32 = 0, CC#32 = 0.
If CC#32 = 1, CC#32 = 1.
If CC#32 = 2, CC#32 = 2.
If CC#32 = 3, CC#32 = 3.
If CC#32 = 4, CC#32 = 4.

That's exactly what my previous suggestion does if you modify your ins file that way.
E.g. Original Example ins file ( at the end of the file)
.Instrument Definitions

[Roland GS]
BankSelMethod=1
Patch[0]=Roland GS Capital Tones
Patch[1]=Roland GS Var #01
Patch[2]=Roland GS Var #02
Patch[3]=Roland GS Var #03
Patch[4]=Roland GS Var #04
Patch[5]=Roland GS Var #05
Patch[6]=Roland GS Var #06
Patch[7]=Roland GS Var #07
Patch[8]=Roland GS Var #08
Patch[9]=Roland GS Var #09
Patch[16]=Roland GS Var #16
Patch[24]=Roland GS Var #24
Patch[32]=Roland GS Var #32

This should be converted to the form I have suggested:

[Roland GS]
BankSelMethod=0
Patch[0]=Roland GS Capital Tones ;covers MSB 0 LSB 0
Patch[1]=Roland GS Capital Tones ;covers MSB 0 LSB 1
Patch[2]=Roland GS Capital Tones ;covers MSB 0 LSB 2
....
Patch[128]=Roland GS Var #01 ;covers MSB 1 LSB 0
Patch[129]=Roland GS Var #01 ;covers MSB 1 LSB 1
Patch[130]=Roland GS Var #01 ;covers MSB 1 LSB 2
....
Patch[256]=Roland GS Var #02 ;covers MSB 2 LSB 0
Patch[257]=Roland GS Var #02 ;covers MSB 2 LSB 1
Patch[258]=Roland GS Var #02 ;covers MSB 2 LSB 2
....
And so on...

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

Reply 78 of 1687, by James-F

User metadata
Rank Oldbie
Rank
Oldbie

EDIT:
Answering you next post, with my previous post... 😊

I see, with BankSelMethod=0 it's always capital.
Maybe you'll find a better solution than to modify a huge list of instruments?

Last edited by James-F on 2016-06-03, 09:44. Edited 2 times in total.


my important / useful posts are here

Reply 79 of 1687, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Yeah, right but at the present (without the code modification I have mentioned) the fallback will be MSB:0 LSB:0. (And not MSB:x LSB:0 as would be ideal)

[Edit]

Maybe you'll find a better solution than to modify a huge list of instruments?

I'm almost sure that .ins files for all Roland devices can be downloaded from the net.
Otherwise maybe from code. I'm thinking about it.

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