10.5 preview r4792, r4801 - New Synth!

Archived development update discussion from past versions
Archived development updates.
Posts: 12440

Post by Nicholas » 09-19-18 4:02 pm

That sounds correct (or at least expected). The classroom installer doesn't really support running beta versions in a classroom situation, so it will only ever create a C:\ProgramData\Synthesia folder.

You can just copy that over to a C:\ProgramData\SynthesiaDev folder and it should work the same for beta versions.

Posts: 21

Post by phoegh » 10-01-18 11:08 am

Ok thanks!

Posts: 54
Location: Cagliari, Sardegna, Italy

Post by KaleidonKep99 » 11-10-18 5:10 am

There's a small issue with the new built-in synthesizer.

Since the BASS device is initialized on startup, and does not get freed when the built-in synthesizer is turned off, MIDI drivers such as my OmniMIDI and Claudio's VirtualMIDISynth 1.x won't work, and fail to initialize with a BASS_ERROR_INIT error.
It would be better for Synthesia to free BASS when not in use, and maybe free the DLLs with FreeLibrary too (To allow OmniMIDI/VMS to load their DLLs, if they're more up-to-date than Synthesia's).

I'm not forcing you to fix it, but it would be nicer to give more freedom to the user on the MIDI output device they want to use! :D

Posts: 12440

Post by Nicholas » 11-10-18 8:25 pm

Hmm... I didn't realize BASS used a global, system-wide initialization. My guess would have been per-process. Sorry for the collision. It seemed like it should have been safe.

With any luck though, Synthesia's BASS should be using the DLLs in the Synthesia directory, so anything used by other drivers shouldn't be locked. Although, upon closer inspection on that page, the "If a DLL with the same module name is already loaded in memory, the system checks only for redirection and a manifest before resolving to the loaded DLL..." is a little worrisome. :? I wonder if throwing a LOAD_LIBRARY_SEARCH_APPLICATION_DIR in there also avoids that behavior, too.

EDIT: Ah ha! It's because WASAPI is exclusive. I suppose that means everybody on the system has to play nice together or step on each other's toes.

For what it's worth, Synthesia does call BASS_Free when you close the synth. The only thing it's not doing is releasing the DLL. (It does dynamic binding and I was hoping to avoid all the pointer lookups each time. But I suppose it's not that large a price to pay.)

EDIT 2: It looks like just putting a "Synthesia.exe.local" file (contents doesn't matter; can be empty) in the same folder with Synthesia.exe will force it to use DLLs in that same folder. (The same is presumably true for your synth, too.) ;)

Posts: 54
Location: Cagliari, Sardegna, Italy

Post by KaleidonKep99 » 11-13-18 3:07 am

I think BASS checks if there's another version of itself loaded into memory, and if it is, it just returns false in DllMain, forcing LoadLibrary to pass a pointer to the existing library. And I don't think that DLL redirection will help at all...
BASS does use per-process initialization, but the *_Init functions can only be called once per app.

I'll make OmniMIDI free the libraries when midiOutClose is called, to allow Synthesia to use its own DLLs when my synth is closed. (In case you want to implement the load-'n-free libraries thing I suggested!)

Posts: 4

Post by ibruethsch » 11-14-18 6:00 am

I tried version 10.5.4801 on my android (S5 Android 6.01).
To make Synthesia to use my own soundfont .sf2 is easy.
Using a good Soundfont .sf2, the sound is muuuch better then 10.4 :-) :D
The latency is still a problem. I feel uncomfortable with it.
Whereas with SAMSUNG Soundcamp (and IGrand) the latency on the same device is very good.
So – I will still use my workaround: learning with synthesia on one device and listen the sound on the second device (my midikeyboard send signals to both devices at same time)
Best regards

Posts: 12440

Post by Nicholas » 11-14-18 1:51 pm

Yeah, when I tested it, Android latency (even on newer devices) is still kind of all over the place. Samsung's own page on Soundcamp mentions "proprietary professional audio technology" for achieving lower latency. They do allow other apps to integrate with their Pro Audio SDK, but it's not clear the effort is worth it for the five or six Samsung-only devices it benefits.

Posts: 54
Location: Cagliari, Sardegna, Italy

Post by KaleidonKep99 » 11-14-18 3:50 pm

The API will also be deprecated on January 1st, 2019. So yea, it's not even worth trying! :D

Posts: 4

Post by ibruethsch » 11-15-18 2:11 am

Thanks that you consider that.
>> Android latency (even on newer devices) is still (a problem)..<<
That was one question I had in minde, but didn’t tell. My old S5 still works fine, so - no reason to upgrade.
I’m not sure if “deprecate” is the right word. The app will no longer be maintained from Samsung. And it is announced that it will not run on android pie (= android 9). And it will be removed from Google Play. But it still work. And you can download it from e.g. apkpure.
>> So yea, it's not worth trying! (to integrate Synthesia in Soundcamp)<< - yes I double that.
kind regards

Posts: 23

Post by ofzatt » 11-15-18 8:59 pm

So, how about set separate volume for left and right hand. I think this is not difficult, hopefully they will keep an eye on this feature.

User avatar
Posts: 1815
Location: Illinois

Post by jimhenry » 11-16-18 6:17 am

If I understand what you want correctly, I think you can do that by choosing different pianos for each hand and then setting the volume for each piano as you wish. Some of the pianos have very similar sounds and it takes a good ear to hear that they are different.
Jim Henry
Author of the Miditzer, a free virtual theatre pipe organ