<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
;-odac     ;;;RT audio out
;-iadc    ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
 -o ambi7.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr     = 48000
ksmps  = 10
nchnls = 64
0dbfs  = 1

opcode ambi7, k[], kkk
  kX, kY, kZ xin
  
    kpSH[] init 64
    
    kSN3D[] fillarray 1.0000000000000000e+00, 5.7735026918962584e-01, 5.7735026918962584e-01,
                      5.7735026918962584e-01, 4.4721359549995793e-01, 4.4721359549995793e-01,
                      4.4721359549995793e-01, 4.4721359549995793e-01, 4.4721359549995793e-01,
                      3.7796447300922720e-01, 3.7796447300922720e-01, 3.7796447300922720e-01,
                      3.7796447300922720e-01, 3.7796447300922720e-01, 3.7796447300922720e-01,
                      3.7796447300922720e-01, 3.3333333333333331e-01, 3.3333333333333331e-01,
                      3.3333333333333331e-01, 3.3333333333333331e-01, 3.3333333333333331e-01,
                      3.3333333333333331e-01, 3.3333333333333331e-01, 3.3333333333333331e-01,
                      3.3333333333333331e-01, 3.0151134457776363e-01, 3.0151134457776363e-01,
                      3.0151134457776363e-01, 3.0151134457776363e-01, 3.0151134457776363e-01,
                      3.0151134457776363e-01, 3.0151134457776363e-01, 3.0151134457776363e-01,
                      3.0151134457776363e-01, 3.0151134457776363e-01, 3.0151134457776363e-01,
                      2.7735009811261457e-01, 2.7735009811261457e-01, 2.7735009811261457e-01,
                      2.7735009811261457e-01, 2.7735009811261457e-01, 2.7735009811261457e-01,
                      2.7735009811261457e-01, 2.7735009811261457e-01, 2.7735009811261457e-01,
                      2.7735009811261457e-01, 2.7735009811261457e-01, 2.7735009811261457e-01,
                      2.7735009811261457e-01, 2.5819888974716110e-01, 2.5819888974716110e-01,
                      2.5819888974716110e-01, 2.5819888974716110e-01, 2.5819888974716110e-01,
                      2.5819888974716110e-01, 2.5819888974716110e-01, 2.5819888974716110e-01,
                      2.5819888974716110e-01, 2.5819888974716110e-01, 2.5819888974716110e-01,
                      2.5819888974716110e-01, 2.5819888974716110e-01, 2.5819888974716110e-01,
                      2.5819888974716110e-01

       
    kZ2 = kZ * kZ
    
    kpSH[0] = 0.2820947917738781
    kpSH[2] = 0.4886025119029199 * kZ
    kpSH[6] = 0.9461746957575601 * kZ2 + -0.31539156525252
    kpSH[12] = kZ * (1.865881662950577 * kZ2 + -1.119528997770346)
    kpSH[20] = 1.984313483298443 * kZ * kpSH[12] + -1.006230589874905 * kpSH[6]
    kpSH[30] = 1.98997487421324 * kZ * kpSH[20] + -1.002853072844814 * kpSH[12]
    kpSH[42] = 1.993043457183566 * kZ * kpSH[30] + -1.001542020962219 * kpSH[20]
    kpSH[56] = 1.994891434824135 * kZ * kpSH[42] + -1.000927213921958 * kpSH[30]
    kC0 = kX
    kS0 = kY

    kTmpA = 0.48860251190292
    kpSH[3] = kTmpA * kC0
    kpSH[1] = kTmpA * kS0
    kTmpB = 1.092548430592079 * kZ
    kpSH[7] = kTmpB * kC0
    kpSH[5] = kTmpB * kS0
    kTmpC = 2.285228997322329 * kZ2 + -0.4570457994644658
    kpSH[13] = kTmpC * kC0
    kpSH[11] = kTmpC * kS0
    kTmpA = kZ * (4.683325804901025 * kZ2 + -2.007139630671868)
    kpSH[21] = kTmpA * kC0
    kpSH[19] = kTmpA * kS0
    kTmpB = 2.03100960115899 * kZ * kTmpA + -0.991031208965115 * kTmpC
    kpSH[31] = kTmpB * kC0
    kpSH[29] = kTmpB * kS0
    kTmpC = 2.021314989237028 * kZ * kTmpB + -0.9952267030562385 * kTmpA
    kpSH[43] = kTmpC * kC0
    kpSH[41] = kTmpC * kS0
    kTmpA = 2.015564437074638 * kZ * kTmpC + -0.9971550440218319 * kTmpB
    kpSH[57] = kTmpA * kC0
    kpSH[55] = kTmpA * kS0
    kC1 = kX * kC0 - kY * kS0
    kS1 = kX * kS0 + kY * kC0

    kTmpA = 0.5462742152960395
    kpSH[8] = kTmpA * kC1
    kpSH[4] = kTmpA * kS1
    kTmpB = 1.445305721320277 * kZ
    kpSH[14] = kTmpB * kC1
    kpSH[10] = kTmpB * kS1
    kTmpC = 3.31161143515146 * kZ2 + -0.47308734787878
    kpSH[22] = kTmpC * kC1
    kpSH[18] = kTmpC * kS1
    kTmpA = kZ * (7.190305177459987 * kZ2 + -2.396768392486662)
    kpSH[32] = kTmpA * kC1
    kpSH[28] = kTmpA * kS1
    kTmpB = 2.11394181566097 * kZ * kTmpA + -0.9736101204623268 * kTmpC
    kpSH[44] = kTmpB * kC1
    kpSH[40] = kTmpB * kS1
    kTmpC = 2.081665999466133 * kZ * kTmpB + -0.9847319278346618 * kTmpA
    kpSH[58] = kTmpC * kC1
    kpSH[54] = kTmpC * kS1
    kC0 = kX * kC1 - kY * kS1
    kS0 = kX * kS1 + kY * kC1

    kTmpA = 0.5900435899266435
    kpSH[15] = kTmpA * kC0
    kpSH[9] = kTmpA * kS0
    kTmpB = 1.770130769779931 * kZ
    kpSH[23] = kTmpB * kC0
    kpSH[17] = kTmpB * kS0
    kTmpC = 4.403144694917254 * kZ2 + -0.4892382994352505
    kpSH[33] = kTmpC * kC0
    kpSH[27] = kTmpC * kS0
    kTmpA = kZ * (10.13325785466416 * kZ2 + -2.763615778544771)
    kpSH[45] = kTmpA * kC0
    kpSH[39] = kTmpA * kS0
    kTmpB = 2.207940216581961 * kZ * kTmpA + -0.959403223600247 * kTmpC
    kpSH[59] = kTmpB * kC0
    kpSH[53] = kTmpB * kS0
    kC1 = kX * kC0 - kY * kS0
    kS1 = kX * kS0 + kY * kC0

    kTmpA = 0.6258357354491763
    kpSH[24] = kTmpA * kC1
    kpSH[16] = kTmpA * kS1
    kTmpB = 2.075662314881041 * kZ
    kpSH[34] = kTmpB * kC1
    kpSH[26] = kTmpB * kS1
    kTmpC = 5.550213908015966 * kZ2 + -0.5045649007287241
    kpSH[46] = kTmpC * kC1
    kpSH[38] = kTmpC * kS1
    kTmpA = kZ * (13.49180504672677 * kZ2 + -3.113493472321562)
    kpSH[60] = kTmpA * kC1
    kpSH[52] = kTmpA * kS1
    kC0 = kX * kC1 - kY * kS1
    kS0 = kX * kS1 + kY * kC1

    kTmpA = 0.6563820568401703
    kpSH[35] = kTmpA * kC0
    kpSH[25] = kTmpA * kS0
    kTmpB = 2.366619162231753 * kZ
    kpSH[47] = kTmpB * kC0
    kpSH[37] = kTmpB * kS0
    kTmpC = 6.745902523363385 * kZ2 + -0.5189155787202604
    kpSH[61] = kTmpC * kC0
    kpSH[51] = kTmpC * kS0
    kC1 = kX * kC0 - kY * kS0
    kS1 = kX * kS0 + kY * kC0

    kTmpA = 0.6831841051919144
    kpSH[48] = kTmpA * kC1
    kpSH[36] = kTmpA * kS1
    kTmpB = 2.6459606618019 * kZ
    kpSH[62] = kTmpB * kC1
    kpSH[50] = kTmpB * kS1
    kC0 = kX * kC1 - kY * kS1
    kS0 = kX * kS1 + kY * kC1

    kTmpC = 0.7071627325245963
    kpSH[63] = kTmpC * kC0
    kpSH[49] = kTmpC * kS0
    
    kpSH *= sqrt:i(4*$M_PI) * kSN3D
  
  xout kpSH   

endop



instr 1

  aOut[]  init    64
  kpSH[]  init    64

  aIn    diskin2  "fox.wav", 1 , 0, 1
  aIn     *=      0.5
  
  aOut     =      aIn

  kAz    linseg   0, p3/2, 2 * $M_PI
  kEl    linseg   0, p3/2, 0,  p3/8, -$M_PI/2, p3/4, $M_PI/2, p3/8, 0
  
  
  kpSH   ambi7    cos:k(kEl)*cos:k(kAz), cos:k(kEl)*sin:k(kAz), sin:k(kEl)

  aOut   *=       kpSH

         out      aOut

endin

</CsInstruments>
<CsScore>

i 1 0 30
e

</CsScore>
</CsoundSynthesizer>
