Reproductor de Sintetizador
Objeto Reproductor de Sintetizador
Renardo tiene varios instrumentos virtuales diferentes que puedes usar como objetos reproductores.
Para ver la selección existente de SynthDefs de Renardo, simplemente ejecuta:
Elige uno y crea un objeto reproductor de Renardo usando la sintaxis de doble flecha como en el ejemplo a continuación. En Renardo, todos los nombres de variables de dos caracteres, como p1
, zz
o k7
, están reservados para objetos Player(). La variable puede consistir en 2 letras o 1 letra + 1 número (por ejemplo, pp o s1).
El >> en Python generalmente se reserva para un tipo de operación, como + o -, pero no es el caso en Renardo.
En el siguiente ejemplo, la variable p1 creará un objeto Player() usando pluck como sintetizador/instrumento. Crear un objeto Player con un sintetizador y sin argumentos reproducirá una sola nota en el do central, por defecto, repetidamente hasta que se detenga.
Para detener un objeto reproductor individual, simplemente ejecuta p1.stop(). Para detener todos los objetos reproductores, puedes presionar CTRL+., que es un atajo para el comando Clock.clear().
Atributo degree
Si deseas reproducir notas musicales, necesitas darle a tu objeto reproductor algunos argumentos. En este caso único de SynthDef no necesitas usar un nombre de atributo para cambiar las notas que se reproducen.
Las “notas” que damos a un reproductor, significando en este caso los números 0, 2 y 4 se llaman degree
. Así que el ejemplo anterior también puede verse así:
Puedes usar una función TimeVar para controlar el disparo de cada nota reproducida a lo largo del tiempo. Si no usas ningún tiempo, se reproducirá cada beat por defecto.
Simplemente agrega tu tiempo de beat detrás de tu lista de notas, si deseas cambiar el tiempo.
La asignación siguiente tiene lugar:
Beat 0 –> Nota 0 | Beat 4 –> Nota 2 | Beat 8 –> Nota 4 | Beat 12 –> Nota 0 | Beat 16 –> Nota 2 |…
Para verificar qué nota se está reproduciendo en este momento, puedes usar el siguiente código usando degree dentro de la función print() de Python:
Crea otra lista con números para cambiar el tiempo de cada una de las notas por separado:
Puedes agrupar notas y variables encerrando múltiples valores de argumentos como tuplas en paréntesis redondos. Esto se usa a menudo para tocar acordes. En el siguiente ejemplo, tocamos 2 notas al mismo tiempo y expandimos el efecto estéreo en el atributo pan:
Es posible transferir una nota reproducida por un SynthDef a otro. En este ejemplo, s2 agrega una tríada a cada nota de bajo reproducida por s1:
Además de .follow(), también puedes usar el argumento .degree (sin paréntesis) para seguir a otros reproductores:
También es posible manipular degree agregando una matriz de números al objeto Player.
Esto eleva la 4ª nota reproducida en 2 grados:
Y esto eleva cada tercera nota en 2:
Estos valores pueden entrelazarse y agruparse juntos
Este comportamiento es particularmente útil cuando se usa el método follow.
¡A continuación, puedes programar a los reproductores para que hagan cosas!
Esto le dirá a p1 que invierta las notas cada 4 beats:
Puedes “encadenar” métodos juntos agregándolos al final de la línea original:
Para dejar de llamar a “reverse”, usa ‘never’:
¡Aquí hay algunos otros métodos que puedes usar!
Usar “stutter” reproducirá la misma nota n veces con diferentes atributos especificados
Rotate moverá todos los valores en su orden por 1:
Para aleatorizar el orden de las notas, usa “shuffle”:
Usa otros Atributos
Los valores asignados mediante atributos nombrados moldean la forma en que suena y se toca el instrumento. Es posible usar otros argumentos de la misma manera que los ejemplos anteriores usando degree. Por ejemplo s1.oct, s1.dur y así sucesivamente.
Lista todos los atributos universales:
Lista todos los atributos de un SynthDef en particular:
Lista todos los atributos fx predeterminados del objeto Player():
Puedes ver qué efectos están disponibles evaluando
Usemos el filtro de paso alto como ejemplo. Puedes ver que se describe así: “<Fx ‘highPassFilter’ — args: hpr, hpf>“
Cada efecto tiene un argumento “maestro” y luego argumentos secundarios. Aquí el argumento maestro es “hpf” (abreviatura de filtro de paso alto) y el argumento secundario es “hpr” (abreviatura de resonancia de paso alto). El efecto solo se agrega cuando el argumento maestro es distinto de cero:
Esto establece el filtro de paso alto a 4000 Hz, por lo que solo se escuchan las frecuencias en la señal de audio por encima de eso. Cambiemos el valor de la resonancia. Su valor predeterminado es 1, así que hagámoslo más pequeño:
¿Notas alguna diferencia? Podemos usar patrones / vars en nuestros efectos para hacer que cambien con el tiempo:
En el siguiente ejemplo, la octava oct se incrementa (el valor predeterminado es 5), el tiempo de reproducción de la nota dur (el valor predeterminado es 1) y el volumen amp varía (el valor predeterminado es 1).
Nota: La octava estándar en Renardo es 5, que en la teoría musical convencional es 3!
Los argumentos pueden ser enteros, puntos flotantes, fracciones, listas, tuplas o una mezcla
También puedes asignar valores a los atributos de los objetos reproductores directamente
Aquí hay algunos atributos más útiles que puedes usar para manejar tus reproductores
Reproduce solo este reproductor, silenciando a los demás
Y desactiva el solo
Detén (no solo silencia) a los otros reproductores
Puedes establecer variables fuera de un reproductor
Si estableces la duración del segundo, puede que no tenga el efecto deseado
Es posible que un objeto reproductor reproduzca exactamente lo que otro reproductor está reproduciendo. Para que un reproductor siga a otro, simplemente usa el método follow:
También puedes referenciar explícitamente atributos como el tono o la duración:
Funciona para otros atributos también
Puedes referenciar y probar el valor actual. El == devuelve un 1 si es verdadero y un 0 si es falso.
Esto te permite hacer condicionales como:
O cambiarlo a un amplificador diferente multiplicando por 4:
Encadena múltiples condicionales
Lo cual es lo mismo que
Silencios
Los silencios se pueden agregar usando un objeto de silencio en la matriz de duraciones. El silencio silencia la nota que se habría tocado. Sin un silencio, 5 notas (sí, una dur=1 funcionaría, pero seamos explícitos para contraponer el siguiente ejemplo)
Con un silencio … 4 notas y un silencio, la nota “4” se silencia durante 4 beats:
Referencia de Atributos
amp - Amplitud (por defecto es 1)
Establece el volumen de la nota/patrón
Medio Volumen
Creando un patrón con amp
amplify - Cambia amp, multiplicando contra el valor existente (en lugar de sobrescribir)
Creando un patrón con amp
Configura un “drop” en la música (Reproduce a volumen completo durante 28, luego 0 durante 4)
bend
benddelay - Ver bend
bits - La profundidad de bits, en número de bits, a la que se reduce la señal; este es un valor entre 1 y 24 donde se ignoran otros valores. Usa crush para establecer la cantidad de reducción a la tasa de bits (por defecto es 8)
bitcrush - Ver bits
blur
bpf - Filtro de Paso de Banda
bpnoise - Ver bpf
bpr - Ver bpf
bpm
buf
channel
chop - ‘Corta’ la señal en trozos usando una onda de pulso de baja frecuencia sobre la duración de una nota.
coarse
comb delay - Ver echo
crush
cut - Corta una duración
cutoff
decay - Ver echo
degree - El grado de la nota, o tono, puede especificarse por palabra clave (también la primera posicional)
Lo cual es lo mismo que:
Solo reproduce la nota “raíz” del acorde
delay - Una duración de tiempo para esperar antes de enviar la información a SuperCollider (por defecto es 0)
Retrasa cada 3 notas por .1
Retrasa cada 3 notas por .5
Reproduce la nota una vez por cada retraso diferente
dist
dur - Duraciones (por defecto es 1 y 1/2 para el Sample Player)
echo - Palabra clave del título: echo, Palabra(s) clave del atributo: decay - Establece el tiempo de decaimiento para cualquier efecto de eco en beats, funciona mejor en Sample Player (por defecto es 0) - Multiplicado contra el valor de sustain
env
fmod
formant
freq
hpf - Filtro de Paso Alto - Filtra todas las frecuencias por debajo del valor dado, eliminando las frecuencias más bajas
4000 hertz
HPF es 0 durante 4 beats, luego 4000 durante 4 beats
Cambio lineal en hpf de 0 toma 4 beats para llegar a 4000, 4 beats de vuelta a 0
Cambio lineal en hpf de 0 toma 8 beats para llegar a 4000, luego se reinicia a 0
Con cambio de resonancia (el valor predeterminado es 1)
Con cambio de resonancia como un linvar
hpr - Ver hpf
lpf - Filtro de Paso Bajo - Filtra todas las frecuencias por encima del valor dado, eliminando las frecuencias más altas
4000 hertz
Con cambio de resonancia como un linvar
lpr - Ver lpf
midinote
pan - Paneo, donde -1 es extremo izquierdo, 1 es extremo derecho (el valor predeterminado es 0)
pitch - Ver degree
pshift
oct
rate - Palabra clave variable utilizada para cambios misceláneos en una señal. Por ejemplo, la tasa de reproducción del Sample Player (el valor predeterminado es 1)
room - Palabra clave del título: room, Palabra(s) clave del atributo: mix
El argumento room especifica el tamaño de la habitación
Mix es la mezcla seca/húmeda de reverb o cuánto reverb se mezcla con la fuente. 1 es todo reverb, 0 es sin reverb en absoluto. (El valor predeterminado es 0.1)
reverb - Ver Room
sample - Palabra clave especial para Sample Players; selecciona otro archivo de audio del banco de muestras para un carácter de muestra.
scale
shape
slide - Deslizar A - Desliza el valor de frecuencia de una señal a freq * (slide+1) durante la duración de una nota (el valor predeterminado es 0)
slidedelay
slidefrom
slider
spread
spin
striate
stutter
sus - Sostenido (el valor predeterminado es dur
)
swell
vib - Vibrato - Palabra clave del título: vib, Palabra(s) clave del atributo: Vibrato (el valor predeterminado es 0)
Con atributo hijo, vibdepth (el valor predeterminado es 0.2)
vibdepth - Ver vib
¡Intenta esto!
- Usa print(SynthDef) para ver todos los sintetizadores disponibles y pruébalos.
- Crea una pequeña línea de bajo con 1-8 notas, acordes con 1-8 acordes y una pequeña melodía.
- Usa algunos de los atributos: la variable de octava oct=, la variable de duración dur= y/o el valor de ganancia de amplitud amplify= para obtener un mejor resultado!