Saltar navegación

[•] Cómo está feito?

Aquí podes ver dúas versións de como traballar cun audio pregrabado, unha máis sinxela que simplemente reproduce o son cada vez que pulsamos o botón e otra que permite xogar escollendo fragmentos do noso audio orixinal.

A primeira está baseada nun obxecto chamado [readsf~] que o que fai, básicamente, e cargar un audio e reproducilo. Para facer esto primeiro temos que cargar o audio que nos interese do noso disco duro, e para esto mandámoslle a mensaxe "open" e a localización do noso arquivo, e logo dirémoslle que o reproduza usando a mensaxe "start".

 

 

Como pode ser moi tedioso ter que estar introducindo o enderezo a man hai outro xeito que é o que utilizamos aquí usando o obxecto [openpanel] Cando recive un [bang] na súa entrada abre unha ventá para que busquemos o noso son. Pero como nos temos que compoñer unha mensaxe que poida leer o noso [readsf~] debemos empaquetar, [pack], as dúas mensaxes ("symbols" = s) e a mensaxe "set" para que as reescriba nunha nova mensaxe. Deste xeito ó escoller o noso arquivo no panel que se abre enviamos ó paquete a mensaxe "open" por un lado, e unha mensaxe co enderezo polo outro compoñendo unha mensaxe nova.

Cando pulsamos o botón vermello o que estamos facendo é; primero cargar ese arquivo seleccionado e logo, 10 milisegundos máis tarde [delay 10] decímoslle que o reproduza enviándolle ao [readsf~] a mensaxe "start".

O seguinte que temos é o contról que xa vimos de volume preparado para evitar clicks cun [line~] que vai de valor a valor en 50 milisegundos.

Outra peculiaridade que ten o obxecto [readsf~] é que pola súa saida dereita envía unha sinal cando remata de reproducir o audio. Esto permítenos utilizar esto para decidir se queremos que o repita ou que non. Se conectamos esta saída de novo ao botón vermello entón cando remate volvera reproducirse automáticamente.

Para controlar tanto se queremos que se active como canto queremos que agrade antes de repetirse facemos dúas cousas. A primera é crear un obsecro [spigot] que é como unha porta. Cando recibe 1 polo seu lado dereito deixa pasar a sinal que entra polo esquerdo, e cando é cero bloquea o seu paso. Xusto despoís de que cehegue o [bang] podemos controlar cunha caixa de números o tempo de espera (delay) e listo.

 

A segunda versión chamada /abrindo audio máis interesante utiliza un obxecto diferente. Trátase de [tabplay~].

 

 

O procedemento para cargar o audio é similar ao anterior usando [openpanel], só que agora queremos que quede almacenado nunha matriz á que lle damos un nome para que [tabplay~] poda leer dela.

Para pasar o son á matriz usamos o obxecto [soundfiler] que cando recive a mensaxe "read" seguida da localización do arquivo, neste caso variable ($1), e do nome matriz carga alí o son, pero tamén permite facer outras cousas como adaptar o tamaño da tabao ao tamaño do son (-resize).

Outra capacidade interesante do obxecto [soundfiler] é que devolve o núemro de samples que forman o noso arquivo. Esto o podemos utilizar con diferentes finalidades. Neste caso por exemplo para que varíen os valores do "slider" verde usando a mensaxe "range" e así que se correponda co punto exacto da nosa matriz no que queremos que empece o son.

De aquí chegamos a o noso tabplay que responde a dúas informacións; en que sample queremos que empece a reprodución e cantos queremos que reproduza. Esto hai que enviarllo xunto por eso estos dous número (floats = f) teñen que ir empaquetados, [pack].

Se nos entendemos mellor en milisegundos que en samples podemos utlizar unha conversión multiplicando o número de milisegundos por 44.1, sempre e cando o noso audio esté grabado con esa calidade, claro.

Cando lle damos ao boton verde este envía o último valor que lle entroú e que quedoú almcenado nun "float" e se queremos que se repita de novo en bucle aproveitamos, como no exermplo anterior, a súa saida. Para decidrir se queremos ou non o "loop" utilizamos de novo o obxecto [spigot].

De ahí vai á saida de audio e podemos escoitalo.

Elementos utilizados

OBXECTOS: [openpanel], [pack], [delay], [readsf~], [line~], [dac~], [spigot], [soundfiler], [* ], [array], [tabplay~], caixas numéricas 

MENSAXES: open, set, start, read, range, e outras mensaxes variables