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
| |-+  Max/MSP
| | |-+  dsp chain
« precedente successivo »
Pagine: [1] 2 Stampa
Autore Topic: dsp chain  (Letto 3906 volte)
mic
Sr. Member
****
Posts: 405


Guarda Profilo
« il: Febbraio 09, 2006, 17:49:38 »

..non c'è verso, ho fatto un po dì prove con diversi metodi ma continuo ad avere problemi : quando in una catena dsp sostituisco moduli dinamicamente spesso e volentieri l'audio si ferma..faccio un esempio, usando i moduli di leafcutter john (o altri costruiti sul quel template) cui si è parlato altre volte qui, quando sostituisco moduli *through con uno fx tutto bene, quando faccio il contrario (sostituisco un fx con *through) spesso e volentieri (..quasi sempre) l'audio si blocca e dunque devo far ripartire il dsp oppure max crasha..ho riscritto il motore di scripting in modo più pulito (usando il comando "script replace) anche con  js , ma niente..mi sapete dire qualcosa, maurizio..
Loggato
mic
Sr. Member
****
Posts: 405


Guarda Profilo
« Risposta #1 il: Febbraio 09, 2006, 20:07:04 »

ho trovato un workaround:  1. bypass audio dal modulo 2.replace modulo 3.mando messaggio "1" al dac; assolutamente non elegante, ma funziona e senza clicks!! Wow
Loggato
Maurizio Giri
Amministratore
Hero Member
*****
Posts: 815


Guarda Profilo WWW
« Risposta #2 il: Febbraio 09, 2006, 22:09:01 »

Ho scaricato oggi l'ultima versione (1f) e mi dà qualche problema, in parte credo che sia perché non ho tutti gli external richiesti, e in parte perché è probabilmente ancora un po' instabile.
Ad esempio quando carico dei moduli ricevo una serie di errori  (disconnect:unable to find connection) e dei fastidiosi clic dovuti allo switch on e off del dsp.
Mi sa che il modo migliore di fare una cosa del genere senza dover spegnere ogni volta il dsp è quello di trasformare tutti i moduli in plugin vst. Usando il comando "disable 1" è possibile ammutolire vst~ e caricara un nuovo modulo senza un glitch

m

PS. ma non potresti postare la tua versione? sarebbe istruttivo
Loggato

mic
Sr. Member
****
Posts: 405


Guarda Profilo
« Risposta #3 il: Febbraio 10, 2006, 08:24:08 »

si! certo certo..oggi pomeriggio la posto Wow, riguardo a quegli errori di cui parli: sono dovuti al modo in cui è scritto il motore di scripting (cancella tutti i collegamenti, cancella il modulo, crea un nuovo modulo e lo rinomina e riscrive i collegamenti tutte le volte che sostituisci un modulo..!!..metodo un pò vecchio e  laborioso secondo me) per questo motivo quando apri la patch per esempio cerca dei collegamenti da cancellare che non sono ancora stati creati e ti dà errore
Loggato
brunozamborlin
Hero Member
*****
Posts: 895



Guarda Profilo
« Risposta #4 il: Febbraio 10, 2006, 11:00:05 »

Anch'io mic sto usando la patch di leafcutter john, che trovo molto molto interessante.
Mi sono arreso nel caricare i moduli dinamicamente (ma se tu ci sei riuscito sono molto curioso di vedere come hai fatto Sorriso ) ed ho adottato un'altra strategia: ho modificato tutti i moduli  (random-delay, random-rhythm, waveshaper ecc...) racchiudendoli ognuno in un oggetto poly, lasciando fuori ovviamente tutti i componenti grafici.
Ho poi dotato ogni effetto di un multislider "dry/wet" (utilizzando l'oggetto "p cross" di leafcutter) e della possibilità di mettere la poly in "mute".
Così facendo posso scegliere il routing audio (attraverso una matrix audio) e bypassare gli effetti che non uso. In questo modo ovviamente non ho alcun click, e risparmio molta cpu (non so a voi, ma io se carico 9 moduli diversi dal through ho la cpu a 90%...).

Certo, caricare moduli dinamicamente sarebbe forse più comodo... aspetto oggi pomeriggio allora Sorriso
« Ultima modifica: Febbraio 10, 2006, 11:02:14 da namaste » Loggato

mic
Sr. Member
****
Posts: 405


Guarda Profilo
« Risposta #5 il: Febbraio 10, 2006, 11:26:03 »

beh con 9 moduli non ho mai provato ma posso immaginare siano molto cpu hunger!!..io ho trasformato un po tutta la patch e ho tenuto i moduli (ai quali anchio ho aggiunto dry/wet);  ho fatto una sub patch con 3 o 4 moduli che uso come slot-fx e la metto dove voglio..a più tardi
Loggato
brunozamborlin
Hero Member
*****
Posts: 895



Guarda Profilo
« Risposta #6 il: Febbraio 10, 2006, 15:09:53 »

Già...
cmq volevo dire che la soluzione "poly" è eccellente, il bypass on/off fa risparmiare la cpu e non produce nessun click...

certo, pensando a sviluppi futuri di altri moduli forse diventa complesso gestire tutto quanto con una matrice audio... l'idea di caricare moduli dinamicamente è forse la migliore, se non clippa.
Sono curioso, a dopo Sorriso
Loggato

mic
Sr. Member
****
Posts: 405


Guarda Profilo
« Risposta #7 il: Febbraio 10, 2006, 16:19:11 »

ciao ragaz dunque ecco la patch, è un piccolo esempio.. il codice js si può scrivere più sintetico e a dire la verità si può fare in modo efficente anche con lo scripting tradizionale usando il messaggio script replace; certo la sostituzione dei moduli non sarà efficente come se fossero dei vst-plugin però mi sembra tutto sommato accettabile, fatemi sapere come funziona da voi..


salvate come    modreplace.js

inlets = 1;
var arg = 0;

//patcher argument
function parg(h)
{
   arg = h;
}

//mod 1
function mod1(n)
{
   objname = "p1";
   filename = n;
   if (mod1) patcher.script ( "replace", objname, "bpatcher", 5, 5, 200, 200, 0, 0, filename);
}

//mod 2
function mod2(n)
{
   objname = "p2";
   filename = n;
   if (mod1) patcher.script ( "replace", objname, "bpatcher", 5, 210, 200, 200, 0, 0, filename);
}

//mod 3
function mod3(n)
{
   objname = "p3";
   filename = n;
   if (mod1) patcher.script ( "replace", objname, "bpatcher", 5, 415, 200, 200, 0, 0, filename);
}


                                          **************************


salva come fx_3_slot_Bp3

max v2;
#N vpatcher 0 44 231 680;
#P origin 20 -139;
#P window setfont "Sans Serif" 9.;
#P window linecount 3;
#P hidden message 226 333 33 196617 \; Dsp start;
#P window linecount 1;
#P hidden newex 557 269 38 196617 del 10;
#P hidden newex 447 269 38 196617 del 10;
#P hidden newex 344 265 38 196617 del 10;
#P hidden message 557 299 14 196617 2;
#P hidden message 574 299 14 196617 1;
#P hidden newex 558 233 40 196617 t b l b;
#P hidden newex 597 482 44 196617 gate~ 2;
#P hidden newex 552 482 44 196617 gate~ 2;
#P hidden message 445 297 14 196617 2;
#P hidden message 462 297 14 196617 1;
#P hidden newex 447 231 40 196617 t b l b;
#P hidden newex 451 424 44 196617 gate~ 2;
#P hidden newex 404 422 44 196617 gate~ 2;
#P hidden message 343 299 14 196617 2;
#P hidden message 360 299 14 196617 1;
#P hidden newex 344 231 40 196617 t b l b;
#P hidden newex 347 357 44 196617 gate~ 2;
#P hidden newex 302 357 44 196617 gate~ 2;
#P hidden newex 558 210 72 196617 prepend mod3;
#P hidden newex 447 209 72 196617 prepend mod2;
#P hidden newex 344 208 72 196617 prepend mod1;
#P hidden newex 479 366 85 196617 js modreplace.js;
#N thispatcher;
#Q end;
#P hidden newobj 645 170 61 196617 thispatcher;
#N comlet open msg;
#P hidden inlet 645 132 15 0;
#N comlet slot 3;
#P hidden inlet 558 132 15 0;
#N comlet slot 2;
#P hidden inlet 447 132 15 0;
#P hidden newex 715 145 48 196617 loadbang;
#N comlet R in;
#P hidden inlet 306 132 15 0;
#P objectname i2;
#N comlet L in;
#P hidden inlet 241 132 15 0;
#P objectname i1;
#N comlet R out;
#P hidden outlet 325 779 15 0;
#P objectname o2;
#N comlet L out;
#P hidden outlet 255 779 15 0;
#P objectname o1;
#P hidden message 715 171 51 196617 *through;
#N comlet slot 1;
#P hidden inlet 344 132 15 0;
#P bpatcher 5 415 200 200 0 0 *through 0;
#P objectname p3;
#P bpatcher 5 210 200 200 0 0 *through 0;
#P objectname p2;
#P bpatcher 5 5 200 200 0 0 *through 0;
#P objectname p1;
#P hidden connect 18 1 0 0;
#P hidden connect 23 1 1 0;
#P hidden connect 28 1 2 0;
#P hidden connect 19 1 0 1;
#P hidden connect 24 1 1 1;
#P hidden connect 29 1 2 1;
#P hidden fasten 25 0 36 0 452 252 231 252;
#P hidden fasten 20 0 36 0 349 252 231 252;
#P hidden fasten 30 0 36 0 563 252 231 252;
#P hidden fasten 2 0 5 0 10 697 260 697;
#P hidden fasten 28 0 5 0 557 639 260 639;
#P hidden connect 22 0 18 0;
#P hidden connect 21 0 18 0;
#P hidden fasten 2 1 6 0 105 697 330 697;
#P hidden fasten 29 0 6 0 602 639 330 639;
#P hidden fasten 7 0 18 1 246 192 341 192;
#P hidden connect 33 0 22 0;
#P hidden fasten 4 0 15 0 720 196 349 196;
#P hidden connect 3 0 15 0;
#P hidden connect 15 0 20 0;
#P hidden connect 20 0 33 0;
#P hidden connect 22 0 19 0;
#P hidden connect 21 0 19 0;
#P hidden connect 20 2 21 0;
#P hidden fasten 8 0 19 1 311 192 386 192;
#P hidden fasten 27 0 23 0 450 368 409 368;
#P hidden fasten 26 0 23 0 467 368 409 368;
#P hidden connect 0 0 23 1;
#P hidden fasten 18 0 23 1 307 398 443 398;
#P hidden connect 34 0 27 0;
#P hidden fasten 4 0 16 0 720 196 452 196;
#P hidden connect 10 0 16 0;
#P hidden connect 16 0 25 0;
#P hidden connect 25 0 34 0;
#P hidden fasten 27 0 24 0 450 368 456 368;
#P hidden fasten 26 0 24 0 467 368 456 368;
#P hidden connect 25 2 26 0;
#P hidden fasten 30 1 14 0 578 259 484 259;
#P hidden fasten 25 1 14 0 467 260 484 260;
#P hidden fasten 20 1 14 0 364 260 484 260;
#P hidden connect 0 1 24 1;
#P hidden fasten 19 0 24 1 352 399 490 399;
#P hidden fasten 32 0 28 0 562 398 557 398;
#P hidden fasten 31 0 28 0 579 398 557 398;
#P hidden connect 30 0 35 0;
#P hidden connect 35 0 32 0;
#P hidden fasten 4 0 17 0 720 196 563 196;
#P hidden connect 11 0 17 0;
#P hidden connect 17 0 30 0;
#P hidden connect 30 2 31 0;
#P hidden connect 1 0 28 1;
#P hidden fasten 23 0 28 1 409 460 591 460;
#P hidden fasten 32 0 29 0 562 398 602 398;
#P hidden fasten 31 0 29 0 579 398 602 398;
#P hidden connect 1 1 29 1;
#P hidden fasten 24 0 29 1 456 460 636 460;
#P hidden connect 12 0 13 0;
#P hidden connect 9 0 4 0;
#P pop;


                                              *************************


piccola patch di esempio

max v2;
#N vpatcher 350 70 950 470;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 24 170 34 196617 r Dsp;
#P user ubumenu 274 61 100 196617 0 1 1 0;
#X setrgb 50 50 50 255 255 255 234 234 234 4 4 4 141 141 141 112 112 112;
#X add *through;
#X add delay_example;
#X add delay_random_rhythm;
#X add Dirty_Grains1.1;
#X add Dirty_Grains_x8.1;
#X add gain;
#X add VST;
#X add VSTb;
#X add waveshaper;
#X add willits_rhythm;
#X prefix_set 0 0 <none> 0;
#P message 375 62 33 196617 front;
#P message 16 56 14 196617 0;
#P newex 16 31 48 196617 loadbang;
#P hidden newex 70 134 34 196617 gate~;
#P toggle 16 87 15 0;
#P comment 32 88 43 196617 ext mic;
#P hidden newex 34 134 34 196617 gate~;
#P newex 77 86 31 196617 adc~;
#P user ezdac~ 63 210 107 243 0;
#P user ubumenu 173 61 100 196617 0 1 1 0;
#X setrgb 50 50 50 255 255 255 234 234 234 4 4 4 141 141 141 112 112 112;
#X add *through;
#X add delay_example;
#X add delay_random_rhythm;
#X add Dirty_Grains1.1;
#X add Dirty_Grains_x8.1;
#X add gain;
#X add VST;
#X add VSTb;
#X add waveshaper;
#X add willits_rhythm;
#X prefix_set 0 0 <none> 0;
#P user ubumenu 72 61 100 196617 0 1 1 0;
#X setrgb 50 50 50 255 255 255 234 234 234 4 4 4 141 141 141 112 112 112;
#X add *through;
#X add delay_example;
#X add delay_random_rhythm;
#X add Dirty_Grains1.1;
#X add Dirty_Grains_x8.1;
#X add gain;
#X add VST;
#X add VSTb;
#X add waveshaper;
#X add willits_rhythm;
#X prefix_set 0 0 <none> 0;
#P newex 60 170 87 196617 fx_3_slot_Bp3 1;
#P connect 9 0 10 0;
#P connect 10 0 7 0;
#P hidden fasten 7 0 5 0 21 129 39 129;
#P connect 4 0 5 1;
#P connect 5 0 0 0;
#P fasten 13 0 3 0 29 198 68 198;
#P connect 0 0 3 0;
#P hidden connect 7 0 8 0;
#P connect 8 0 0 1;
#P fasten 1 1 0 2 122 153 95 153;
#P connect 4 1 8 1;
#P connect 0 1 3 1;
#P fasten 2 1 0 3 223 155 110 155;
#P fasten 12 1 0 4 324 158 125 158;
#P fasten 11 0 0 5 380 165 140 165;
#P pop;
Loggato
mic
Sr. Member
****
Posts: 405


Guarda Profilo
« Risposta #8 il: Febbraio 10, 2006, 16:23:25 »

ps. mi sono accorto che nel js ho lasciato delle cose che non servono:
 
var arg = 0;

//patcher argument
function parg(h)
{
   arg = h;
}

è roba che si può tranquillamente cancellare
Loggato
brunozamborlin
Hero Member
*****
Posts: 895



Guarda Profilo
« Risposta #9 il: Febbraio 10, 2006, 17:30:08 »

Grazie mille mic!

Dunque, devo dire che per andare va.
Purtroppo però credo che sia ancora un compromesso inaccettabile quello si sentire quelle pause dell'audio (dovute se ho capito bene allo spegnimento momentaneo della DSP) e qualche volta, sul random-dela mi pare, pure qualche click.

Io continuo la strada delle poly, che funziona egregiamente... se qualcuno vuole darmi una mano ci si può spartire i lavori...

Tu mic credi di poterla usare la patch che hai fatto? Intendo, lo ritieni un compromesso accettabile?
Loggato

mic
Sr. Member
****
Posts: 405


Guarda Profilo
« Risposta #10 il: Febbraio 10, 2006, 18:41:38 »

..mah..insomma, certo non per situazioni "live" dove c'è bisogno della massima stabilità..siccome non ho di queste esigenze! penso che sia accettabile per i miei usi domestici..
io la sto usando su un ibook 800 mhz, per cui eventuali piccole interruzioni nell'audio mi capitano anche caricando vst o au in ableton o logic..
poi vale il disorso che per certi generi musicali forse non serve accanirsi nella perfezione a tutti i costi..voglio dire i limiti si possono sfruttare come parte dell'estetica
..mi interessa il tuo metodo con poly~...potresti mica farci vedere qualcosa..
 Occhiolino
Loggato
mic
Sr. Member
****
Posts: 405


Guarda Profilo
« Risposta #11 il: Febbraio 10, 2006, 18:55:25 »

..nama stavo pensando che se il problema è l'interruzzione dell'audio si risolve mettendo la funzione bypass fuori!!..si mette fuori dalla catena delle operazioni di scripting e si ha la funzione di bypass come per vst~!!!..
Loggato
mic
Sr. Member
****
Posts: 405


Guarda Profilo
« Risposta #12 il: Febbraio 10, 2006, 19:17:23 »

ho fatto una prova al volo ma rimangono interruzioni dell'audio anche sostituendo il modulo con l'audio bypassato..è presto spiegato: comunque la dsp chain nella patch viene ricompilata, l'unica soluzione penso sia la tua idea..
Loggato
brunozamborlin
Hero Member
*****
Posts: 895



Guarda Profilo
« Risposta #13 il: Febbraio 10, 2006, 19:36:53 »

Già...
senti mic se hai voglia di darmi una mano, io non ho problemi a postare tutto il lavoro che ho fatto.
Quello che ho fatto finora, oltre ad aggiungere dei generatori di suono (uno per delle sinusoidi che seguono il pitch che viene generato, uno per degli sfplay) ho cambiato tutta l'interfaccia grafica (diamolo, era orrenda  Grossa risata ) e ho aggiunto l'utilissima funzione di bypass (per risparmiare cpu caricando tutti i moduli) nel random-delay, nel random-rhythm e nello waveshaper.

Per fare questo ho incapsulato i suddetti moduli in una poly, alla quale invio il comando "mute".
Mi mancano ora i moduli più difficili, nonchè più esosi di cpu. Potremmo sparcirceli che dite?

Ecco uno screenshot di quel che ho fatto finora:


Loggato

mic
Sr. Member
****
Posts: 405


Guarda Profilo
« Risposta #14 il: Febbraio 10, 2006, 19:45:31 »

ok!se posso essere utile sono qua!..se tiva mandami pure quello che vuoi ...fittino@libero.it
ps. io lo screenshot non lo vedo..dipende dal mio browser..boh
ciao ragazzi buona serata
Loggato
Pagine: [1] 2 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!