2.2 Efeitos do Player🔗
Efeitos podem ser adicionados à um Player do mesmo que jeito que os atributos são mudados; usando parâmetro nomeados. Assim como acontece com os atributos do Player, eles podem ser um valor único ou uma sequência. Essa página contem descrição de diferentes efeitos disponíveis no FoxDot e como aplicá-los
Muitos efeitos são aplicados usando um único valor, com o pan, mas alguns tem um único efeito "pai" e um ou mais efeitos "filhos". Um exemplo é o slide, que é o pai, e slidedelay é o filho. Se o efeito pai for definido como 0, o efeito não é aplicado. Valores filhos como 0 seram aplicados se o efeito pai não for zero.
# Efeito de slide adicionado
p1 >> pluck(dur=4, slide=1, slidedelay=0.5)
# Efeito de slide não adicionado
p1 >> pluck(dur=4, slide=0, slidedelay=0.5)
# Efeito de slide adicionado, com 0 delay
p1 >> pluck(dur=4, slide=1, slidedelay=0)
Sustentar🔗
Parâmetros: sus, blur=1
O parâmetro nomeado sus é usado para definir a "sustentação" da nota, ou seja, quanto tempo o som da nota irá tocar. Por padrão, isso é o mesmo que a duração da nota (defido pelo atributo dur) e é um valor mensurável em termos de "batidas". O seguinte código irá tocar uma nota por batida com duração de meia batida:
Use blur para criar um efeito "legato" (palavra que significa "ligado" em italiano). Isso é um termo musical que se refere ao quão suave as notas iram tocar entre uma e outra, ou misturar-se. O valor do sus é multiplicado pelo valor atual de `blur, logo o código a seguir duplica a duração da sustentação de todas as outras notas:
Panoramização Estéreo🔗
Parâmetro: pan
Panorama (em áudio) é a distribuição do som por vários altofalantes. Atualmente, o FoxDot usa apenas dois canais (para os alto-falantes esquerdo e direito), mas há planos para expandir isso para vários alto-falantes. Para trocar o panorama de um som, use o pan e defina o valor entre -1 (extrema esquerda) e 1 (extrema direita). O valor 0 no pan envia o sinal de áudio para ambos os alto-falantes igualmente.
# Alterne entre esquerda, centro, e direita
p1 >> pluck(pan = [-1, 0, 1])
# Troca duas notas ao mesmo tempo, mas em alto-falantes diferentes
p1 >> pluck((0, 4), pan=(-1,1))
# Mova o panorama do som gradualmente entre esquerda e direita usando o "linvar"
p1 >> pluck([0, 2, 4, 7], dur=1/4, pan=linvar([-1,1],8))
Modificador de Frequência🔗
Parâmetro: fmod
Isso adiciona um valor a frequência usada para gerar uma nota, mas apenas em um dos canais. Por exemplo, iniciar um player sem instruções irá faze-lo tocar continuamente o C central, com 261.6 Hz, por ambos os canais. Usando fmod = 10 nós iremos tocar a nota em 261.6 Hz em um canal e 271.6 Hz em outro. Isto cria uma "dissonância" notável ou um som "atonal", porque as fequências estão muito próximas. Usar um valor menor, como 2, cria uma espécie de efeito flanger.
# Efeio flanger simples
p1 >> pluck(fmod=2)
# Varia o efeito ao longo do tempo
p1 >> pluck(fmod=linvar([-10,10],8), dur=1/4, sus=1)
Vibrato🔗
Parâmetros: vib, vibdepth = 0.02
Vibrato é um termo musical que se refere a uma modulação continuada da nota, ou seja, uma modulação ao longo do tempo. Você pode definir a taxa do vibrato de uma nota usando o parâmetro nomeado vib e a profundidade (o tamanho da modulação) do vibrato usando o parâmetro nomeado vibdepth. A profundidade padrão é 0.02, o que significa que o vibrato flutua entre +/- a frequência da nota multiplicada por 0.02. Você também pode pensar nisso como uma flutuação entre 99% e 101% do valor da frequência.
p1 >> pads(dur=4, vib=4)
p1 >> pads(dur=4, vib=4, vibdepth=0.1)
p1 >> pads(dur=4, vib=4, vibdepth=1)
Slide🔗
Parâmetros: slide, slidedelay = 0
Isso é usado para alterar a frequência de uma nota ao longo do tempo. A frequência "desliza" para (1 + n) * freq, onde n é o valor fornecido ao parâmetro nomeado slide. Por exemplo, um valor slide de 1 fará com que a frequência deslize para o dobro do seu valor original (uma oitava acima). Um valor slide de -1 fará com que a frequência deslize para 0.
# Slide de oitava acima
p1 >> pluck(dur=4, slide=1)
# Slide para 0
p1 >> pluck(dur=4, slide=-1)
# Delay no efeito slide para inicar no meio da nota
p1 >> pluck(dur=4, slide=0.5, slidedelay=0.5)
Slide from🔗
Parâmetros: slidefrom, slidedelay = 0
Parecido com o slide, esse efeito também altera a frequência da nota ao longo do tempo, mas você especifíca onde o slide começa. A frequência "desliza" de (1 + n) * freq, onde n é o valor fornecido ao parâmetro nomeado slidefrom e termina na frequência da nota.
Por exemplo, um valor slidefrom de 1 deslizará a frequência a partir do dobro do seu valor original (uma oitava acima). Um valor slidefrom de -1 deslizará a partir de uma frequência de 0. Por padrão, o efeito de slide começa imediatamente após o início da nota. Para atrasar o início do deslizamento, pode usar o parâmetro nomeado slidedelay. Este deve ser um valor entre 0 (o início da nota) e 1 (o fim da nota).
# Slide oitava acima
p1 >> pluck(dur=4, slidefrom=1)
# Slide a partir de 0
p1 >> pluck(dur=4, slidefrom=-1)
# Delay no efeito slide para inicar no meio da nota
p1 >> pluck(dur=4, slidefrom=0.5, slidedelay=0.5)
Pitch bend🔗
Parâmetros: bend, benddelay = 0
Outro efeito semelhante ao slide, o pitch bend altera a frequência de uma nota ao longo do tempo, mas também retorna à sua frequência original no final da nota. Fora isso, funciona exatamente da mesma forma que o slide.
# Eleva uma oitava e volta novamente
p1 >> pluck(dur=4, bend=1)
# Eleva até 0 e voltar novamente
p1 >> pluck(dur=4, bend=-1)
# Atrasa o efeito de elevação para começar no meio da nota
p1 >> pluck(dur=4, slide=0.5, bend=0.5)
Cortar🔗
Parâmetro: chop
Isso "corta" o sinal de áudio em "n" partes, onde "n" é o valor que fornecido ao parâmetro nomeado. Ele usa a sustentação da nota (definida usando sus) para determinar o tamanho das partes, então também pode combinar chop e sus para criar efeitos interessantes.
# Corte um som em 4 partes
p1 >> pluck([0,1,2,3], dur=4, chop=4)
# Se a duração variar, os tamanhos dos cortes também variarão.
p1 >> pluck([0,[4,6,7]], dur=PDur(3,8), chop=4)
# Alterar um único valor para “sus” equilibra os tamanhos e cria um efeito legal de eco sobreposto.
p1 >> pluck([0,[4,6,7]], dur=PDur(3,8), chop=4, sus=2)
Coarse🔗
Parâmetro: coarse
É semelhante ao "chop", mas difere na medida em que o sinal de áudio não é "cortado", mas sim a taxa de controlo (a frequência das notas/a taxa de reprodução das samples). Isto pode ser útil em várias situações.
A primeira é ao reproduzir samples usando o sintetizador play: usar o chop basicamente reproduz apenas metade do áudio, pois a outra metade é silenciada pelo efeito "chop". Usar o coarse basicamente pausa o som e o retoma após um pequeno atraso. Isso é feito definindo a taxa de reprodução para 0, enquanto o chop definiria a amplitude para 0. Ouça a diferença executando o código abaixo no FoxDot:
# Usando chop
c1 >> play("C", dur=4, chop=16, coarse=0)
# Usando coarse
c1 >> play("C", dur=4, coarse=16, chop=0)
Outra uso para o coarse seria quando você quer obter "recortes" ao utilizar chop. Isto ocorre quando uma amplitude chega a 0 muito rapidamente e soa como um pequeno "pop". Execute estas linhas de código no FoxDot e ouça as diferenças:
A linha com coarse=4 parece soar um pouco limpa. Infelizmente, isso nem sempre acontece e o efeito coarse nem sempre pode ser aplicado a alguns sintetizadores, por exemplo, klank.
Filtro passa-altas🔗
Parâmetros: hpf, hpr = 1
Um som não trivial é composto por uma combinação de ondas sonoras que vibram em várias frequências e amplitudes, e algumas delas podem ser "filtradas" de um sinal usando um filtro. Isso é frequentemente conhecido como síntese subtrativa. Um filtro passa-alto remove partes de um sinal que estão abaixo de uma determinada frequência, ou seja, só deixa passar frequências que são mais altas do que o limite. Isso pode ser aplicado no FoxDot simplesmente definindo o valor hpf (abreviação de high-pass filter, filtro passa-altas em inglês):
# Defina o corte do filtro passa-alta para 2000 Hz
d1 >> play("x-o-", hpf=2000)
# Defina o ponto de corte para mudar ao longo do tempo usando um linvar
d1 >> play("x-o-", hpf=linvar([0,2000],32))
Você também pode definir a ressonância passa-alta para o filtro usando o parâmetro nomeado hpr. Isso às vezes é chamado de "rq" ou "hpq". À medida que esse valor diminui, os sobretons próximos ao valor de corte são amplificados – um valor próximo a 0 soará como uma onda senoidal oscilando no valor definido usando hpf. Tenha cuidado com valores muito pequenos e muito grandes, pois você pode obter sons muito altos!
# Defina o corte do filtro passa-alta para 2000 Hz
d1 >> play("x-o-", hpf=2000)
# Defina a ressonância para 0.2 - consegue ouvir a diferença?
d1 >> play("x-o-", hpf=2000, hpr=0.2)
# Defina o corte *e* a ressonância para mudar ao longo do tempo usando linvar
d1 >> play("x-o-", hpf=linvar([0,2000],32), hpr=linvar([1,0.1],28))
Filtro passa-baixa🔗
Parâmetros: lpf, lpr = 1
Assim como o filtro passa-alta permite apenas a passagem de frequências dentro de um sinal de áudio acima de um determinado ponto de corte, o filtro passa-baixa permite apenas a passagem de frequências dentro de um sinal de áudio abaixo de um determinado ponto de corte. A ressonância passa-baixa, lpr, funciona da mesma forma que a ressonância passa-alta.
# Defina o corte do filtro passa-baixa para 400 Hz
d1 >> play("x-o-", lpf=400)
# Alterando a ressonância - consegue ouvir a diferença?
d1 >> play("x-o-", lpf=400, lpr=0.2)
# Use um linvar para variar ambos os valores ao longo do tempo
d1 >> play("x-o-", lpf=linvar([500,5000],32), lpr=linvar([1,0.1],28))
Bitcrush🔗
Parâmetros: crush, bits = 8
Bitcrushing é um efeito de distorção criado pela redução da taxa de amostragem de um sinal de áudio e da largura de banda. Um valor de crush de 1 reduzirá a taxa de bits do sinal para o valor de bits, que é 8 por padrão. Cada incremento em crush a partir daí reduz a taxa de amostragem do sinal (começando em 44.1 KHz) pela metade. O efeito bitcrush requer a instalação do SC3 Plugins para funcionar.
# Aplicar o efeito bit-crusher
d1 >> play("X O ", crush=4)
# Reduza o número de bits para obter mais distorção
d1 >> play("X O ", crush=4, bits=4)
# Ou reduza a taxa de amostragem para obter um estilo de distorção diferente!
d1 >> play("X O ", crush=32, bits=8)
Distorção🔗
Parâmetro: dist
Isto requer a instalação dos SC3 Plugins. Este valor deve estar entre 0 e 1 e distorce o sinal de áudio.
# Adicione distorção aos players de samples e sintetizadores
d1 >> play("x * ", dist=0.2)
p1 >> dirt([0,5], dist=0.3, dur=8) + (0,4)
Distorção da forma de onda🔗
Parâmetro: shape
Este é outro tipo de distorção que afeta a forma da onda do sinal de áudio. Este valor deve estar entre 0 e 1, mas valores maiores também são aceitos (tenha cuidado com os auto-falantes!). Este efeito de distorção não requer nenhuma instalação extra.
# Adicione distorção aos players de samples e sintetizadores
d1 >> play("x * ", shape=0.5)
p1 >> dirt([0,5], shape=0.5, dur=8) + (0,4)
Distorção overdrive🔗
Parâmetro: drive
Uma distorção criada pela amplificação do som e, em seguida, pelo seu corte numa amplitude muito mais "normal". Os valores devem estar entre 0 e 1, mas são aceites valores maiores.
Reverb🔗
Parâmetros: room, mix = 0.1
Use o parâmetro nomeado room para adicionar reverberação a um som. Isso emula o efeito de reproduzir o som em uma sala e pode variar em uma escala de seco (0% de mixagem do som reverberado) a molhado (100% de mixagem do som reverberado). O parâmetro room define o tamanho da sala para emular o reverb, e mix é a porcentagem da mistura como uma fração (ou seja, 0.1 é 10%).
# Emule a reprodução dos sons em uma sala pequena
p1 >> play("x o ", room=0.25)
# Emule a reprodução dos sons em uma sala maior
p1 >> play("x o ", room=0.8)
# Torne o sinal mais "molhado"
p1 >> play("x o ", room=0.8, mix=0.8)
Eco🔗
Parâmetros: echo, echotime = 1
Esse efeito é frequentemente chamado de Filtro Comb, mas aplicá-lo a um único som dará o efeito de eco em uma sala. Use o parâmetro nomeado echo para definir a duração (em batidas) entre cada som repetido. O código a seguir reproduz uma única nota repetidamente, mas ouvimos o eco após 1 batida.
Observação: Às vezes, pode ser necessário adicionar reverberação usando o parâmetro room para ouvir o efeito de eco. Isso ocorre porque o SuperCollider para o som assim que ele é detectado como silêncio. Se o eco ocorrer após um período de silêncio, será necessário adicionar reverberação para manter o som "vivo", por assim dizer. Veja um exemplo:
# Não ouvimos nenhum efeito de eco
d1 >> play("x-o-", dur=1, echo=0.75)
# Adicione reverb e ouviremos.
d1 >> play("x-o-", dur=1, echo=0.75, room=0.5)
Por padrão, você provavelmente ouvirá apenas um eco do som original. Para ouvir mais ecos, aumente a duração do echotime:
# Ouvir apenas um eco
p1 >> blip(dur=4, echo=1)
# Agora ouvimos vários
p1 >> blip(dur=4, echo=1, echotime=8)
# Também podemos usar o eco para tornar os loops de bateria mais interessantes
d1 >> play("(x )( x)o ", room=0.1, echo=0.75/2, echotime=4)
Tenha cuidado ao usar muito eco em muitos players, pois isso consome uma grande quantidade de CPU e pode causar a falha do SuperCollider.
Giro panorâmico🔗
Parâmetro: spin
Este efeito move continuamente o som da esquerda para a direita e vice-versa, "n" vezes, sendo que "n" é o valor atribuído ao parâmetro spin. Isso depende da sustentação da nota (atribuída usando o parâmetro sus).
# Mova a panela da esquerda para a direita 4 vezes ao longo de 4 batidas
p1 >> pads(dur=4, spin=4)
# Mova a panela da esquerda para a direita 4 vezes ao longo de 1 batida
p1 >> pads(dur=4, sus=1, spin=4)
Fatiar🔗
Parâmetro: cut
Para interromper um som abruptamente (em vez de usar apenas um sus mais curto), você pode usar o parâmetro cut. Isso é especialmente útil ao reproduzir samples usando o SynthDef play, pois sus não tem efeito sobre o som em si. A duração em que o som é interrompido é o valor cut como uma proporção do valor sus, ou seja, um cut de 0.5 interromperá o som na metade.
# Pare o som imediatamente, em vez de deixar que ele desapareça naturalmente
p1 >> pads(dur=4, cut=0.75)
# Reduza os samples para um décimo do seu comprimento normal
d1 >> play("x-o-", cut=0.1)
Filtro formant🔗
Parâmetro: formant
Isso usa a classe Formlet do SuperCollider para adicionar um filtro de ressonância muito simples ao som, semelhante ao efeito "vowel" do TidalCycles. Os valores devem estar entre 1 e 7.
Tremolo🔗
Parâmetro: tremolo
Tremolo é a modulação da amplitude, que é feita no FoxDot usando uma onda senoidal. Isso oscila a amplitude de uma nota "n" vezes por batida, onde "n" é a entrada fornecida ao parâmetro tremolo.
Pitch shift🔗
Parâmetro: pshift
Altera o tom de uma nota em pshift semitons para cima ou para baixo. Isso também funciona para samples usadas pelo SynthDef play.
# Alterar o tom de um sintetizador
p1 >> pads(pshift=[0,1,2,3])
# Alterar o tom de um sample
p2 >> play("C", dur=2, pshift=[0,1,2,3])
# Pode ser usado para fazer acordes
p2 >> play("C", dur=2, pshift=[0, (0,4,7)], sample=3)
Glide🔗
Parâmetros: glide, glidedelay = 0.5
Glide, frequentemente conhecido como glissando, é muito semelhante ao efeito slide, exceto que você especifica o número de semitons a deslizar em vez do multiplicador de frequência. No futuro, isto poderá ser substituído pelo número de passos na escala para manter a consistência.