Sound Design - Pipe Organ Sound

Hey all,

I’m trying to synthesise a good pipe organ sound. This synth doesn’t sound too bad but the initial attack is still lacking and I’m not really sure how to improve it - maybe someone with better sound design chops than me can help me out here? As a reference I’ve been taking the first second or so of this.

(                                                                                                                               
var lfo;                                                                                                                        
lfo = {                                                                                                                         
        |rate, amp|                                                                                                             
    LFNoise2.kr(rate) + (LFNoise2.kr(rate * 4)/4) + (LFNoise2.kr(rate*16)/4) * amp;                                             
                                                                                                                                
};                                                                                                                              
                                                                                                                                
SynthDef(\parOrgan, { |freq|                                                                                                    
    var gate = \gate.kr(1);                                                                                                     
    var sig;                                                                                                                    
    var phases, freqs, amps;                                                                                                    
    freqs = freq * [1, 2, 3, 4] +.x [lfo.(3, 1), lfo.(3, 1)];                                                                   
    amps = freqs.size.collect { |i| [1, 1] / (i+0.8) };                                                                         
    phases = freqs.size.collect { LFNoise2.kr(3).linlin(-1, 1, 0, 2pi) };                                                       
    sig = LFPar.ar(freqs, phases) * amps * (LFNoise2.kr(3).dbamp ! freqs.size);                            
    sig = [sig[0, 2..].mean, sig[1, 3..].mean];                                                                                 
    sig = sig + (sig * PinkNoise.ar(-22.dbamp) * XLine.kr(0.5, 1, 0.1));                                                        
    sig = (sig * 1.5).tanh;                                                                                                     
    sig = sig + (sig * WhiteNoise.ar(-37.dbamp) * XLine.kr(0.5, 1, 0.1));                                                       
    sig = LPF.ar(sig, XLine.kr(3000, 8000, 0.2));                                                                               
    sig = sig + GVerb.ar(sig * -30.dbamp);                                                                                      
    sig = sig * Env.asr(0.08, 1, 0.8).ar(Done.freeSelf, gate);                                                     
    sig = DelayC.ar(sig, 0.5, 0.08) + (PinkNoise.ar * -39.dbamp * Env.asr(0.05, 1, 1, curve: -8).ar(Done.none, gate));          
    sig = sig * (1 + Env.perc(0, 0.05).ar);                                                                                     
    sig = sig * -23.dbamp;                                                                                                      
    Out.ar(0, sig);                                                                                                             
}).add;                                                                                                                         
)

(                                                                                                                               
Synth(\parOrgan, [freq: 265]);                                                                                                  
Synth(\parOrgan, [freq: 456]);                                                                                                  
)                                                                                                                               
                                                                                                                                                                                                                                                             
2 Likes

Hi,
Fons Adriaensen published
https://kokkinizita.linuxaudio.org/linuxaudio/aeolus/
many years ago, a superb software organ. There seems to be an OSX
version as well somewhere (I am using Linux).
He published a paper about it at LAC2004. The presentation slides might get you more
insight https://kokkinizita.linuxaudio.org/papers/aeolus-pres.pdf
best, P

1 Like

sounds pretty good to me I think that they link is a tad brighter… so I dunno maybe more a tad more harmonic complexity, but I think it sounds great

1 Like

Really beautiful.
Thank you for sharing this.
Very inspiring.

1 Like

Thanks Daniel, really nice to hear that from you.

@madskjeldgaard released a very nice album with virtual organs: Musik for virtuelle orgler | Mads Kjeldgaard don’t know what he used but i like the album a lot ( :

1 Like

I also like this album. The liner notes say that they use very accurate physical models of pipe organs, which may mean that Mads has done a bit of pretty hard work he may not want to give away for free! I’ve found a few articles about this that are probably worth looking into when I’ve got more time for it, but I was hoping to get a bit closer just using this additive/subtractive approach.

http://www.colinpykett.org.uk/complete-physical-modelling.htm

http://www.colinpykett.org.uk/physical-modelling-viscount-organ-patent.htm

Also if anyone has a JSTOR access and wants to send me this as a PDF I wouldn’t be upset…

https://www.jstor.org/stable/3680869

1 Like