Csound Csound-dev Csound-tekno Search About

Re: [Csnd] A new piece with an important contribute of Csound

Date2026-06-10 12:47
FromGiuseppe
SubjectRe: [Csnd] A new piece with an important contribute of Csound
Thank you for your appreciation, dear Dr. B.

The DAW I used is a simple Cubase Elements, and for the strings I have the Vienna Symphonic Library.

Which is the role of the electric violin, that you can hear in crescendo starting from to? This is a good question. I would say it represents a more subjective perspective, such as the deep desperation one can feel interpreting reality correctly.

And thank you also for the very clever suggestion about the ending of he piece, I will play around with it.

About the Csound instruments, I am afraid to disappoint you: I use very simple orchestras.

For the "rumbles" I played an instrument that comes directly from Iain McCurdy's examples:


sr = 96000
ksmps = 1
nchnls = 2
0dbfs = 1



gisine   ftgen 1006,0,4096,10,1

instr 1

 
;==========freq_base
ifreq_base_base = p4
ifreq_base_range = p5  ; %%%%%
ifreq_base_range = ifreq_base_base * ifreq_base_range
icps1 = p6
iFreq_base_fnz = p7
kndx1 phasor icps1
kFreq_base_tab table kndx1, iFreq_base_fnz, 1
kfreq_base = kFreq_base_tab * ifreq_base_range
kfreq_base = ifreq_base_base + kfreq_base

;==========Mod_ratio1
imod_ratio_base = p8
imod_ratio_range = p9
icps2 = p10
imod_ratio_fnz = p11
kndx2 phasor icps2
kmod_ratio_tab table kndx2, imod_ratio_fnz, 1
kmod_ratio = kmod_ratio_tab * imod_ratio_range
kmod_ratio = imod_ratio_base + kmod_ratio

;==========Mod_indx1
imod_index_base = p12
imod_index_range = p13
icps3 = p14
imod_index_fnz = p15
kndx3 phasor icps3
kmod_index_tab table kndx3, imod_index_fnz, 1
kmod_index = kmod_index_tab * imod_index_range
kmod_index = imod_index_base + kmod_index

;==========Carr_ratio1
icarr_ratio_base = p16
icarr_ratio_range = p17
icps4 = p18
icarr_ratio_fnz = p19
kndx4 phasor icps4
kcarr_ratio_tab table kndx4, icarr_ratio_fnz, 1
kcarr_ratio = kcarr_ratio_tab * icarr_ratio_range
kcarr_ratio = icarr_ratio_base + kcarr_ratio


;==========Fdb_ratio1
iFdb_ratio_base = p20
iFdb_ratio_range = p21
icps5 = p22
iFdb_ratio_fnz = p23
kndx5 phasor icps5
kFdb_ratio_tab table kndx5, iFdb_ratio_fnz, 1
kFdb_ratio = kFdb_ratio_tab * iFdb_ratio_range
kFdb_ratio = iFdb_ratio_base + kFdb_ratio


iwave = p24

;==========amplitude envelope
iamp_env_base_base1 = p25
iamp_env_base_range1 = p26  ; %%%%%
iamp_env_cps1 = p27 
iamp_Env_base_fnz1 = p28
kamp_env_indx1 phasor iamp_env_cps1
kamp_env_tab1 table kamp_env_indx1, iamp_Env_base_fnz1, 1
kamp_env_base1 = kamp_env_tab1 * iamp_env_base_range1 
kamp_env_base1 = iamp_env_base_base1 + kamp_env_base1

ipan = p29

 
      aFB init 0
        aModPhase phasor kfreq_base * kmod_ratio
        aModulator tablei aModPhase + aFB, iwave, 1, 0, 1
        aModulator = aModulator * (kmod_index * .17)
        aCarrPhase phasor kfreq_base * kcarr_ratio
        aCarrPhase = aCarrPhase + aModulator
        aCarrier tablei aCarrPhase, iwave, 1, 0, 1
        aFB = aCarrier * kFdb_ratio
                                       
        aCarrier = aCarrier * kamp_env_base1
        
        

        
                                outs aCarrier * ipan, aCarrier * (1 - ipan)	
endin

 








For the low frequency sounds a simple filter bank:


				
sr = 96000 
ksmps = 32 
0dbfs  = 1 
nchnls = 2


	
gasignal init 0

instr 1
idur = p3
iamp = p4
ifreq = p5
ifreqratio = p6
ibuzz_freq_base_base1 = ifreqratio * ifreq 
ibuzz_freq_base_range1 = p7  ; %%%%%
ibuzz_freq_base_range1 = ibuzz_freq_base_base1 * ibuzz_freq_base_range1
ibuzz_Freq_base_fnz1 = p8
;kcpsenv line .p7, p3, .1 
ibuzz_Freq_cps1 = p9 
kbuzz_indx1 phasor ibuzz_Freq_cps1
kbuzz_Freq_base_tab1 table kbuzz_indx1, ibuzz_Freq_base_fnz1, 1
kbuzz_freq_base1 = kbuzz_Freq_base_tab1 * ibuzz_freq_base_range1
kbuzz_freq_base1 = ibuzz_freq_base_base1 + kbuzz_freq_base1

;==========freq_base random %
ibuzz_freq_base_rnd_min1 = p10
ibuzz_freq_base_rnd_max1 = p11
ibuzz_freq_base_rnd_cps1 = p12
k_buzz_freq_base_rnd1 randomi ibuzz_freq_base_rnd_min1, ibuzz_freq_base_rnd_max1, ibuzz_freq_base_rnd_cps1 
k_buzz_freq_base_rnd1 = kbuzz_freq_base1 * k_buzz_freq_base_rnd1

iwave = p13

asig poscil3 iamp, kbuzz_freq_base1 + k_buzz_freq_base_rnd1, iwave 


gasignal = gasignal + asig

endin

instr 2 ;lowpassfilter 1

idur = p3
;==========flt_freq_base1
iflt_freq_base_base1 = p4
iflt_freq_base_range1 = p5  ; %%%%%
iflt_freq_base_range1 = iflt_freq_base_base1 * iflt_freq_base_range1
iflt_Freq_base_fnz1 = p6
;kcpsenv line .p7, p3, .1 
iflt_Freq_cps1 = p7 
kflt_indx1 phasor iflt_Freq_cps1
kflt_Freq_base_tab1 table kflt_indx1, iflt_Freq_base_fnz1, 1
kflt_freq_base1 = kflt_Freq_base_tab1 * iflt_freq_base_range1
kflt_freq_base1 = iflt_freq_base_base1 + kflt_freq_base1

;==========freq_base random %
iflt_freq_base_rnd_min1 = p8
iflt_freq_base_rnd_max1 = p9
iflt_freq_base_rnd_cps1 = p10
k_flt_freq_base_rnd1 randomi iflt_freq_base_rnd_min1, iflt_freq_base_rnd_max1, iflt_freq_base_rnd_cps1 
k_flt_freq_base_rnd1 = kflt_freq_base1 * k_flt_freq_base_rnd1

;==========flt_Q_base1
iflt_Q_base_base1 = p11
iflt_Q_base_range1 = p12  ; %%%%%
iflt_Q_base_range1 = iflt_Q_base_base1 * iflt_Q_base_range1
iflt_Q_base_fnz1 = p13
iflt_Q_cps1 = p14 * p7 
kflt_indx1 phasor iflt_Q_cps1
kflt_Q_base_tab1 table kflt_indx1, iflt_Q_base_fnz1, 1
kflt_Q_base1 = kflt_Q_base_tab1 * iflt_Q_base_range1
kflt_Q_base1 = iflt_Q_base_base1 + kflt_Q_base1

;==========Q_base random %
iflt_Q_base_rnd_min1 = p15
iflt_Q_base_rnd_max1 = p16
iflt_Q_base_rnd_cps1 = p17
k_flt_Q_base_rnd1 randomi iflt_Q_base_rnd_min1, iflt_Q_base_rnd_max1, iflt_Q_base_rnd_cps1 
k_flt_Q_base_rnd1 = kflt_Q_base1 * k_flt_Q_base_rnd1

;==========amplitude envelope
iamp_env_base_base1 = p18
iamp_env_base_range1 = p19  ; %%%%%
iamp_Env_base_fnz1 = p20 
iamp_env_cps1 = p21 * p7 
kamp_env_indx1 phasor iamp_env_cps1
kamp_env_tab1 table kamp_env_indx1, iamp_Env_base_fnz1, 1
kamp_env_base1 = kamp_env_tab1 * iamp_env_base_range1 
kamp_env_base1 = iamp_env_base_base1 + kamp_env_base1

ipan = p22
imaster = p23

ares moogvcf2 gasignal, kflt_freq_base1 + k_flt_freq_base_rnd1, kflt_Q_base1 + k_flt_Q_base_rnd1  
;ares lowpass2 asig, kflt_freq_base1 + k_flt_freq_base_rnd1, kflt_Q_base1 + k_flt_Q_base_rnd1  
;ares lowpass2 ares,  kflt_freq_base1 + k_flt_freq_base_rnd1, kflt_Q_base1 + k_flt_Q_base_rnd1

abal balance ares, gasignal 


      outs abal * kamp_env_base1 * ipan * imaster, abal * kamp_env_base1 * (1 - ipan) * imaster
      
      ;gasignal = 0
endin





instr 3 ;bandpass filter 1

idur = p3
;==========flt_freq_base1
iflt_freq_base_base1 = p4
iflt_freq_base_range1 = p5  ; %%%%%
iflt_freq_base_range1 = iflt_freq_base_base1 * iflt_freq_base_range1
iflt_Freq_base_fnz1 = p6
;kcpsenv line .p7, p3, .1 
iflt_Freq_cps1 = p7 
kflt_indx1 phasor iflt_Freq_cps1
kflt_Freq_base_tab1 table kflt_indx1, iflt_Freq_base_fnz1, 1
kflt_freq_base1 = kflt_Freq_base_tab1 * iflt_freq_base_range1
kflt_freq_base1 = iflt_freq_base_base1 + kflt_freq_base1

;==========freq_base random %
iflt_freq_base_rnd_min1 = p8
iflt_freq_base_rnd_max1 = p9
iflt_freq_base_rnd_cps1 = p10
k_flt_freq_base_rnd1 randomi iflt_freq_base_rnd_min1, iflt_freq_base_rnd_max1, iflt_freq_base_rnd_cps1 
k_flt_freq_base_rnd1 = kflt_freq_base1 * k_flt_freq_base_rnd1

;==========flt_Q_base1
iflt_Q_base_base1 = p11 * iflt_freq_base_base1
iflt_Q_base_range1 = p12  ; %%%%%
iflt_Q_base_range1 = iflt_Q_base_base1 * iflt_Q_base_range1
iflt_Q_base_fnz1 = p13
iflt_Q_cps1 = p14 
kflt_indx1 phasor iflt_Q_cps1
kflt_Q_base_tab1 table kflt_indx1, iflt_Q_base_fnz1, 1
kflt_Q_base1 = kflt_Q_base_tab1 * iflt_Q_base_range1
kflt_Q_base1 = iflt_Q_base_base1 + kflt_Q_base1

;==========Q_base random %
iflt_Q_base_rnd_min1 = p15
iflt_Q_base_rnd_max1 = p16
iflt_Q_base_rnd_cps1 = p17
k_flt_Q_base_rnd1 randomi iflt_Q_base_rnd_min1, iflt_Q_base_rnd_max1, iflt_Q_base_rnd_cps1 
k_flt_Q_base_rnd1 = kflt_Q_base1 * k_flt_Q_base_rnd1

;==========amplitude envelope
iamp_env_base_base1 = p18
iamp_env_base_range1 = p19  ; %%%%%
iamp_Env_base_fnz1 = p20
iamp_env_cps1 = p21 
kamp_env_indx1 phasor iamp_env_cps1
kamp_env_tab1 table kamp_env_indx1, iamp_Env_base_fnz1, 1
kamp_env_base1 = kamp_env_tab1 * iamp_env_base_range1 
kamp_env_base1 = iamp_env_base_base1 + kamp_env_base1

ipan = p22
imaster = p23

ares butterbp gasignal, kflt_freq_base1 + k_flt_freq_base_rnd1, kflt_Q_base1 + k_flt_Q_base_rnd1  
;ares lowpass2 asig, kflt_freq_base1 + k_flt_freq_base_rnd1, kflt_Q_base1 + k_flt_Q_base_rnd1  
;ares lowpass2 ares,  kflt_freq_base1 + k_flt_freq_base_rnd1, kflt_Q_base1 + k_flt_Q_base_rnd1
abal balance ares, gasignal 


      outs abal * kamp_env_base1 * ipan * imaster, abal * kamp_env_base1 * (1 - ipan) * imaster
      ;gasignal = 0
endin



instr 4 ;hipass filter 3

idur = p3
;==========flt_freq_base1
iflt_freq_base_base1 = p4
iflt_freq_base_range1 = p5  ; %%%%%
iflt_freq_base_range1 = iflt_freq_base_base1 * iflt_freq_base_range1
iflt_Freq_base_fnz1 = p6
;kcpsenv line .p7, p3, .1 
iflt_Freq_cps1 = p7 
kflt_indx1 phasor iflt_Freq_cps1
kflt_Freq_base_tab1 table kflt_indx1, iflt_Freq_base_fnz1, 1
kflt_freq_base1 = kflt_Freq_base_tab1 * iflt_freq_base_range1
kflt_freq_base1 = iflt_freq_base_base1 + kflt_freq_base1

;==========freq_base random %
iflt_freq_base_rnd_min1 = p8
iflt_freq_base_rnd_max1 = p9
iflt_freq_base_rnd_cps1 = p10
k_flt_freq_base_rnd1 randomi iflt_freq_base_rnd_min1, iflt_freq_base_rnd_max1, iflt_freq_base_rnd_cps1 
k_flt_freq_base_rnd1 = kflt_freq_base1 * k_flt_freq_base_rnd1

;==========amplitude envelope
iamp_env_base_base1 = p11
iamp_env_base_range1 = p12  ; %%%%%
iamp_Env_base_fnz1 = p13
iamp_env_cps1 = p14 
kamp_env_indx1 phasor iamp_env_cps1
kamp_env_tab1 table kamp_env_indx1, iamp_Env_base_fnz1, 1
kamp_env_base1 = kamp_env_tab1 * iamp_env_base_range1 
kamp_env_base1 = iamp_env_base_base1 + kamp_env_base1

ipan = p15
imaster = p16

ares butterhp gasignal, kflt_freq_base1 + k_flt_freq_base_rnd1
abal balance ares, gasignal 



      outs abal * kamp_env_base1 * ipan * imaster, abal * kamp_env_base1 * (1 - ipan) * imaster
      gasignal = 0
endin





Then easy convolutions using convolve.

Good that Csound can produce good sounds also in the hands of normal people like me.

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here