1<CsoundSynthesizer>
2<CsOptions>
3; Select audio/midi flags here according to platform
4; Audio out   Audio in    No messages
5-odac           -iadc     -d     ;;;RT audio I/O
6; For Non-realtime ouput leave only the line below:
7; -o spat3d_UHJ.wav -W ;;; for file output any platform
8</CsOptions>
9<CsInstruments>
10
11/* Written by Istvan Varga */
12sr	=  48000
13kr	=  750
14ksmps	=  64
15nchnls	=  2
16
17itmp    ftgen   1, 0, 64, -2,                                           \
18		/* depth1, depth2, max delay, IR length, idist, seed */ \
19		3, 48, -1, 0.01, 0.25, 123,				\
20		1, 21.982, 0.05, 0.87, 4000.0, 0.6, 0.7, 2, /* ceil  */ \
21		1,  1.753, 0.05, 0.87, 3500.0, 0.5, 0.7, 2, /* floor */ \
22		1, 15.220, 0.05, 0.87, 5000.0, 0.8, 0.7, 2, /* front */ \
23		1,  9.317, 0.05, 0.87, 5000.0, 0.8, 0.7, 2, /* back  */ \
24		1, 17.545, 0.05, 0.87, 5000.0, 0.8, 0.7, 2, /* right */ \
25		1, 12.156, 0.05, 0.87, 5000.0, 0.8, 0.7, 2  /* left  */
26
27	instr 1
28
29p3	=  p3 + 1.0
30
31kazim	line 0.0, 4.0, 360.0		; azimuth
32kelev	line 40, p3 - 1.0, -20		; elevation
33kdist	=  2.0				; distance
34; convert coordinates
35kX	=  kdist * cos(kelev * 0.01745329) * sin(kazim * 0.01745329)
36kY	=  kdist * cos(kelev * 0.01745329) * cos(kazim * 0.01745329)
37kZ	=  kdist * sin(kelev * 0.01745329)
38
39; source signal
40a1	phasor 160.0
41a2	delay1 a1
42a1	=  a1 - a2
43kffrq1	port 200.0, 0.8, 12000.0
44affrq	upsamp kffrq1
45affrq	pareq affrq, 5.0, 0.0, 1.0, 2
46kffrq	downsamp affrq
47aenv4	phasor 3.0
48aenv4	limit 2.0 - aenv4 * 8.0, 0.0, 1.0
49a1	butterbp a1 * aenv4, kffrq, 160.0
50aenv	linseg 1.0, p3 - 1.0, 1.0, 0.04, 0.0, 1.0, 0.0
51a_	=  4000000 * a1 * aenv + 0.00000001
52
53; spatialize
54a_W, a_X, a_Y, a_Z	spat3d a_, kX, kY, kZ, 1.0, 1, 2, 2.0, 2
55
56; convert to UHJ format (stereo)
57aWre, aWim	hilbert a_W
58aXre, aXim	hilbert a_X
59aYre, aYim	hilbert a_Y
60
61aWXre	=  0.0928*aXre + 0.4699*aWre
62aWXim	=  0.2550*aXim - 0.1710*aWim
63
64aL	=  aWXre + aWXim + 0.3277*aYre
65aR	=  aWXre - aWXim - 0.3277*aYre
66
67	outs aL, aR
68
69	endin
70
71
72</CsInstruments>
73<CsScore>
74
75/* Written by Istvan Varga */
76t 0 60
77
78i 1 0.0 8.0
79e
80
81
82</CsScore>
83</CsoundSynthesizer>
84