• Welcome to the Pipe Organ Forum! This is a part of the open community Magle International Music Forums focused on pipe organs (also known as "church organs"), organists, organ music and related topics.

    This forum is intended to be a friendly place where technically advanced organists and beginners (or even non-organists) can feel comfortable having discussions and asking questions. We learn by reading and asking questions, and it is hoped that the beginners (or non-organists) will feel free to ask even the simplest questions, and that the more advanced organists will patiently answer these questions. On the other hand, we encourage complex, technical discussions of technique, music, organ-building, etc. The opinions and observations of a diverse group of people from around the world should prove to be interesting and stimulating to all of us.

    As pipe organ discussions can sometimes become lively, it should be pointed out that this is an open forum. Statements made here are the opinion of the poster, and not necessarily that of the forum itself, its administrator, or its moderators.

    In order to post a new topic - or reply to existing ones - you may join and become a member by clicking on Register New User. It's completely free and only requires a working email address (in order to confirm your registration - it will never be given away!). We strive to make this a friendly and informative forum for anyone interested in pipe organs and organ music.

    (Note: If you wish to link to and promote your own website please read this thread first.)

    Many kind regards
    smile.gif

    Frederik Magle
    Administrator

    Krummhorn
    Co-Administrator

GO and reverb

L.Palo

New member
Hi!

I've now published a few impulse response recordings from different churches. They can be found at http://www.familjenpalo.se/vpo/ir-recordings.

It's great that this feature will be available in GO, but it does need improvement before it's really usable. At the current time jconvolver (which is a bit cumbersome to use) produces a much nicer sound with the same files. But I'm feeling sure that soon GrandOrgue will have great sounding built in convolution reverb! Thanks!

Kind regards

Lars P
 

L.Palo

New member
GO built in convolution and jconvolver? They are not sounding the same, at least not at rev 1162. The little I have had the time to look at it they both use zita-convolver, but they don't produce the same effect on the audio.

The different reverbs in my ir-recording archives? They come from only two churches... In Bureå by four different ballon pops and in Kalvträsk by two. Then I have for every pop produced four stereo files and four mono files at different bit- and samplerates so that it should match the samplesets you have loaded. Popping ballons is a slightly unpredictable source of room excitement so the different versions really differ from each other, but perhaps not extremely much. Afterall it's still the same room...

Kind regards

Lars P
 

e9925248

New member
GO built in convolution and jconvolver? They are not sounding the same, at least not at rev 1162.
Did you consider the state of the dirac option? When enabled, the sound is definitily different.

To do further research, could you please post the jconvolver config and your jack audio routing?
 

scush

New member
in out partition maxsize density
# --------------------------------------------------------
/convolver/new 1 2 256 120000 1.0
#
#
# num port name connect to
# -----------------------------------------------
/input/name 1 Input
#
/output/name 1 Output.L
/output/name 2 Output.R
#
#
# in out gain delay offset length chan file
# -------------------------------------------------------------------------------------
/impulse/read 1 1 0.2 0 0 0 1 greathall.wav
/impulse/read 1 2 0.2 0 0 0 2 greathall.wav



It looks as if delay must be (0) for grandorgue
 
Last edited:

L.Palo

New member
Hi!

When I use jconvolver I leave the normal (direct sound) connection from GO to system as it is and also connect the GO output to my jconvolver instance and the jconvolver instance to system. That gives both the clarity of the direct sound and the nice warm reverb.

In the conf files I try to adapt the settings to whatever I like at the moment, but as I use both the direct and convolved sound I frequently must lower the overall volume when I want to use reverb...

With GO and jconvolver you can use the delay and offset if you wish. The attached archive contains two examples that works pretty well.

View attachment conf-files.zip

Kind regards

Lars P
 

e9925248

New member
A GO like config would be like that:
/input/name 1 Input
/input/name 2 Input
/output/name 1 Output.L
/output/name 2 Output.R
/impulse/read 1 1 0.2 0 0 0 1 greathall.wav
/impulse/read 2 2 0.2 0 0 0 1 greathall.wav

The dirac options add the following thing:
/impulse/dirac 1 1 1 0
/impulse/dirac 2 2 1 0

GO currently only supports one channel from the IR file - so you need to put the same channel number on both lines in .conf files.
Additionally, delay is fixed with 0.

@scush:
Are you only using also mixing direct with reverb (as Lars) or only using the reverb sound?

@lars:
I missed the clarity with only reverb, therefore I added the dirac option. With an apropriate gain, so that the reverb volume is apropriate, the results are useable.
I think, that I should also add a delay option.
 

scush

New member
As what ever I do ,If I play a staccato sound I get a repeating echo in 12345--1234 pattern.
I'm just trying to guess the problem.
 

L.Palo

New member
Hi!

I really must read up on this subject to get a grip on it...

So, in GO, the user choice for using both the direct sound of samples and the convolved version (with the possibility to mix the signals at will by selecting gain for the convoluted one) is by using the dirac pulse option?

Anyway, with the current state of the reverb convolution we have a kind of delay echo instead of reverb for a staccato sound. If a note is held long enough then GO built in reverb sounds more or less acceptable, but not with short notes. When the dirac pulse is disabled this effect is very audible. Also there's a considerable delay (latency) between the key presses and the reverb output.

I won't have time to really read up on this for a while but I think that studying the jconvolver code could give some clues as to how the audio should be passed on to the convolver library so that the reverb sounds as it should.

Kind regards

Lars P
 

scush

New member
Hi

I have just given it a test.
Appart from the complex matrix problem,the bass frequecys are being amplified greatly.

On the possitive side.

There is no noticable increase in processor use, using the dirac pulse I don't hear any increase in latency.

It's looking promising.
 
Last edited:

scush

New member
The same impulse file converted to different sample rates, creates totally different effects. ?

john

PS.

good news.


GOrgueWave wav;
unsigned block = 0x64;
unsigned offset = settings.GetReverbStartOffset();
float gain = settings.GetReverbGain();


I don't know if this is correct or not, but it sounds like reverb to me.

PPS.

At 64 high a's are nulled out,it seems the lower the value,the better the sound.
but at 16 takes go a time to start.

I now Know how to type mingw32-make.
 
Last edited:

scush

New member
Hi

I have updated to rev 1166.
I was expecting to hear an improved reverb, but the echo artifacts still exist.


Using unsigned block = 0x16; In the GoSoundReverb.ccp may not be a correct way to fix the problem, but it does give a true reverb.

I'm hoping this helps you fix it.


I have made this mp3 using GO reverb the dirac is on.
The reverb level is as low as it will go.
The standard reverb spinner is set at 175ms.
 

Attachments

  • GO_Reverb.mp3
    1.6 MB · Views: 17
Last edited:

scush

New member
unsigned block =0x4;
Set at this the results sound perfect to me.
On my machine, the load time at this setting is approx 10 x the sample length.
which =30 seconds,
No time at all, for this quality.

john
 

L.Palo

New member
Hi!

Yes! Thanks Martin! Now the sound is indeed improved. This is totally usable, but of course I'd like to be able to really load (and use) the impulse response file in stereo if so desired and available, not only be able to select which channel will be loaded and used in mono. :)

I'll need to play some more with this on different organs and with different settings but it's my impression that even with the dirac pulse enabled there's some loss of details in the sound when convolution reverb is used. Is this only my imagination? Somehow the sound is perceived as "fresher" when I disable the convolution reverb... Even if I set the gain quite low this is the case.

I've also had a few random crashes when fiddling with the convolution reverb settings, before crashing a warning dialog saying that alsa couldn't create a thread was shown. But unfortunately I've not been able to reliably reproduce the crashes, nor have it happen in a debug build running in gdb (yet).

But this is a great step forward! Thanks!

Kind regards

Lars P
 

e9925248

New member
Yes! Thanks Martin! Now the sound is indeed improved. This is totally usable, but of course I'd like to be able to really load (and use) the impulse response file in stereo if so desired and available, not only be able to select which channel will be loaded and used in mono. :)

Loading in stereo is not possible. GO is multi-channel - usually everybody just uses 2 channels.

I have implemented a mono variant, as its easier to use just one config for any channel than providing a configuration interface for n + 2 channels (we also have the stereo sound recorder).

I'll need to play some more with this on different organs and with different settings but it's my impression that even with the dirac pulse enabled there's some loss of details in the sound when convolution reverb is used. Is this only my imagination? Somehow the sound is perceived as "fresher" when I disable the convolution reverb... Even if I set the gain quite low this is the case.

The audio signal is processed by reverb - so its not 100% the same.

I've also had a few random crashes when fiddling with the convolution reverb settings, before crashing a warning dialog saying that alsa couldn't create a thread was shown. But unfortunately I've not been able to reliably reproduce the crashes, nor have it happen in a debug build running in gdb (yet).

Use "-DCMAKE_CXX_FLAGS=-g" as cmake parameter in your release build and start GO only via gdb - you will see the same behaviour as your current release build, but in the case of a crash, gdb will provide at least some information.

A basic crash information can be gathered with the following gdb commands:
x/i $pc
info register
info threads
<foreach thread number:listed above>
thread <thread number>
bt
</end foreach>
 

scush

New member
congratulations it is working very well.
but there is now a new issue.
If signals are out of phase in the two channels they cancel.


Is a stereo version possible for some soundcards.
 

L.Palo

New member
I've done as you told me and mailed the crash report to the developers list as it's of little interest to others.

I don't understand why GrandOrgue cannot load a stereo impulse response file's both channels and use them both if output is at least stereo. It's certainly possible with jconvolver (though it's not done in the .conf files I provided earlier). I understand that it will complicate the code, yes but it should be doable!

The audio signal is processed by reverb - so its not 100% the same.

Perhaps it would be possible to create a mix of the direct signal and the reverb signal in another way than to use the dirac pulse then? So that one could keep the true signal as it is and have the reverb mixed in as well just like one can do with routing in jack.

Kind regards

Lars P
 
Top