On 09/12/2018 11:59, Christian Schoenebeck wrote:
On Samstag, 8. Dezember 2018 17:15:54 CET Ivan Maguidhir wrote:
Hi everyone
Hi Ivan!
Hi Christian. Thanks for the quick response.

libgig-4.1.0.svn5-load_giga4_as_giga3.patch causes GigaStudio 4
instruments to be loaded as if they were GigaStudio 3 instruments. They
are currently loaded as if they were GigaStudio 2 instruments making
them unplayable (usually the same samples on every key). I have a set of
about 25 GigaStudio 4 instruments which were included on my GigaStudio 4
installation discs. There are only one or two of these instruments which
don't behave as expected with this patch.
That makes sense. What does gigdump print as global file information for a gig
v4 file?
Here's a link to a zip file containing dumps of all the GSt4 instruments mentioned.

http://www.maguidhir.ie/GSt4_Dumps.zip


Have you already checked for interesting new features in GSt4 that we might be
missing yet?
Not really, but I did notice problems with some of the GSt4 instruments. Two instruments called SONiVOX Alto Saxophone.gig and SONiVOX Harmon Mute Trumpet.gig seem to have clipping or a slight crackling noise on all notes. Also, an instrument called SONiVOX Synth Pads.gig does not work as expected at all. Looking at it in gigedit it has relatively few samples and many regions share a single sample. I think it might rely on filters to generate the different patches? Anyway, it currently produces ear damaging squeaks and squawks before crashing the linuxsampler backend. When I debugged this crash I found out that it happens because linuxsampler doesn't have enough audio samples to resample to pitches that cover the entire keyboard and still have the required block size (256 in my case) to send to ALSA/JACK. Find attached a patch that prevents the crash by dropping notes. I didn't submit this yesterday as it's a bit of a hack and I'm not sure if it's correct. The SONiVOX Synth Pads.gig instrument still doesn't produce the sounds it's supposed to with this patch. I will try to investigate how GSt4 handles this instrument if I can get it running in a VM.
linuxsampler-2.1.0.svn1-sustain_release_velocity.patch causes sustain
release samples to be played with the latest Note On velocity of each
key instead of the current hard-coded velocity of 127 (the highest).
This was causing me a problem while playing some piano instruments like
PMI Emperor 24-bit where I would hear an unnaturally loud thump and
string noise on releasing the sustain pedal even after playing very softly.
Have you compared this behaviour with your GigaStudio 4 software there? Is
that what GSt4 does when releasing the sustain pedal? So for instance if you
press sustain down, then trigger a key with high velocity, then a 2nd time the
same key with low velocity, then release the sustain pedal, would GSt then
play a soft release trigger voice?
Not yet. It's actually years since I've used GSt4. I'm going to try and get it working in a Windows XP VM this evening. I wrote a piece of software several years ago for sending MIDI from JACK on Linux to a driver running in a Windows VM over Ethernet. I hope I can find it again. Using this I should be able to test the sustain pedal behaviour.

CU
Christian

All the best,
Ivan


_______________________________________________
Linuxsampler-devel mailing list
Linuxsampler-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel
diff -Naur linuxsampler_original/src/engines/common/VoiceBase.h linuxsampler_modified/src/engines/common/VoiceBase.h
--- linuxsampler_original/src/engines/common/VoiceBase.h	2018-08-11 20:20:44.557781988 +0100
+++ linuxsampler_modified/src/engines/common/VoiceBase.h	2018-12-09 18:40:40.775333145 +0000
@@ -120,8 +120,15 @@
                             if (RAMLoop) SYNTHESIS_MODE_SET_LOOP(SynthesisMode, true); // enable looping
 
                             // render current fragment
-                            Synthesize(Samples, (sample_t*) pSample->GetCache().pStart, Delay);
-
+                            int cached_samples = pSample->GetCache().Size / SmplInfo.FrameSize;
+                            if (finalSynthesisParameters.dPos + Samples * finalSynthesisParameters.fFinalPitch <= cached_samples)
+                                Synthesize(Samples, (sample_t*) pSample->GetCache().pStart, Delay);
+                            else {
+                                dmsg(5,("VoiceBase: not enough cached samples\n"));
+                                this->PlaybackState = Voice::playback_state_end;
+                                break;
+                            }
+                                
                             if (DiskVoice) {
                                 // check if we reached the allowed limit of the sample RAM cache
                                 if (finalSynthesisParameters.dPos > MaxRAMPos) {
_______________________________________________
Linuxsampler-devel mailing list
Linuxsampler-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel

Reply via email to