Benvenuto, Visitatore. Per favore, effettua il login o registrati.

  Hai perso la tua email di attivazione?

Main Home Help Ricerca Login Registrati

+  Virtual Sound - FORUM
|-+  Linguaggi per Computer Music, Video e Grafica
| |-+  Csound
| | |-+  Un pezzo facile in MaxMSP in Csound
« precedente successivo »
Pagine: [1] Stampa
Autore Topic: Un pezzo facile in MaxMSP in Csound  (Letto 1258 volte)
vallste
Jr. Member
**
Posts: 55


Guarda Profilo WWW
« il: Marzo 11, 2010, 21:44:02 »

Ecco un tentativo di rifare il primo dei 5 pezzi facili per MaxMSP (Swarm) di Maurizio Giri, spero di non fargli un torto con questo mio esperimentucolo, questo il codice del csd che incorpora un banalissimo generatore sonoro (strumento 10) invece di inviare messaggi midi:

<CsoundSynthesizer>

<CsOptions>
;Linux
;-iadc:system:capture_  -odac:system:playback_ -+rtaudio=jack -+rtmidi=null -b 80 -B 1024
;Windows
;-+rtaudio=MME
</CsOptions>
<CsInstruments>
sr = 44100
kr = 4410
nchnls = 2

instr 1 ;genera
kmetro init 120
knote init 30
knotea init 30
knoteb init 30
knotec init 30
knoted init 30
gkmul init 4

ktrig  metro gkmul * kmetro/60

kmetroplus trandom ktrig, -20, 20
kvel = kmetro * 3

knoteplus trandom ktrig, -2.9, 2.9
knoteplus = int(knoteplus)
if knoteplus == 0 then
   knoteplus = 1
endif


if ktrig == 1 then
   kmetro = kmetro + kmetroplus
   if kmetro > 200 then
      kmetro = 185
   endif
   if kmetro < 10 then
      kmetro = 11
   endif
   if knote > 48 then
      knote = 48
   endif
   if knote < 0 then
      knote = 0
   endif
   
   knoted = knotec
   knotec = knoteb
   knoteb = knotea
   knote = knote + knoteplus
   knotea = knote
      
   schedkwhen 1, -1, -1, 10.1, 0, 60/(kmetro * gkmul), kvel, knotea + 12, 4
   schedkwhen 1, -1, -1, 10.2, 0, 60/(kmetro * gkmul), kvel, knoteb + 24, 3
   schedkwhen 1, -1, -1, 10.3, 0, 60/(kmetro * gkmul), kvel, knotec + 36, 2
;   schedkwhen 1, -1, -1, 10.4, 0, 60/(kmetro * gkmul), kvel, knoted + 48, 1
endif
endin

instr 10 ;audio
print p5
kenvelope linseg 0, .02, 1.2, .02, .9, p3-.09, .9, .02, 0
kfreq = cpsmidinn(p5)
aout oscil kenvelope * p4, kfreq, p6
outs aout, aout
endin

</CsInstruments>
<CsScore>
f 1 0 131072 10 1
f 2 0 131072 10 2 0 .333 0 .2 0 .1428 ; square
f 3 0 131072 10 1 .5 .25 .135 .062 ; saw
f 4 0 131072 10 1 0 1/9 0 1/25 0 1/49 0 1/81;triangle
i 1 0 60
e
</CsScore>
</CsoundSynthesizer>

Commenti, critiche e suggerimenti sono, ovviamente, ben accetti
Ciao

Stefano
Loggato
Maurizio Giri
Amministratore
Hero Member
*****
Posts: 760


Guarda Profilo WWW
« Risposta #1 il: Marzo 12, 2010, 14:28:47 »

bell'esempio di traduzione di un algoritmo da un linguaggio all'altro!
un paio di cose: nella patch di max drunk era impostato per evitare i ribattuti (qui ogni tanto si sentono),
le mie conoscenze di Csound sono un po' arrugginite, ma qui:

Codice:
if ktrig == 1 then
   kmetro = kmetro + kmetroplus
   if kmetro > 200 then
      kmetro = 185
   endif
   if kmetro < 10 then
      kmetro = 11
   endif
   if knote > 48 then
      knote = 48
   endif
   if knote < 0 then
      knote = 0
   endif

piuttosto che forzare i valori di metronomo e nota entro un minimo e massimo, io li farei rimbalzare all'intero dei limiti, così:

Codice:
if ktrig == 1 then
   kmetro = kmetro + kmetroplus
   if kmetro > 200 then
      kmetro = 400 - kmetro
   endif
   if kmetro < 10 then
      kmetro = 20 - kmetro
   endif
   if knote > 48 then
      knote = 96 - knote
   endif
   if knote < 0 then
      knote = 0 - knote
   endif
 

m
Loggato

vallste
Jr. Member
**
Posts: 55


Guarda Profilo WWW
« Risposta #2 il: Marzo 15, 2010, 09:50:42 »

Giusto, ottima idea!
Ho anche pensato a mettere due rand con il seed > 1 (quindi basato sull'orologio del sistema) all'interno del ciclo if principale al posto dei trandom in modo che ad ogni esecuzione del programma la sequenza sia diversa.

Ciao
Loggato
vallste
Jr. Member
**
Posts: 55


Guarda Profilo WWW
« Risposta #3 il: Marzo 22, 2010, 13:40:06 »

Ok, Archiviato il primo proseguo con il Boiler:

<CsoundSynthesizer>
<CsOptions>
;Linux
;-iadc:system:capture_  -odac:system:playback_ -+rtaudio=jack -+rtmidi=null -b 80 -B 1024
;Windows
;-+rtaudio=PortAudio
</CsOptions>
<CsInstruments>
sr = 44100
kr = 4410
nchnls = 2

FLpanel "Mauirizio Giri's Boiler", 300, 100
gkOnOff, ihandle FLbutton "OnOff", 1, 0, 2, 100, 100, 0, 0, 105 , 1 , 0 , -1
gkcutoff, gicutoff FLslider "cutoff", 10, 11025, -1, 6, -1, 20, 80, 120, 0
gkQ, giQ FLslider "Q", .001, 4, 0, 6, -1, 20, 80, 160, 0
gkdelay, gidelay FLslider "delay", .0001, 30000, 0, 6, -1, 20, 80, 200, 0
gkonepole, gionepole FLslider "lp", 10, 11025, -1, 6, -1, 20, 80, 240, 0
FLpanelEnd
FLrun

FLsetVal_i 25, gicutoff
FLsetVal_i .1, giQ
FLsetVal_i 10000, gidelay
FLsetVal_i 2000, gionepole


instr 1
if gkOnOff != 1 then
   turnoff
endif

kbeta init 0
anoise noise 1, kbeta

anoiselp butterlp anoise, gkcutoff
anoiselp = anoiselp * gkdelay
knoiselp downsamp anoiselp

anoisebp butterbp anoise * gkdelay / 10000, gkcutoff, gkcutoff/gkQ
anoisebp butterlp anoisebp, gkonepole
knoisebp downsamp anoisebp

adely vdelay anoiselp, anoiselp/44100, .1
kdely downsamp adely

acycle_lh osciliktp kdely, 1, knoisebp * .01
acycle_rh osciliktp knoiselp, 1, knoisebp * .01

outs acycle_lh * 10000, acycle_rh * 10000
endin

</CsInstruments>
<CsScore>
f 0 3600
f 1 0 131072 10 1; sine
e
</CsScore>
</CsoundSynthesizer>
Loggato
vallste
Jr. Member
**
Posts: 55


Guarda Profilo WWW
« Risposta #4 il: Marzo 22, 2010, 13:42:18 »

A cui aggiungo Microsound:

<CsoundSynthesizer>
<CsOptions>
;Linux
;-iadc:system:capture_  -odac:system:playback_ -+rtaudio=jack -+rtmidi=null -b 80 -B 1024
;Windows
;-+rtaudio=PortAudio
</CsOptions>
<CsInstruments>
sr = 44100
kr = 4410
nchnls = 2

FLpanel "Mauirizio Giri's Microsound", 320, 100
gkOnOff, ihandle FLbutton "OnOff", 1, 0, 2, 100, 100, 0, 0, 105 , 1 , 0 , -1
gknoise_f, ginoise_f FLslider "NAmp", 0, 100, 0, 6, -1, 20, 80, 120, 0
gkoscil_freq, gioscil_freq FLslider "GR_F", 0.0001, 30, -1, 6, -1, 20, 80, 160, 0
gkmul1, gimul1 FLslider "os1F", .001, 4, 0, 6, -1, 20, 80, 200, 0
gkmul2, gimul2 FLslider "os2F", .001, 4, 0, 6, -1, 20, 80, 240, 0
gkphase2, giphase2 FLslider "PH2", 0, 10, 0, 6, -1, 20, 80, 280, 0


;gkdelay, gidelay FLslider "delay", .0001, 30000, 0, 6, -1, 20, 80, 200, 0
;gkonepole, gionepole FLslider "lp", 10, 11025, -1, 6, -1, 20, 80, 240, 0
FLpanelEnd
FLrun

FLsetVal_i 40, ginoise_f
FLsetVal_i .4, gioscil_freq
FLsetVal_i 1, gimul1
FLsetVal_i 1, gimul2
FLsetVal_i 8, giphase2



instr 1
if gkOnOff != 1 then
   turnoff
endif

kbeta init 0
anoise randh 10, gknoise_f
amodul_noise = anoise * anoise
kmodul_noise downsamp amodul_noise
;aosclil oscil 1, gkoscil_freq + amodul_noise, 1
aosclil osciliktp gkoscil_freq, 1, kmodul_noise
aoscl = (aosclil * aosclil) -.001
aclipped clip aoscl, 0, 1
kclipped downsamp aclipped
kgate = 0
if kclipped < 0 then
   kclipped = 0
   kgate = 1
endif

kn1 rand 1, .97
kn2 rand 1, .99
kn3 rand 1, 1.01
kn4 rand 1, 1.03

ksh1 samphold kn1, kgate
ksh2 samphold kn2, kgate
ksh3 samphold kn3, kgate
ksh4 samphold kn4, kgate

a2 osciliktp 2000 * gkmul2, 1, kclipped * gkphase2
k2 downsamp a2
a1 osciliktp 2000 * gkmul1 * ksh1, 1, k2

outs a1 * 10000 * kclipped * ksh3, a1 * 10000 * kclipped * ksh4
endin


</CsInstruments>
<CsScore>
f 0 3600
f 1 0 131072 10 1; sine
e
</CsScore>
</CsoundSynthesizer>

Ciao

Stefano
Loggato
Maurizio Giri
Amministratore
Hero Member
*****
Posts: 760


Guarda Profilo WWW
« Risposta #5 il: Marzo 23, 2010, 09:24:41 »

Ottimo, complimenti.
Sto provando queste orc/sco con il nuovo qutecsound, e devo dire che dai tempi di csound 4.x sono stati fatti passsi da gigante.
Una domanda: è possibile memorizzare in modo automatico dei preset, che poi possano essere richiamati da un apposito pannello? (cioè impostare i cursori in un determinato modo e memorizzare la configurazione?)

m
Loggato

vallste
Jr. Member
**
Posts: 55


Guarda Profilo WWW
« Risposta #6 il: Marzo 23, 2010, 10:07:27 »

Bhe, grazie di cuore...
Csound continua a migliorare ad ogni release, ho letto che stanno pensando anche al just in time programming come su Supercollider, vedremo se diverrà realtà...

Per quanto riguarda il salvataggio dei preset è possibilissimo scrivere del codice che lo fa, esistono varie tecniche, dagli snapshot delle FLTK al salvataggio dei parametri in varie ftables e conseguente richiamo, ad esempio qui (autopromozione):
http://triceratupuz.altervista.org/_altervista_ht/pages/csound.html
nel file puspecmod20090825.csd trovi un'esempio di come usare gli snapshot delle FLTK

Oppure sul sito dell'immenso Ian McCurdy http://iainmccurdy.org/ trovi un'esempio su come farlo con le ftables (file ftsave_ftload.csd), per non parlare di tutto il resto degli esempi... mi trovo spesso a scartabellare li dentro per sfruttare il suo codice
Loggato
satchmo
Newbie
*
Posts: 17


Guarda Profilo
« Risposta #7 il: Aprile 04, 2010, 09:34:36 »

ciao scusate la domanda da newbee, ho provato a copiare il codice di questi strumenti e orc dentro qtecsound ,per ascoltare di cosa si tratta ma , oltre che restare i caratteri "non colorati", dunque penso non attivi ,a meno che non ci metta degli spazi tra una riga e l'altra, quando lo faccio partire si apre la finestra di dos e alla fine  di una serie di dati mi dice -"error too much arguments"..
sapreste cortesemente dirmi quali (e quanti) errori faccio?
ho appena cominciato ..grazie mille.
Loggato
Maurizio Giri
Amministratore
Hero Member
*****
Posts: 760


Guarda Profilo WWW
« Risposta #8 il: Aprile 07, 2010, 08:59:21 »

potresti provare a copiare il codice in un editor di testo e poi salvarlo con l'estensione .csd, dopo di che caricalo da qutecsound

non so se possa servire, purtroppo Sorriso Sorriso non ho mai usato windows

m
Loggato

satchmo
Newbie
*
Posts: 17


Guarda Profilo
« Risposta #9 il: Aprile 10, 2010, 08:51:10 »

grazie, approfittando della tua gentilezza che tipo di editor esterno si può usare?
Loggato
Maurizio Giri
Amministratore
Hero Member
*****
Posts: 760


Guarda Profilo WWW
« Risposta #10 il: Aprile 12, 2010, 22:36:21 »

l'editor testi di default di windows è wordpad, oppure guarda qui:
http://en.wikipedia.org/wiki/List_of_text_editors
Loggato

vallste
Jr. Member
**
Posts: 55


Guarda Profilo WWW
« Risposta #11 il: Aprile 14, 2010, 16:40:40 »

Io uso SciTE che ha l'evidenziazione della sintassi per csound.
http://www.scintilla.org/SciTE.html

Ciao
Loggato
Pagine: [1] Stampa 
« precedente successivo »
Salta a:  


Login con username, password e lunghezza della sessione

Powered by MySQL Powered by PHP © Copyright 1996 - 2008 - ConTempoNet Edizioni Musicali ® - P.IVA: 05174251008
Tutti i diritti riservati - Tutti i marchi sono registrati -
È vietata la riproduzione, anche parziale, dei testi e delle immagini.
Powered by SMF 1.1.15 | SMF © 2006-2008, Simple Machines
Traduzione Italiana a cura di SMItalia
XHTML 1.0 Valido! CSS Valido!