News:

PSR Tutorial Forum is Now Back to Life!

Main Menu

Using Your Windows PC/Laptop As A Sound Expansion Module

Started by RoyB, October 04, 2020, 08:17:20 AM

Previous topic - Next topic

RoyB

Now in full retirement and with time available, this is a project that I've been looking at for some time and I've now made some significant progress in the last couple of weeks.

So this is the idea:  Be able to use soundfont (SF2) files and VSTi plugins stored on your PC in a similar way as you would as if they were regular expansion voices - that is, be able to select/deselect those instruments on demand from your Yamaha Arranger keyboard, mix them with the internal keyboard voices and styles, and save them in registrations.

I know that some users have imported sampled soundfont files to create expansion packs (using YEM) and then loaded them into the expansion memory on the Arranger. The problem with this is that many good sound samples are large in size and you are not able to store many in the limited expansion memory available in your Arranger. My objective of using your PC as the sound expansion module overcomes this limitation, and enables you to use your existing soundfonts and VSTi plugins directly.

My idea stems from the V3 Yammex Sound Expansion module, where the additional sound samples are stored on an external module connected via MIDI to the keyboard. A set of small .vce voice files are then stored in the user area on the keyboard or on a USB stick. These small .vce files are basically small midi files that contain the sound program information (MSB, LSB, Prog No. etc) and other SY*** messages required to communicate the necessary instructions to the Yammex module. These voice files can be selected on demand in the normal way on the keyboard for the RH and LH parts, and can be saved in registrations. The Yammex module contains the necessary software to read these instructions and play the selected voices on the Yammex.

My idea is to mimic this arrangement using a Windows PC as the external sound module.

So these are my objectives:

(1) Use my Windows PC as an external sound module, using my collection of soundfont SF2 files and VSTi plugins as if they were regular expansion voices - that is, be able to select/deselect those instruments on demand from your Arranger keyboard, mix them with the internal keyboard voices and styles, and save them in registrations. selecting them on-demand as described above [NOTE: they would not be able to be used in styles, only for playing the RH and LH keyboard parts on MIDI channels 1-4] ;

(2) Nothing to be re-configured on the Arranger;

(3) Nothing to be loaded into the Arranger Expansion Memory, and YEM would not be needed to create anything;

(4) No additional hardware would be required (other than MIDI and audio connection cables);

(5) It would cost nothing (or only a minimal cost) to do it (other than the costs of the soundfonts and VSTi plugins).

The encouraging progress I have made to date indicates that these are all possible and I am well on the way to achieving a result.


My project consists of 3 parts:

PART 1: USING SOUNDFONT (SF2) FILES AS EXPANSION INSTRUMENTS.
This involves creating a small Yamaha .vce voice file for each instrument and storing these on a USB stick plugged into the keyboard or in the internal user area. These are then selected/deselected on demand like the other keyboard voices for any or all of the RH and LH parts, and could be saved in registrations. When selected, these play the appropriate soundfont instruments stored on the PC.

I have been able to get this to work and have demonstrated the idea does work. There are still a few issues to sort out and some further work to do, but I have got the concept to work and have made good progress. The way I am setting it up means that I would be able to have up to 2000 expansion soundfont instruments for selection on the keyboard!


PART 2: USING VSTi PLUGINS AS EXPANSION INSTRUMENTS (WITHOUT USING A DAW).
Unfortunately, I have concluded that this would need to work in a more limited way compared to using soundfont files.

The keyboard selects a voice by sending bank change (MSB and LSB) and program change (Prog) MIDI messages simultaneously. All 3 parameters (MSB, LSB and Prog) are needed to select a voice. Unfortunately, as far as I can ascertain, most VSTi plugins do not recognise or utilise MSB and LSB MIDI messages. And even those that do implement MSB and LSB do not apparently do so in a consistent way. Therefore, it does not seem that it is possible to use the keyboard to select a specific VSTi plugin preset. In any case, many VSTi plugins are large and can take a while to load, so would not be suitable for rapid on-demand loading while playing.

But I do have an idea to use and select VSTi plugins in a more limited way to make them usable directly from the Arranger. Basically, this would require pre-loading a limited number of VSTi plugin presets (up to 16) on the PC ready for use (the set of plugins that are pre-loaded can be changed). These 16 pre-loaded VSTi instruments would then be instantly available for use as required by the keyboard from 16 user .vce voice files on the keyboard USB stick (or stored in the user area).  Unfortunately, due to limitations in how I can do the MIDI data mapping, only 1 of the 16 VSTi's can be selected at a time, and it is playable on only 1 keyboard part (e.g. RH1). 

I have been able to get this idea to work, and have managed to play and change between pre-loaded Kontakt, SampleTank and other VSTi plugins (including some very nice piano VSTi's) while playing on the keyboard.


PART 3: USING BOTH SOUNDFONT AND VSTi PLUGINS AS EXPANSION INSTRUMENTS (WITHOUT USING A DAW).
This is essentially a combination of Parts 1 and 2, but is a rather more complicated setup, and involves two stages of MIDI data mapping in the way I am doing it. Also, the number of pre-loaded VST's that would be available is reduced to 12. Nevertheless, this would allow internal Keyboard voices, soundfont instruments and VSTi instruments to be used together. The soundfont instruments would still be available for all parts (RH and LH) whilst the VSTi instruments are on RH1 only.

I have been able to get this to work, but there is rather more work to do with this setup. I also have a few more issues to sort out with this setup (especially when selecting a soundfont instrument after using a VSTi instrument).



So, I have demonstrated to myself that all this is possible and have made some good progress to achieving the end result. However, I still have quite a lot of work to do to sort out some issues and finalise all the configurations, so it is still some weeks away before being sorted.

As this project progresses, I will be posting some more basic technical details about the project and how I am doing it. At the end, I intend to prepare and make available detailed tutorials on how to set it all up, together with making the MIDI data mapping and other configuration files available, and also prepared dummy .vce voice files (yes, all 2000 of them!).


Regards

Roy
Roy

Tyros 5-76; Roland FA08; Yammex V3; Behringer Q502USB; Arturia BeatStep; Alesis Elevate 3 MkIII;  Yamaha YST-FSW050; Sony MDR 7510; MultiTrackStudio Pro + AAMS.

YouTube: https://www.youtube.com/channel/UCQu3I6XidcZWOmsl_FM49_Q/videos

Joe H

Quote from: RoyB on October 04, 2020, 08:17:20 AM
... and also prepared dummy .vce voice files (yes, all 2000 of them!).

Regards

Roy

My experiments have shown that the keyboard only supports Voice messages (and other MIDI messages) used by the keyboard (and will filter out all other messages).  I have edited the Bank Select message of a .vce file (not used by the keyboard) and it calls up the wrong voice on an external sound module.  Maybe this has changed with the Genos and sx900 keyboards.

I have not tried adding a sy*** message to a .vce file.

Yamaha engineers have gone through extra effort to insure that keyboard operations are not corrupted by things like this.

I'll be following this thread and watch how your efforts go.

;)

Joe H
Music is the Universal Language!

My Article: Using Multi Pads in registrations. Download Regs, Styles & MPs:  http://psrtutorial.com/music/articles/dancemusic.html

RoyB

Hello Joe

I have a Tyros 5 keyboard and it seems to work OK.

For the .vce files:-

(1) I fisrt prepared a dummy normal voice file using YEM and installed it as a pack in my Expansion memory;
(2) With the Tyros in USB mode, I then copied the .vce installed in the Expansion directory onto my PC. I now have a basic normal user voice .vce file that I can use as a master.
(3) Using the free Voice Revoicer from here:- http://www.heikoplate.de/mambo/index.php?option=com_content&task=blogcategory&id=89&Itemid=78, I could then change the LSB and Prog values and save to a new .vce file (MSB needs to be fixed at 63). This does not change the sy*** messages or anything else. 
(4) The keyboard recognises the new voice file from a USB stick.
Note: I tried Mixmaster to edit the .vce files, but the resulting voice files did not work (not recognised by the keyboard).

Everything I need seems to be transmitted correctly as the logic in my midi data filterring and mapping on the PC appears to work correctly to select the correct soundfont and play the notes correctly (including any modulation and pitch variations).

Regards

Roy
Roy

Tyros 5-76; Roland FA08; Yammex V3; Behringer Q502USB; Arturia BeatStep; Alesis Elevate 3 MkIII;  Yamaha YST-FSW050; Sony MDR 7510; MultiTrackStudio Pro + AAMS.

YouTube: https://www.youtube.com/channel/UCQu3I6XidcZWOmsl_FM49_Q/videos

Joe H

Quote from: RoyB on October 04, 2020, 01:02:35 PM
... Everything I need seems to be transmitted correctly as the logic in my midi data filterring and mapping on the PC appears to work correctly to select the correct soundfont and play the notes correctly (including any modulation and pitch variations).

Regards

Roy

Where are SF2 files stored.  Is there a PC program that you can assign Bank Select and Program Change numbers to each of the SF2 files and select from the keyboard/USB stick?

Is your approach really different than creating dummy packs in YEM if the SF2 files use MSB 063?  The dummy pack will require you typing the names of the SF2 Voices (as with the .vce files) and takes up very little memory when installed in the keyboard. 

Joe H
Music is the Universal Language!

My Article: Using Multi Pads in registrations. Download Regs, Styles & MPs:  http://psrtutorial.com/music/articles/dancemusic.html

RoyB

Hello Joe

The approach is essentially as you describe, but needs a lot of trickery on the PC side to play the correct instrument sounds on the PC, and ignore all other voices.

My soundfont SF2 files are on my Windows PC. You can assign the Bank Select and Prog data using a free program such as Polyphone, https://www.polyphone-soundfonts.com/.

However, soundfonts ordinarily only use MSB bank data (equivalent to LSB always being 0), and do not recognise MIDI LSB bank select information. So you will only enter MSB + prog numbers.  For Yamaha user expansion voices, we need always to use MSB 63 for normal voices, which presents the dilemma that this leaves only the 0-127 prog numbers available for my soundfont voices (i.e. a max of 128 voices). In reality, this is not an approach that can be used because YEM would assign various prog numbers to other expansion pack voices (with various LSB numbers) so there is no way of being certain which prog numbers (if any) are always going to be free (unless you never install any expansion packs).

So, the first problem was to find a way around this limitation. After some thought, because the MSB is always going to be the same (63), I decided to identify my soundfonts using the LSB bank + prog number combinations. This meant identifying which range of LSB bank numbers is likely to be available and unassigned by YEM for expansion voices. I have many expansion packs in my YEM and YEM seems to assign the LSB bank numbers more or less sequentially (it is up to 49 in my YEM). I do have a V3 Yammex Expansion module and this uses expansion voices with fixed LSBs in the range 80 - 99. So I am confident that I could use MSB 63 + LSB 100 - 127 for my expansion soundfont instruments.

So this would give me soundfont bank+prog number combinations in the range (100-127)+(0-127) available to use (from the LSB and prog numbers) = more than 2000 combinations.

This still doesn't solve the problem completely though, because LSB bank numbers in the range 100 - 127 will be assigned by Yamaha for many internal voices (where MSB is not 63). So while the LSB+prog numbers may be unique identifiers for my PC soundfonts, they cannot be relied upon on their own to uniquely identify the correct voice from the MIDI data being sent out from the keyboard.

So this requires some MIDI data filtering/mapping and other trickery to be performed on the midi data being received by the PC. Firstly, only MIDI bank changes where MSB=63 and where LSB is in the range 120-127 applies to my PC soundfonts, so anything else I need to filter and remap to ensure that I can identify and isolate LSB 100 - 127 bank change information where it is unique to my soundfonts (these then also get remapped so that the outgoing bank change data has MSB = LSB to match my soundfonts configuration).

Further trickery is also required to ensure that notes for other (Yamaha) voices are muted as ordinarily the PC could otherwise play them from default voices in the standard GNMIDI sound set.

Having got the MIDI side sorted, there then needs to be a way to play the correct soundfonts on the PC for each of the RH+LH midi channels from the MIDI data being sent out from my MIDI mapping.

Hope this is understandable.


Regards

Roy
Roy

Tyros 5-76; Roland FA08; Yammex V3; Behringer Q502USB; Arturia BeatStep; Alesis Elevate 3 MkIII;  Yamaha YST-FSW050; Sony MDR 7510; MultiTrackStudio Pro + AAMS.

YouTube: https://www.youtube.com/channel/UCQu3I6XidcZWOmsl_FM49_Q/videos

Joe H

Here's some food for thought.

YEM supports 128 packs x 128 Voices = 16,384 possible Voices.

Your 2000 SF2 Voices will consume just 16 packs.  By creating packs with the actual SF2 files (Import Content option) the SF2 Voice would be in your T5 and you would have access to the T5 DSPs and be able to tweak the Voices (like setting the correct Volume and Octave) with Voice Set. And also be able to load the sounds into R2 and layer the two SF2 Voices with OTS or registrations and also apply Harmony settings.

I guess the issue is how much memory they will consume and how much memory you have installed in your T5.
Maybe after you create your .vce files and audition the SF2 sounds, (or even better if you can audition them using Polyphony), then you could make just a couple of packs with your favorite SF2 instrument sounds.

BTW... I created a custom Voice pack using SF2 files and can verify the above R1 plus R2 combinations and can apply Harmony and in my case the on-board arpeggiator as well.

You could also keep your original approach you have described to access and audition the 2000 sounds.

???

Joe H
Music is the Universal Language!

My Article: Using Multi Pads in registrations. Download Regs, Styles & MPs:  http://psrtutorial.com/music/articles/dancemusic.html

RoyB

Hello Joe

I have 2 GB expansion memory in my T5. It is already full with commercial expansion packs (that I want to keep) before I start making any soundfont packs!

I have looked at making expansion packs from some home-made sampled soundfonts and other soundfonts. As an example, an orchestral soundfont I have made containing 66 instruments makes an expansion pack of 500 MB. Another orchestral soundfont pack of 30 instruments makes a 340 MB pack. The freely available Sonatina Orchestra soundfont makes a 500 MB pack.

Some other of my soundfont files make smaller packs, but nevertheless they can quickly gobble up all the expansion memory. I will probably try and install a few of my best soundfont packs (as they can then be used easily with midi recordings) but otherwise I would rather use the expansion memory for my commercial expansion packs. Switching between different sets of expansion packs isn't really a practical option as it takes 45 minutes to load up the T5 expansion memory each time with 2Gb of expansion packs.

In any case, I thought it would be a good idea to see if all this can be done and I see it as a challenge to try and achieve it (and I have the time to do) whether or not I actually use it much after I have done it. The exciting bit for me is being able to play VSTi instruments directly from the keyboard as some of them are stunning.


Regards

Roy
Roy

Tyros 5-76; Roland FA08; Yammex V3; Behringer Q502USB; Arturia BeatStep; Alesis Elevate 3 MkIII;  Yamaha YST-FSW050; Sony MDR 7510; MultiTrackStudio Pro + AAMS.

YouTube: https://www.youtube.com/channel/UCQu3I6XidcZWOmsl_FM49_Q/videos

RoyB

An update on where I am with this.

OVERALL:
I think I've pretty much got all the MIDI data mapping stuff sorted now, but I do keep finding a few little things. I've basically got everything working as I had intended. I've also added a new part to this project - using the internal tones on my Roland FA08 from my Tyros as if they were Tyros Expansion voices. I've got this working really well and this is probably the part of the project I will probably use most.


PART 1: USING SOUNDFONT (SF2) FILES AS EXPANSION INSTRUMENTS.
Data mapping is done and it all works reasonably well, all at no cost. At the moment I've got around 200 SF2 instruments that I can select at will while playing from the Tyros into any or all of the RH and LH parts, mixing and matching with Tyros voices and playing with styles, all the soundfont files being played on the PC and selected from the Tyros. They can be saved in registrations and recalled.

I am encountering some playback issues, which I believe results from trying to instantly load and play different sound font files quickly - results in some intermittent break up or 'stuttering' of the instrument sound. I've tried different buffering settings but they don't really make much difference. And it isn't really consistent on different occasions when I start up the system. It doesn't happen all the time but it can be annoying. At the moment it seems to happen when playing the keyboard in 'full keyboard' mode, and I haven't so far had it to happen when playing the keyboard in 'split' mode.

PART 2: USING VSTi PLUGINS AS EXPANSION INSTRUMENTS (WITHOUT USING A DAW).
The data mapping for this was tricky and it involves using 3 sets of data mappings. But I'm pleased now with the result. Basically, I can preload 16 VSTi instruments (including Kontakt and SampleTank) and/or soundfont instruments into 16 slots on the PC. I can select from these 16 presets into RH1 and/or LH parts by selecting the user voices on the keyboard, change them while playing, and mix them with the Tyros voices and styles, and save them in registrations.

Eventually I got this to work really well. In theory this could be expanded to enable RH2 and RH3 parts to select from the presets as well, but adding each of these would add another set of data mappings.

Not quite free to do this - I had to spend £15 on a very useful piece of software.

The above 2 scenarios can both work together, but because of issues with ASIO audio, you can't normally route 2 sound sources (in this case the SF2 audio and the VSTi audio) to the same ASIO device. I have done a work around to enable both to be used with the same ASIO device by mixing the audio streams, but this involved spending a small amount of money buying a couple of software utilites to do it.


NEW PART : USING MY ROLAND FA08 TONES AS EXPANSION INSTRUMENTS.

Having learned a lot from doing the other data mappings, it occured to me that I could do the same with my Roland FA08 using my PC to do the data mapping. Potentially, I could have 2000+ excellent FA08 tones available as user voices selectable from the Tyros which I could mix as required with Tyros voices and styles.

Unlike Yamaha where the MSB/LSB/ProgChange codes are scattered all over the place, Roland has very conveniently arranged their MSB/LSB/ProgChanges in a very neat and methodical sequence - and this has made it all possible, to do the midi data mappings in a single step wiithout too much difficulty.

I have this working and it is fantastic! I have all 2000+ FA08 instrument tones available as user expansion voices on the Tyros, freely assignable from the Tyros to any or all of the RH and LH parts, and playable together with the Tyros voices and styles. I think there is also some extra potential in this, as they are potentially available over all 16 midi channels, so I don't see any reason why it should not be possible to create styles using both Tyros and Roland voices. There is a caveat to this in that control change codes have to be submitted first from the Tyros to select the Roland voices to play (otherwise you will get 'random' tones from the Roland) - if you just select a style and start playing it, the FA08 doesn't get the control code information it needs - it only receives this by going to the loaded style parts and physically selecting the Roland voice(s).

Nevertheless, I'm really pleased with this - it is like getting a new keyboard but without the expense. It will take a while to get this organised properly, as I need to organise and rename all the user voice files (2000+) with the Roland tone names, but I think I can write a computer script to help automate most of that.

I am now going to start on documenting all this in detail, which I will post on here to share, and this will provide detailed step-by-step instructions to anyone who wants to try and do something similar (and I can provide the data mapping files as well).

Regards

Roy








Roy

Tyros 5-76; Roland FA08; Yammex V3; Behringer Q502USB; Arturia BeatStep; Alesis Elevate 3 MkIII;  Yamaha YST-FSW050; Sony MDR 7510; MultiTrackStudio Pro + AAMS.

YouTube: https://www.youtube.com/channel/UCQu3I6XidcZWOmsl_FM49_Q/videos

Genos!

It's interesting that you have gone this route...
using a XG keyboard to talk to a GS keyboard.

I don't have a Tyros, but I do have a Genos.


Not sure how your setup would work for me.

I am currently running 7 ports at once x16...
plus additional VSTi & VST's effects, etc.

I have heard that the Genos has sync issues.

I find the FA-08 to be super-responsive.


The FA-08 has a DAW Ctrl mode. So I find it
peculiar to see this the other way around.

RoyB

I agree that if you are using your keyboards to record directly to a DAW then it doesn't have much value.

It really is for when you are just playing music on your Arranger, or perhaps when recording to midi file on your Arranger (although there are some difficulties with playing back the midi file with the external voices), your PC is just providing access to additional instruments rather than using expansion memory. You also don't need to have 'local off' on the Arranger, as you can freely mix the on-board and external PC voices.

It really started out as a technical challange for me to see if I could do it.  I have a V3 Yammex expansion module and this provides hundreds of additional sounds without having to use up space on your expansion memory - you can just install small .vce voice files in the user directory on your Arranger or on a USB stick, and use them from the keyboard to play the sound files which are stored on an external Yammex module connected by midi. Being frustrated by the limited number of expansion packs/voices I could load into the Yamaha's expansion memory, I thought it should be possible to do a similar thing by using a PC as the external sound module, so I set out to see if I could do it.

Accessing the Roland voices from the Tyros developed from this, and in this case the PC is just used for midi data mapping. In theory, it should be possible to do the same sort of thing with other keyboards and sound modules providing they have the Bank/ProgChange data for their sound groups ordered in a tidy, sequential order and where the LSB numbers fall within an appropriate range.

A number of members of this forum have expressed a wish for a sequencer/workstation that also has some arranger capabilities (e.g. styles). What I have done may provide a situation that gets close to this. It should be possible to create Yamaha styles with Roland voices and then, with the Roland FA08 as a master keyboard in split keyboard mode,  play the styles (using Roland voices) from the Roland keyboard.

Regards

Roy
Roy

Tyros 5-76; Roland FA08; Yammex V3; Behringer Q502USB; Arturia BeatStep; Alesis Elevate 3 MkIII;  Yamaha YST-FSW050; Sony MDR 7510; MultiTrackStudio Pro + AAMS.

YouTube: https://www.youtube.com/channel/UCQu3I6XidcZWOmsl_FM49_Q/videos

RoyB

I've now completed the documentation for this project, and these describe in detail what I did and they provide detailed instructions for anyone who wants to do something similar.

The documentation, together with a number of other files I created to be used in the project, are available on my Google Drive:-

https://drive.google.com/drive/folders/1OaiTVdaJ6jZKsu3JDJx_KcBtvZUNYH-B?usp=sharing


The 4 documents are:-

Part 1: General Discussion and Principles
Part 2: Using Soundfonts as Expansion Sounds
Part 3: Using VSTi Plugins as Expansion Sounds
Part 4: Using A Second Keyboard or Sound Module as Expansion Sounds

Part 1 provides introductory information for the other documents.

The Part 4 Document describes how I am able to use all the 2000+ internal preset tones on my Roland FA08, in the same way as if they were user expansion sounds on my Tyros 5. Whilst this specifically describes how I did it with my FA08, it may be of interest to others with different keyboards or sound modules. In the past, I have seen comments from a few Yamaha Arranger users on other forums expressing an interest to do this type of thing (I understand that Wersi OAX keyboard owners can actually do this anyway from within the OAX Operating System). The Integra-7 presets have similar Bank/Patch assignments as my FA-08 so it should be possible to do something similar with that. The Motif should be easy because its presets all have MSB=63 (same as Yamaha Arrangers' expansion sounds) and they are neatly and sequentially ordered starting at LSB=00. I do not know enough about, or understand enough about, Ketron sound modules to be certain whether it could also be done with those. I find Ketron's Sound Lists quite difficult to follow, and they seem to have two sets of sounds (GM and their own Presets) with the same sets of Bank and Patch Numbers. I believe (but I am not certain) that these Ketron modules have 2 audio cards, 1 for each set of sounds, and they are accessed through different MIDI In ports.

Regards

Roy
Roy

Tyros 5-76; Roland FA08; Yammex V3; Behringer Q502USB; Arturia BeatStep; Alesis Elevate 3 MkIII;  Yamaha YST-FSW050; Sony MDR 7510; MultiTrackStudio Pro + AAMS.

YouTube: https://www.youtube.com/channel/UCQu3I6XidcZWOmsl_FM49_Q/videos

YeeL

Hi Roy, thanks for sharing your work,it is very impressive!  I finished a similiar project a couple months ago, before came across your post.

my use case is a little bit different, but one thing in common is voice routing and mapping. as i can see, you may have used midi-ox to its max potential. i heard about ox about 10+ years ago,  i downloaded and installed it but didnt really use it, and didn't really understand what it can do. so  midi-ox didnt come to my mind when i started my project, instead i used python, a popular and easy to learn programing language.

imho, msb/lsb/program mapping would be much easier implemented with python than using ox, and reusing code would also be much easier if you need to modify the project for other instruments or plugins. i guess you may have also considered scripting approach than using ox? if so i wonder what makes you decide to go with ox?

I bookmarked your documents for more detail learning afterwards... now in travel hard to read and type on phone...i might also share something about my project later..
thanks again for your sharing!
Yamaha PSR-S975, Yamaha P155, Korg SP-250 & LP350

nonchai

Hi Roy,

I've just sent you a rather long ( embarrassingly so ) PM - about this very topic and how something I'm already working on software wise - would help - or frankly "answer your prayers" :)

PM me for more.