Author Topic: How to correctly set DSP effects through midi messages?  (Read 1679 times)

0 Members and 1 Guest are viewing this topic.

DaffyDuck1

  • Guest
How to correctly set DSP effects through midi messages?
« on: August 20, 2022, 05:14:18 AM »
I am inspecting factory styles and trying to recreate them including all effects. For some reason I am having all sort of weird problems, especially with electric guitars where they heavily use a bunch of effects. My guitar recreation either sounds like the effects are not 100% accurate, or sometimes the sound just gets muted(?) completely.

When I load the style midi into cakewalk and play it, it recreates the effects correctly, though it changes the event order I noticed plus adds its own. Still, I tried capturing all the events cakewalk is sending to a keyboard and simply resending them manually but my effects are again not accurate. I feel like I am missing some key piece of knowledge. Maybe events are supposed to be sent at some specific delays? I tried to add 300ms pause after every event and it made no difference.

I don't know if any of you are into this low level stuff, but here is an example of guitar distortion setup events on channel 15 extracted from a style 80sPowerRock, that for some reason when sent manually completely mute the guitar instead. Maybe someone can tell what is happening.

F0 7E 7F 09 01 F7 //GM on
F0 43 10 4C 00 00 7E 00 F7 //XG on

BE 07 4F //Controller Volume (coarse): 79
BE 0A 2A //Controller Pan position (coarse): 42
BE 0B 62 //Controller Expression (coarse): 98
BE 5B 00 //Controller Reverb Level: 0
BE 5E 7F //Controller Celeste Level: 127

F0 43 10 4C 08 0E 11 00 F7 //Dry level: 0

BE 00 08 //Controller Bank Select: 8
BE 20 08 //Controller Bank Select (fine): 8
CE 03 //Program change 3

F0 43 10 4C 02 01 58 09 F7 //DSP1 Reverb: 9
F0 43 10 4C 02 01 59 05 F7 //DSP1 Chorus: 5
F0 43 10 4C 02 01 5A 01 F7 //DSP1 Connection: system

As I understand the last event actually applies DSP params, and after that the guitar gets fully muted.

If this is not the best forum for this, maybe you can suggest where nerdy people that might be into this kind of stuff can be found on the internet?

Thanks.
« Last Edit: August 20, 2022, 05:15:37 AM by DaffyDuck1 »
 

Re: How to correctly set DSP effects through midi messages?
« Reply #1 on: August 20, 2022, 09:06:15 PM »
Hi!

I'm responding based on the all-mighty Data List, but haven't tested on the keyboard. Things to at least try:
- Just in case, I would do the program change first, and then set the parameters for the instrument, as some defaults might get applied when changing instruments...

- You are NOT setting the actual variation effect (AKA DSP1), which is set through:
   F0 43 10 4C 02 01 40 HH LL F7, where HH is the MSB and LL the LSB of the effect type

- You might want to set the corresponding parameters using:
   F0 43 10 4C 02 01 nn ph pl F7 (nn is 42..54/70..75, and ph pl are the MSB and LSB of the parameter)

For more information, refer to the aforementioned PSR-SX900 Data List manual (available on Yamaha's website), and specifically to the pages 104-105 for the parameter tables for the variation effect (DSP1), and page 117 for the actual SysEx that needs to be sent to set the parameters to the desired values (you use the XG Parameter Changes SysEx, and the previous tables provide all the individual parameters that can be set...)

I hope this helps. Regards!

Offline pjd

Re: How to correctly set DSP effects through midi messages?
« Reply #2 on: August 21, 2022, 12:25:54 AM »
Hi --

I do this quite often and work in Cakewalk SONAR, too. Here is a typical message sequence taken from a recent project:

F0 7E 7F 09 01 F7                   GM Reset
F0 43 10 4C 00 00 7E 00 F7          XG System ON
F0 43 10 4C 02 01 00 01 25 F7       Reverb Type
F0 43 10 4C 02 01 20 42 08 F7       Chorus Type

F0 43 10 4C 02 01 40 60 21 F7       Variation type (Small Stereo Overdrive)
F0 43 10 4C 02 01 5A 01 F7          Variation SYSTEM
F0 43 10 4C 02 01 56 40 F7          Variation return
F0 43 10 4C 02 01 58 14 F7          Variation send to reverb
F0 43 10 4C 02 01 59 00 F7          Variation send to chorus

F0 43 10 4C 02 01 70 07 F7          Variation Parameter 11 (Speaker Type: Soft)
F0 43 10 4C 02 01 4A 00 46 F7       Variation Parameter 5  (Dist Drive: 7.0)

I send these SysEx messages in auto-send SysEx banks at the very beginning. I let the Cakewalk track inspector handle the channel volume, pan, patch, chorus level and reverb level for each part. Cakewalk seems to keep everything in the correct logical order and I haven't run into timing issues.

The effect type MUST be selected before changing effect parameters.  Otherwise, you can change effect parameters in any order.

Hope this helps -- pj



DaffyDuck1

  • Guest
Re: How to correctly set DSP effects through midi messages?
« Reply #4 on: August 21, 2022, 04:40:39 AM »
Awesome, thank you for such detailed answers, let me digest this and give it another try...

Is there a reliable way to reset all effects and voices to some default state between attempts? I feel like when I am messing with it some changes don't reset back and have some unpredicted effect on future attempts and it all becomes one big random mess. I am switching styles on a keyboard back and forth between attempts, it seems to be resetting most of the keyboard parameters but still sometimes some weird carry over happens. The only reset midi message I found in the manual is [Bn 79 00] which resets the controller on that channel but it doesn't reset everything.
« Last Edit: August 21, 2022, 04:51:09 AM by DaffyDuck1 »
 

Offline DerekA

Re: How to correctly set DSP effects through midi messages?
« Reply #5 on: August 21, 2022, 11:51:10 AM »
I would just like to note that with the sx series and Genos, Yamaha renamed things a little.

They no longer call them dsp1, dsp2 etc. They are now insertion effect 1, insertion effect 2,:etc. The XG variation effect is also now shown seperately on the mixer as variation effect. As before though, the variation effect can only apply to song and style parts.
Genos
 

Re: How to correctly set DSP effects through midi messages?
« Reply #6 on: August 21, 2022, 09:41:15 PM »
Is there a reliable way to reset all effects and voices to some default state between attempts?

What I do is have a default Registration Bank, with a "reset" registration, which sets all parameters in the keyboard to well known values I like. This is a registration where I saved all saveable parameters, so if anything which shouldn't change changed, it will get reset.

I store this registration bank in the root folder of the internal disk (user area), so that it is always readily available and easy to access.

Also, regarding your original question and the comment by DerekA, I would suggest to use one of the Insertion Effects instead of the Variation Effect, as this allows you more control on which effects are applied to each voice (there is only one Variation Effect, which gets applied to all the voices when used as a system effect like you do).

Hope this is helpful! Regards!
 

Offline pjd

Re: How to correctly set DSP effects through midi messages?
« Reply #7 on: August 21, 2022, 10:26:22 PM »
I rely on GM Reset and XG System On messages. As far as songs and styles are concerned, these messages should reset everything in the tone generator and effects system.

By the way, when using the Variation system effect, the variation send level (CC#94) must be set for any part needing the variation system effect. I didn’t see a CC#94 message in your original post. The variation send level determines how much of the part signal is sent to the variation effect and must be non-zero for any part using the effect. If the send level is zero, you won’t hear the effect because it won’t be applied.

Hope this helps — pj
« Last Edit: August 21, 2022, 10:31:18 PM by pjd »
 
The following users thanked this post: TheBitfiddler

DaffyDuck1

  • Guest
Re: How to correctly set DSP effects through midi messages?
« Reply #8 on: August 25, 2022, 07:24:09 AM »
By the way, when using the Variation system effect, the variation send level (CC#94) must be set for any part needing the variation system effect. I didn’t see a CC#94 message in your original post. The variation send level determines how much of the part signal is sent to the variation effect and must be non-zero for any part using the effect. If the send level is zero, you won’t hear the effect because it won’t be applied.

Hope this helps — pj
Yes, that ultimately solved it! I did have that message (in my case "BE 5E 7F", labeled by my midi event inspector as "Controller Celeste Level: 127"), but it was sent before the effect was switched to system, so it did nothing as it only affects the system effect levels not insertion (which are the default after GM reset).

Interestingly this event order came straight from the factory style midi, meaning the event order they put in their own styles is incorrect and you have to reshuffle them on your own, that's pretty odd. I wonder if there are any guides on which events should go first, but that probably would be too much to ask...

So my initial problem with the voice being completely muted was caused by a few factors:
- I was setting the dry level to 0 which muted the original voice and left only the effects, so since the effect wasn't working there was nothing else to hear
- I did miss the effect selection message which should go first F0 43 10 4C 02 01 40 HH LL F7 (thank you andres_fprado)
- I had "variation effect send level" message, which ultimately sets how much of the selected effect you are hearing, before the effect was switched from the default insertion to system, so my effect level was at 0 (thank you pj)

Thank you guys, and those blog posts were super helpful, yamaha manual doesn't go into any details on any of this stuff.
 

Offline pjd

Re: How to correctly set DSP effects through midi messages?
« Reply #9 on: August 26, 2022, 07:11:43 PM »
There was a time when XG was the new shiny object and Yamaha went out of their way to teach people about it. The effects architecture and SysEx are part of XG.

Jørgen has some of these old documents on his site:

http://www.jososoft.dk/yamaha/docs_specs.htm

I also find old MU-series manuals (!) to be helpful.

Glad you've worked things out -- pj