Csound Csound-dev Csound-tekno Search About

pycalln & adsynt / adsynt2 - effective combinations / limitations etc...

Date2015-10-29 05:12
FromTim Mortimer
Subjectpycalln & adsynt / adsynt2 - effective combinations / limitations etc...
a very short & general question

i am thinking of exploring some fairly "heavy" (for me, to this point, as it
was always a bit unwieldy in csound alone... see below ...) additive
synthesis ideas / experiments using pylcalln & outputting, say, up 64 / 128
partials to adsynt ... kp00, kp01,kp02 .... kp127 (for bass notes at least,
that seems feasible...)

exploring the whole idea of interpolation & modulation of spectral data from
a handful of samples using python lists rather than table read / writes (or
arrays now i guess...) in csound just to ease that process ... 

to create a whole keyboard spread of timbres etc ... maybe keeping the
noisefloors separately & adding them in afterwards just for a bit of added
colour etc...

i am just wondering if anyone has reached any "outer limits" in this regard
already, & if the process is prone to bottlenecking at all - either in
realtime, or ultimately in the effectiveness of the Python API in dealing
with this number of sends & returns from the Pyops (considering if i get
into 5 note chords & multiple instruments or whatever that's a lot of data
being to-ed & fro-ed... nyquist cutoff etc notwithstanding ...)

Offline rendering is obviously a caveat here ... but still i'm just curious
to know what peoples experience in this regard is. it seems an obvious point
of application for pyops after all - facilitating krate "list / array
mungage" in this way ...

Or just getting some feedback from more experienced (recent) users who might
have dabbled in this area...




--
View this message in context: http://csound.1045644.n5.nabble.com/pycalln-adsynt-adsynt2-effective-combinations-limitations-etc-tp5744788.html
Sent from the Csound - General mailing list archive at Nabble.com.

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

Date2015-10-30 01:24
FromTim Mortimer
SubjectRe: pycalln & adsynt / adsynt2 - "Bus Error"
Hi

So i rolled my first prototype, & I am getting the rather uninformative
following ...

csound command: Bus error

full context is here ...

orch now loaded
audio buffered in 1024 sample-frame blocks
PortAudio V19-devel (built Sep  4 2014 22:30:30)
   0: dac0 (Built-in Output)
PortAudio: selected output device 'Built-in Output'
writing 2048 sample blks of 64-bit floats to dac 
SECTION 1:
new alloc for instr 10:

csound command: Bus error
inactive allocs returned to freespace
end of score.		   overall amps:  0.00000  0.00000
	   overall samples out of range:        0        0
0 errors in performance
Elapsed time at end of performance: real: 2.427s, CPU: 1.697s
closing device
0 2048 sample blks of 64-bit floats written to dac

Now, there is obviously backend Python code that runs at least (ive checked
that...), that reads & reports on some "partial" data that i have simply
parsed from .txt via SPEAR to begin with (kept 70 partials... reduced the
reporting to 16 to try & overcome the error) & this is is my first
prototype, but I am wondering if this relates to my "bottleneck"
specifically that i predicted ...

without posting all the Python Classes etc ... is there a likely
identifiable cause?
The error message is not the most informative, i'm sure you will agree...

with thanks




;-odac
-W
-o "test.wav"




sr = 48000
ksmps = 128
nchnls = 2
0dbfs = 1.0

gisine ftgen 1, 0, 16384, 10, 1

;;; you will eventually need a freq & amp table
;;; for each voice in the polyphony

gifreqs ftgen 2, 0, 64, 7, 0, 64, 0
giamps ftgen 3, 0, 64, 7, 0, 64, 0

pyinit

pyruni {{

import sys
sys.path.append("/Users/macuser/Documents/python
projects/csoundscripting/additive_synth")

import pickle
import partial_set

f =
open("/Users/macuser/Documents/csound/INCDIR/adsynt_pickles/Cello_test.partialset","r")
x = pickle.load(f)
f.close()

}}

instr 10
	
	;;; initialisation stuff ...
	icps cpsmidinn p4
	kcps init icps
	
kamp00,kamp01,kamp02,kamp03,kamp04,kamp05,kamp06,kamp07,kamp08,kamp09,kamp10,kamp11,kamp12,kamp13,kamp14,kamp15,kamp16,kamp17,kamp18,kamp19,kamp20,kamp21,kamp22,kamp23,kamp24,kamp25,kamp26,kamp27,kamp28,kamp29,kamp30,kamp31,kamp32,kamp33,kamp34,kamp35,kamp36,kamp37,kamp38,kamp39,kamp40,kamp41,kamp42,kamp43,kamp44,kamp45,kamp46,kamp47,kamp48,kamp49,kamp50,kamp51,kamp52,kamp53,kamp54,kamp55,kamp56,kamp57,kamp58,kamp59,kamp60,kamp61,kamp62,kamp63,kamp64,kamp65,kamp66,kamp67,kamp68,kamp69
init
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

kfreq00,kfreq01,kfreq02,kfreq03,kfreq04,kfreq05,kfreq06,kfreq07,kfreq08,kfreq09,kfreq10,kfreq11,kfreq12,kfreq13,kfreq14,kfreq15,kfreq16,kfreq17,kfreq18,kfreq19,kfreq20,kfreq21,kfreq22,kfreq23,kfreq24,kfreq25,kfreq26,kfreq27,kfreq28,kfreq29,kfreq30,kfreq31,kfreq32,kfreq33,kfreq34,kfreq35,kfreq36,kfreq37,kfreq38,kfreq39,kfreq40,kfreq41,kfreq42,kfreq43,kfreq44,kfreq45,kfreq46,kfreq47,kfreq48,kfreq49,kfreq50,kfreq51,kfreq52,kfreq53,kfreq54,kfreq55,kfreq56,kfreq57,kfreq58,kfreq59,kfreq60,kfreq61,kfreq62,kfreq63,kfreq64,kfreq65,kfreq66,kfreq67,kfreq68,kfreq69
init
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

	;;; just a simple bounded back & forth read for now ...
	kread linseg 0.5,p3*0.5,3.5,p3*0.5,0.5
	
	;;; set the read point
	pylcall "x.read_time_pointer", kread
	
	;;; get the bloody data
	pylcalln "x.report_amps", 16,
kamp00,kamp01,kamp02,kamp03,kamp04,kamp05,kamp06,kamp07,kamp08,kamp09,kamp10,kamp11,kamp12,kamp13,kamp14,kamp15
;;;,kamp16,kamp17,kamp18,kamp19,kamp20,kamp21,kamp22,kamp23,kamp24,kamp25,kamp26,kamp27,kamp28,kamp29,kamp30,kamp31,kamp32,kamp33,kamp34,kamp35,kamp36,kamp37,kamp38,kamp39,kamp40,kamp41,kamp42,kamp43,kamp44,kamp45,kamp46,kamp47,kamp48,kamp49,kamp50,kamp51,kamp52,kamp53,kamp54,kamp55,kamp56,kamp57,kamp58,kamp59,kamp60,kamp61,kamp62,kamp63,kamp64,kamp65,kamp66,kamp67,kamp68,kamp69
	
	pylcalln "x.report_freqs", 16,
kfreq00,kfreq01,kfreq02,kfreq03,kfreq04,kfreq05,kfreq06,kfreq07,kfreq08,kfreq09,kfreq10,kfreq11,kfreq12,kfreq13,kfreq14,kfreq15
;;;,kfreq16,kfreq17,kfreq18,kfreq19,kfreq20,kfreq21,kfreq22,kfreq23,kfreq24,kfreq25,kfreq26,kfreq27,kfreq28,kfreq29,kfreq30,kfreq31,kfreq32,kfreq33,kfreq34,kfreq35,kfreq36,kfreq37,kfreq38,kfreq39,kfreq40,kfreq41,kfreq42,kfreq43,kfreq44,kfreq45,kfreq46,kfreq47,kfreq48,kfreq49,kfreq50,kfreq51,kfreq52,kfreq53,kfreq54,kfreq55,kfreq56,kfreq57,kfreq58,kfreq59,kfreq60,kfreq61,kfreq62,kfreq63,kfreq64,kfreq65,kfreq66,kfreq67,kfreq68,kfreq69
	
tabw kamp00, 00, giamps
tabw kamp01, 01, giamps
tabw kamp02, 02, giamps
tabw kamp03, 03, giamps
tabw kamp04, 04, giamps
tabw kamp05, 05, giamps
tabw kamp06, 06, giamps
tabw kamp07, 07, giamps
tabw kamp08, 08, giamps
tabw kamp09, 09, giamps
tabw kamp10, 10, giamps
tabw kamp11, 11, giamps
tabw kamp12, 12, giamps
tabw kamp13, 13, giamps
tabw kamp14, 14, giamps
tabw kamp15, 15, giamps
tabw kamp16, 16, giamps
tabw kamp17, 17, giamps
tabw kamp18, 18, giamps
tabw kamp19, 19, giamps
tabw kamp20, 20, giamps
tabw kamp21, 21, giamps
tabw kamp22, 22, giamps
tabw kamp23, 23, giamps
tabw kamp24, 24, giamps
tabw kamp25, 25, giamps
tabw kamp26, 26, giamps
tabw kamp27, 27, giamps
tabw kamp28, 28, giamps
tabw kamp29, 29, giamps
tabw kamp30, 30, giamps
tabw kamp31, 31, giamps
tabw kamp32, 32, giamps
tabw kamp33, 33, giamps
tabw kamp34, 34, giamps
tabw kamp35, 35, giamps
tabw kamp36, 36, giamps
tabw kamp37, 37, giamps
tabw kamp38, 38, giamps
tabw kamp39, 39, giamps
tabw kamp40, 40, giamps
tabw kamp41, 41, giamps
tabw kamp42, 42, giamps
tabw kamp43, 43, giamps
tabw kamp44, 44, giamps
tabw kamp45, 45, giamps
tabw kamp46, 46, giamps
tabw kamp47, 47, giamps
tabw kamp48, 48, giamps
tabw kamp49, 49, giamps
tabw kamp50, 50, giamps
tabw kamp51, 51, giamps
tabw kamp52, 52, giamps
tabw kamp53, 53, giamps
tabw kamp54, 54, giamps
tabw kamp55, 55, giamps
tabw kamp56, 56, giamps
tabw kamp57, 57, giamps
tabw kamp58, 58, giamps
tabw kamp59, 59, giamps
tabw kamp60, 60, giamps
tabw kamp61, 61, giamps
tabw kamp62, 62, giamps
tabw kamp63, 63, giamps

tabw kfreq00, 00, gifreqs
tabw kfreq01, 01, gifreqs
tabw kfreq02, 02, gifreqs
tabw kfreq03, 03, gifreqs
tabw kfreq04, 04, gifreqs
tabw kfreq05, 05, gifreqs
tabw kfreq06, 06, gifreqs
tabw kfreq07, 07, gifreqs
tabw kfreq08, 08, gifreqs
tabw kfreq09, 09, gifreqs
tabw kfreq10, 10, gifreqs
tabw kfreq11, 11, gifreqs
tabw kfreq12, 12, gifreqs
tabw kfreq13, 13, gifreqs
tabw kfreq14, 14, gifreqs
tabw kfreq15, 15, gifreqs
tabw kfreq16, 16, gifreqs
tabw kfreq17, 17, gifreqs
tabw kfreq18, 18, gifreqs
tabw kfreq19, 19, gifreqs
tabw kfreq20, 20, gifreqs
tabw kfreq21, 21, gifreqs
tabw kfreq22, 22, gifreqs
tabw kfreq23, 23, gifreqs
tabw kfreq24, 24, gifreqs
tabw kfreq25, 25, gifreqs
tabw kfreq26, 26, gifreqs
tabw kfreq27, 27, gifreqs
tabw kfreq28, 28, gifreqs
tabw kfreq29, 29, gifreqs
tabw kfreq30, 30, gifreqs
tabw kfreq31, 31, gifreqs
tabw kfreq32, 32, gifreqs
tabw kfreq33, 33, gifreqs
tabw kfreq34, 34, gifreqs
tabw kfreq35, 35, gifreqs
tabw kfreq36, 36, gifreqs
tabw kfreq37, 37, gifreqs
tabw kfreq38, 38, gifreqs
tabw kfreq39, 39, gifreqs
tabw kfreq40, 40, gifreqs
tabw kfreq41, 41, gifreqs
tabw kfreq42, 42, gifreqs
tabw kfreq43, 43, gifreqs
tabw kfreq44, 44, gifreqs
tabw kfreq45, 45, gifreqs
tabw kfreq46, 46, gifreqs
tabw kfreq47, 47, gifreqs
tabw kfreq48, 48, gifreqs
tabw kfreq49, 49, gifreqs
tabw kfreq50, 50, gifreqs
tabw kfreq51, 51, gifreqs
tabw kfreq52, 52, gifreqs
tabw kfreq53, 53, gifreqs
tabw kfreq54, 54, gifreqs
tabw kfreq55, 55, gifreqs
tabw kfreq56, 56, gifreqs
tabw kfreq57, 57, gifreqs
tabw kfreq58, 58, gifreqs
tabw kfreq59, 59, gifreqs
tabw kfreq60, 60, gifreqs
tabw kfreq61, 61, gifreqs
tabw kfreq62, 62, gifreqs
tabw kfreq63, 63, gifreqs

	
	adsin adsynt2 0.5, kcps, gisine, gifreqs, giamps, 64
	
	/*
	adecay_dB linseg 0,3,-20,15,-40
	adecay_amp = ampdbfs(adecay_dB)
	arel init 1
	aattack linseg 0,0.005,1,0,1
	
	asig *=  aattack*arel
	asig *= adecay_amp
	*/
	
	asig = adsin
	
	outs asig,asig


endin



i 10 0 30 48






--
View this message in context: http://csound.1045644.n5.nabble.com/pycalln-adsynt-adsynt2-effective-combinations-limitations-etc-tp5744788p5744797.html
Sent from the Csound - General mailing list archive at Nabble.com.

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