Transcrições
1. Visão geral do curso: Bem-vindo ao fazer música com código, o guia completo para
codificá-los como Sonic Pi. Este curso divertido é voltado para
músicos com pouca ou nenhuma experiência em codificação e
vai te ensinar como compor e tocar música usando o
código em seus instrumentos. Meu nome é Steven Moffat e
serei seu instrutor. Eu escrevo
software e crio música há mais de 30 anos. E durante esse
tempo eu aprendi, trabalhei e
ensinei mais de uma dúzia linguagens de programação
diferentes neste curso, que contém mais de quatro
horas de aulas em vídeo, você aprenderá a usar um estrutura popular e gratuita do
Sonic Pi. Você cobrirá tudo,
desde o básico da programação para usar
no Sonic Pi para design de
som e
performance ao vivo com explicações e exemplos detalhados e detalhados. Em cada estágio, você
aprenderá a criar música codificando padrões musicais
com since e samples. Conceitos fundamentais de programação, incluindo fluxo de
programa e Sonic Pi, são estruturas de dados
integradas. Como criar um sequenciador de bateria
e melodias em loop, progressões de
acordes e
linhas de base do zero. Como usar filtros e envelope
ADSR para design de som
baseado em código. O uso de
algoritmos de randomização para criar música generativa. Como adicionar efeitos
como distorção, delay e reverb para deixar seus sons muito
mais interessados. Você aprenderá a controlar
midi e áudio a partir do seu código e
integrá-los às suas apresentações. Ao final do curso,
você poderá
aplicar o que
aprendeu para criar composições musicais
exclusivas
e tocar ao vivo usando código. E você verá que qualquer pessoa
pode aprender a programar. Eu levaria cada novo conceito passo a passo e
é realmente muito mais fácil do que você pensa, o curso é voltado para músicos
que desejam obter algum
conhecimento de programação usando o código como um instrumento
para composição, inspiração, gravação
e performance ao vivo. Você não precisa de nenhuma experiência anterior em
codificação ou conhecimento
profundo de matemática
ou ciência da computação. Ou você precisa de alguns conceitos
musicais básicos, como nota, escalas, acordes e ritmo. E um computador Windows mac ou
Raspberry Pi. Então participe e aprenda a usar o código para criar qualquer
música que você possa imaginar. E talvez até alguns que você não possa.
2. Apresentação: Olá e bem-vindo a este curso, onde
veremos o uso código para fazer música tanto para apresentações
ao vivo quanto
para nossas composições. Então, eu assumi absolutamente nenhum conhecimento prévio
de programação para este curso. Este curso é muito
voltado para músicos que gostariam usar código
para compor
e tocar música, ou apresentar cada
conceito de programação passo a passo. Vamos bem
devagar e haverá muitas oportunidades
para praticar. Agora, existem algumas
coisas que você deve ter para tirar o máximo
proveito do curso. O primeiro deles
é um computador. Agora, qualquer computador Windows, Mac ou Raspberry Pi
ficará absolutamente bem. A segunda coisa é um conhecimento musical
básico. Agora não estamos falando de teoria musical
avançada aqui, mas contanto que você
tenha conhecimento de notas, escalas e oitavas, esse tipo de conceito, então você ficará absolutamente bem. E por último, eu definitivamente
recomendaria que você
ouvisse o curso em um bom par de fones de ouvido ou em
uma boa configuração de alto-falante estéreo. Isso é para garantir que
você seja capaz de ouvir as nuances de algumas
das mudanças nos
sons que criamos. Então, com isso em
mente, pegue um café e vamos
mergulhar de cabeça.
3. Como obter o Sonic Pi: Agora, o software que vamos
usar com este curso é o fantástico Sonic Pi, que foi criado por
Sam Aaron e se tornou extremamente popular na cena
do algoritmo. E é uma
estrutura de música baseada em Ruby, que é uma linguagem de programação. se preocupe muito com isso, mas pode ser interessante
para você se você tiver algumas senhas e experiência, o Sonic Pi é executado no Windows e Mac e, como o
nome sugere, na verdade foi projetado para funcionar particularmente bem
em um Raspberry Pi. Então, vamos ao site
do sonic Pi e ver como fazemos o download
e a instalação deles. Aqui estamos no
site do Sonic Pi e aqui você pode ver que há botões aqui
para baixar para Windows, Mac OS e
Raspberry Pi. Mas há muito
mais neste site. Então, eu definitivamente
encorajaria você a se envolver
com a comunidade. Veja os exemplos, leia
os tutoriais. Há muitas informações
excelentes aqui. Agora, o Sonic Pi está
disponível gratuitamente. É muito popular na educação para ensinar
crianças a programar. Mas isso requer
muita manutenção. E Sam tem feito isso de
graça por anos. Então, se você puder pagar, eu definitivamente recomendo
que você role um pouco para baixo no site
e use patria e, ou GitHub Sponsors para doar um pouco
de dinheiro para Sam, o que você puder pagar
para manter essa iniciativa fantástica em andamento.
4. Como conhecer a interface de usuário da Sonic Pi: Ok, então, depois de instalar o Sonic Pi,
vá em frente e execute-o e você
deverá
receber vá em frente e execute-o e você
deverá uma
tela semelhante a esta. Não se preocupe se não
for exatamente assim. Mostrarei
como configurar
a tela nesta sessão. Então, vamos examinar cada
parte da interface do usuário passo a passo. Portanto, a parte principal
da tela é
ocupada pela janela de código. É aqui que realmente digitamos o código e é aqui que
podemos executá-lo a partir de dois, usando esses botões aqui em cima
que são executados no botão Parar. Assim que terminarmos
com nosso código, assim que o código estiver completo,
podemos clicar no botão Executar. E aqui estão os resultados. Se o código estiver em execução
por um longo tempo, queremos que ele pare. Podemos pressionar o botão de parada. Se quisermos gravar
a saída do código, qualquer música que
foi regenerada com o código para um arquivo WAV. Podemos pressionar o botão Gravar e, em seguida, executar o código e obteremos um arquivo de áudio produzido. Podemos salvar e carregar nosso código. Agora, por padrão, o Sonic Pi vai persistir seu
código entre as sessões. O que quero dizer com isso
é que se você digitar algum código no Sonic Pi
e sair do Sonic Pi, próxima vez
que você voltar, esse código que você
tinha lá anteriormente, estará lá e disponível
para você na tela. Portanto, ele tem seu próprio mecanismo de salvamento
embutido. No entanto, eu não confiaria nisso se você tem um
pedaço de código, ou seja, você está particularmente
orgulhoso ou é um pedaço de
composição completa, ou é algo com o qual
você deseja compartilhar seus amigos ou compartilhe com
alguém da comunidade, então definitivamente use,
use os botões lá para salvar seu código e fazer
uma boa cópia de backup dele. Novamente, uma vez que você tenha
um código ou um pedaço de código que você deseja carregar de volta em um arquivo que
você deseja voltar, você pode simplesmente fazer isso através do botão de carregamento.
Lá embaixo. Temos esses
números de 0 a nove. Esses são diferentes. Você pode pensar
nessas guias como para que elas sejam chamadas de
buffers dentro, dentro do Sonic Pi, podemos pensar
nelas como guias separadas. Sempre que
clicarmos no botão Executar, vamos executar o
código dentro desse buffer. Então, se eu estiver aqui no momento, se eu clicar em executar e eu vou
executar o código dentro do buffer um. Se eu clicar aqui,
agora no buffer seis, vou executar o código
que está apenas no buffer seis. No canto superior direito, temos
dois controles para controlar o tamanho da fonte
na janela de código. E eu vou usá-los mais tarde para tornar o código bom e grande para que você possa
acompanhar de forma agradável e fácil. Vamos lá, vamos dar uma olhada
no resto
aqui então. Então, o primeiro é o escopo. Então, esse painel aqui no canto superior
direito é o escopo. E isso, por padrão, é
definido como um gráfico de espectro. Você verá isso quando começarmos a gerar algum ruído
na próxima lição. Mas isso pode ser alterado
por meio do painel de preferências e mostrarei como
fazer isso em um segundo. próxima seção aqui é
provavelmente a poça mais
útil e útil que não seja a janela de código, e
esse é o log. E isso vai
mostrar exatamente o que está acontecendo enquanto
seu código está sendo executado. E você também pode enviar itens para o log para
obter informações. Portanto, essa janela é
particularmente importante. O painel de sugestões
mostrará o que
realmente está acontecendo
no Sonic Pi. Neste painel você
achará particularmente importante quando se trata de apresentações
ao vivo. Em seguida, abaixo aqui na
parte inferior da tela, temos o painel Ajuda. O painel teve
um grande esforço. Há, há
um tutorial completo, há links para outros artigos. Existem exemplos de programas para produzir diferentes
tipos de música. Há informações
sobre o incenso da conta, sobre os
efeitos e amostras incorporados. E
há informações sobre o próprio idioma
para você procurar
instalações
de ajuda
absolutamente fantásticas no Sonic Pi. Então, por favor,
dê uma olhada lá para ligar e desligar cada um
desses painéis. Eu posso simplesmente apertar
esses botões de alternância aqui. Então eu posso, se eu apertar
o botão Ajuda, o destaque é removido
junto com o painel de saúde. Quando eu clicar nele novamente, o painel
Ajuda reaparecerá. E o mesmo para esses outros
três botões aqui em cima. O que não vimos
é o painel de preferências. Aqui dentro. Podemos ver um
monte de tipos diferentes de itens
de configuração dentro Sonic Pi que irão rapidamente
passar por eles. Não analisaremos
cada um deles em detalhes e
os usaremos durante todo o curso. Mas vou
mostrar algumas das coisas importantes são
as configurações que você pode
querer usar desde o início. O primeiro deles
na guia Áudio
é o volume principal. E isso simplesmente controla o volume de saída do Sonic Pi. Mas não há mais
nada aqui com o qual você realmente precise se preocupar ainda. Dentro do IO, então você
pode ver aqui que eu tenho um
teclado midi conectado, e essa é realmente a única coisa
interessante aqui por enquanto. Agora, se você não
tem um teclado midi, não se preocupe. Você não precisa de um para Sonic Pi. E, de fato,
só o usaremos em uma parte muito pequena do curso. Mas é
interessante ser capaz de
criar um som sensorial, por
exemplo, em midi, à vista Pi, e depois tocar esse sentido com
seu teclado midi ou outro dispositivo de entrada midi. Mas vamos fazer isso muito mais tarde, mas não se
preocupe com isso por enquanto. Este você pode querer
brincar um pouco. Isso está configurando
as preferências para o editor de código,
para a janela de código. E você pode ver que eu
tenho isso definido em um tema
leve aqui. Eu acho que é legal,
fácil e fácil para você
ler este curso. Mas se você preferir no
modo escuro, você pode usar isso. E depois, há
outros tipos diferentes de
janelas à medida que
avançamos por aqui. Vou voltar
ao tema da luz aqui. E aqui, onde
podemos ativar
e desativar os painéis e alternar todas as informações que queremos que sejam mostradas
nesses painéis. Então, aqui, podemos ver que estamos mostrando os números das linhas estavam mostrando preenchimento de código, guias, títulos, botões, etc. Vou deixar todos esses
ligados por enquanto, mas fique à vontade para ir e configure isso para ser exatamente
como você prefere trabalhar. Indivíduos, então podemos olhar para os diferentes
tipos de escopos. Eu mencionei que existem diferentes
tipos de escopos aqui. Portanto, por padrão, é definido
para o gráfico de espectro, mas temos
gráficos estéreo mono como escopos independentes. Existem os gráficos que
ilustram as relações de fase,
todos os tipos lá. Eu prefiro deixar o meu
no gráfico do espectro. Eles não são alternados, então você pode ter mais de
um gráfico mostrado ao mesmo tempo. Mas, ao longo deste
curso, vamos
deixá-lo no gráfico de espectro, mas outros podem ser úteis para você. Então, à direita,
temos o painel de transparência, e isso está controlando
a transparência da própria
interface do Sonic Pi. Agora, por padrão, em 99% dos casos, você
deixará esse conjunto como 0. Mas, como mencionei anteriormente, Sonic Pi se tornou
muito popular em coisas como os
algoritmos vistos e as pessoas estão fazendo
apresentações ao vivo com o Sonic Pi, mas eles estarão no
palco e projete a interface do usuário do Sonic Pi na parede atrás deles
ou uma tela atrás deles. E, na verdade, parte
da experiência, parte da performance
é assistir ao código
da pessoa ao vivo e ouvir a música
e dançar sozinho. Então,
o que você pode fazer é definir a transparência
da janela aqui e
você pode ter alguns efeitos visuais
no vídeo ou algo rodando em segundo plano
com Sonic Pi a parte superior com a
transparência ajustada um pouco para que o Sonic Pi apareça
na parte superior do vídeo. Eu sou muito legal. Aqui dentro. Podemos entrar e
verificar se há atualizações. Deixo o meu para verificar se há
atualizações a cada duas semanas. Mas se você quiser, você pode clicar no botão verificar agora e ele irá verificar se
você precisa de uma atualização. E, finalmente, no tipo de
idioma, você pode definir o idioma para a interface do usuário
e para o tutorial. Então, como eu disse, há uma
comunidade próspera e fantasticamente amigável em torno do Sonic Pi. Pessoas da
comunidade
traduziram os tutoriais
e traduziram a interface do usuário. Portanto, se o inglês não for
seu primeiro idioma e você preferir usar
seu idioma nativo, então você pode ir e
selecioná-lo em. Aqui. Vou clicar no botão Fechar
para fechar esta janela. Uma última coisa que
quero mostrar aqui é apenas este painel de informações. E isso vai
mostrar um pouco de
uma tela inicial onde você pode obter todo tipo de
informação sobre o Sonic Pi. E você pode ver aqui
um link para o site. Há um link para o Twitter a seguir para atualizações
sobre o Sonic Pi. Eu definitivamente
encorajaria você a fazer isso. Você pode ver aqui que sua versão
atual é, ou minha versão atual é 4.3. Basta verificar se você está
na versão 4.3 ou superior. Caso contrário, vá até o painel de preferências e clique em Atualizar para obter
a versão mais recente. Ok, isso está dando a
você uma visão geral da interface do usuário. Agora é hora de
fazer barulho.
5. Vamos fazer algum barulho!: Então vá para a janela de
código aqui, vou aumentar um pouco
a
fonte para que você possa vê-la. Vamos começar com talvez o programa mais simples que podemos imaginar. Então, eu vou
apenas digitar endireita esta nota Coburn e vou digitar
o comando play em. O comando play é um
dos comandos que podemos usar para dizer ao Sonic Pi para
fazer barulho para nós. Então, vamos até aqui
e podemos jogar 60. Então, basta digitar play 60 em sua janela de código e
clicar no botão Executar. E aí estamos nós. Então Sonic Pi é omitido
algum ruído para nós. Então eu clico no botão
Executar aqui para fazer isso,
vou fazer de novo. Mas para evitar que você alcance o teclado
e o mouse ao longo do tempo, você também pode pressionar Command R em um Mac ou Control R
em um PC com Windows, e isso fará
a mesma coisa. Então, vamos
detalhar isso um pouco. Portanto, o jogo de comando
é, como eu disse, um dos comandos e provavelmente
o comando mais útil,
ou o comando mais usado
inicialmente para
dizer a um Pi sônico para
omitir algum ruído. Mas sobre o que é o 60? Bem, é 60 é na verdade
um número de nota midi. Então, a maneira como o midi
funciona é que
existem números de 0 a 127, então 128 notas midi diferentes. E cada um deles corresponde a um nome de nota e nomes de notas
normais. Então podemos ver aqui que a nota
midi número 60 é um C para uma nota C
na quarta oitava. E podemos olhar
aqui e podemos ver que na verdade, os nomes das notas midi correspondem a uma
frequência, pois sabemos que quanto maior a frequência,
maior a nota. Portanto, um C4 é 261,63 hertz. E depois há
outros aqui. Para que possamos subir e descer. Cada incremento ou decréscimo
de um é um semitom. Então, de 60 a 61 nos leva
de um dó para um dó sustenido. De 61 a 62 textos
eram dois a d 263
nos leva através de D-Sharp que
corresponde lá para cima e para baixo. Agora eu incluí um caractere de nota midi
completo dentro dos recursos
do curso. Mas, por enquanto, é
importante saber que podemos usar um
número de nota midi ou um nome de nota midi. E no momento estamos
usando a nota midi número 60. Então, quando executamos nosso
código, está realmente tocando um C na
quarta oitava. Então isso é ótimo e esta é nossa primeira parte do som do Sonic Pi, mas não vai
ser o número um. Então, vamos adicionar um pouco mais de código. Então, para adicionar outra linha de
código, basta pressionar return. E aqui vou eu. Deixe-me tornar isso um
pouco maior para você. Lá vamos nós. Então, para
adicionar mais algumas notas, eu posso apenas adicionar
mais alguns comandos de reprodução. Então, vamos digitar uma peça 64. Vamos adicionar uma peça 67. Vamos apertar Executar ou, ou
Comando R. Estamos, então há três notas
tocando todas ao mesmo tempo. Então isso é a, C e E e um G. Se olharmos para as notas midi são uma energia C
e E foi 606467, e isso nos dá
uma tríade dó maior. Agora, todas essas notas
estão tocando ao mesmo tempo. Então, o que estamos efetivamente
produzindo aqui como um acorde, se eu quiser tocar essas
notas em ordem crescente, então eu preciso dizer ao Sonic Pi para deixar um pouco de tempo. Vou deixar um descanso
entre essas notas. E eu posso fazer isso usando
nosso próximo comando, que é o comando sleep. Agora, então, entre
cada nó,
vou adicionar um adormecido. Isso está dizendo ao Sonic Pi
para dormir por uma batida. Ok, então todos os tempos
dentro do Sonic Pi ou dentro de batidas. Por padrão, as
batidas por minuto ou o BPM para um programa
Pi sônico é 60. Então, 60 batimentos por minuto. Então, 60 batimentos por minuto. Se dormirmos por uma batida, então vamos
dormir por 1 segundo. Então, vamos adicionar outro sono aqui. uma vez por mais uma batida, por mais um pouco.
E vamos jogar. E aí estamos nós. Há a nossa tríade maior de 33
notas, mas desta vez arpejada, tocando uma nota após a outra em vez de como uma corda única. Para que eu possa colocar
o que quiser em termos do par de dormir. Então eu poderia mudar isso
para dormir por dois. E isso vai
dormir por duas batidas. Ou eu poderia dormir por frações
de segundo também. Então eu posso dormir por meia, meia batida ou meio meio segundo porque estamos a 60
batidas por minuto. E eu vou te mostrar como
mudar as batidas por minuto um pouco mais tarde. Aí estamos nós.
6. Como usar nomes de notas MIDI: Além de usar os números
midi aqui, também
podemos usar
os nomes das notas midi. Portanto, podemos ter exatamente
a mesma coisa aqui, mas podemos usar os
nomes das notas IEEE C4, E4 e G4. Então, vamos tentar isso. Então, se eu quiser usar um nome de
nota, preciso usar um prefixo com dois pontos. Então eu simplesmente acertei aqui
o cólon C quatro. Posso usar uma mistura, então não preciso
escolher uma ou outra. Eu poderia usar C4 aqui e 6467. Isso funcionará perfeitamente bem, exatamente como era antes. Às vezes, prefiro usar os nomes das notas quando sei
o que elas vão ser. Mas os números das notas podem ser
realmente úteis quando estamos fazendo mais tipo de trabalho
algorítmico mais tarde. Agora, não se preocupe com isso,
por enquanto, é uma palavra grande, mas nada com que se preocupar. Mas você verá que as notas
midi podem ser, os números podem ser úteis mais tarde. Vamos mudar isso para um C4. Desculpe, isso deve ser um a4, G4. E novamente, isso vai nos
dar a tríade maior ou C maior. Mas e se eu quiser
usar objetos cortantes e rasos? Embora seja muito fácil de fazer. Então, se eu quiser usar um
nivelamento, achatar o, achatar o terceiro aqui e
esta tríade e transformá-lo em um acorde menor, arpejo menor. Eu uso isso apenas usando
o b minúsculo. Deixe-me também mudar
esse E para um Mi bemol. Eu também posso usar a,
um S para denotar um ponto. Então, se eu quisesse dizer
em vez de Mi bemol, eu queria dizer Ré
sustenido, mesmas notas, mas eu poderia fazer isso aqui, então eu poderia apenas ir um D. E usamos o S minúsculo para nítido na oitava número quatro, onde devemos mudar oitavas. E se eu quiser
descer uma oitava, eu poderia, eu poderia simplesmente mudar
o número ideal aqui. E isso vai jogar
uma oitava abaixo. Novamente. Realmente, como você pode ver, realmente, realmente não
importa em que ordem eu planeie. Então, se eu quisesse fazer uma
inversão, por exemplo, talvez eu jogue o G primeiro. Então, vamos colocar isso lá em cima. Desta vez vou precisar
dormir aqui. 2.5º. Podemos mover este do final. E aí estamos nós. Então brinque por aí
e produza algumas pequenas peças
musicais usando apenas os nomes das notas
midi, lembrando que usamos um b
minúsculo para um flat, um s minúsculo para um sharp, ou você pode usar os números das
notas midi lá. Faça uma brincadeira, crie uma pequena melodia para
você. Eu usaria os intervalos para fornecer o resto entre as
notas que você deseja.
7. Comentários de código: Então, vamos mudar isso de volta. Vamos colocar o sono de volta aqui e jogar aquele G3 no final. Loops. Novamente. Vamos executar isso. Ok, então essas são a nossa
tríade dó menor, arpejo Dó menor. Então, talvez queiramos
lembrar do que chamamos isso. Então, vamos subir aqui e
podemos usar o comando hash ou o sinal de libra ou o sinal de
hash,
dependendo de qual lado do
Atlântico você é. Podemos usar o sinal de hash para
dizer que isso será um comentário em nosso código e adicionar um comentário é apenas um pedaço
de texto só para nós. Portanto, não é executado
pelo Sonic Pi. E podemos digitar o
que quisermos aqui. Então, poderíamos dizer, este
é um arpejo em dó menor. Como eu disse, esse
código não
será executado pelo Sonic Pi, mas são apenas notas que podemos colocar no
código por nós mesmos. Nós nos referimos como um comentário de código. Novamente, se eu, se eu executar
isso, é completamente ignorado
pela torta sônica, mas nos permite
colocar comentários. Uma das
coisas comumente feitas por programadores é
usar comentários apenas para dizer a um Pi sônico para simplesmente ignorar
um pedaço de código por enquanto. Então, se eu quisesse
experimentar isso e dizer,
ok, bem, o que acontece
se eu remover esse sono? Bem, em vez de excluí-lo
e, se eu não gostar, tive que digitá-lo novamente mais tarde. Eu posso simplesmente colocar um sinal de
libra ou sinal de hash
no início e executá-lo novamente. E desta vez ele vai
ignorar esse sono. Podemos ver que ele toca
um D sustenido e o G. ao
mesmo tempo. Novamente, se eu não gostar disso, vou em frente e
removo esse comentário. Estou prestes a saber como começamos. Agora há uma
tecla de atalho no Sonic Pi, um pouco como o comando R ou
controle R para executar o código, havia uma tecla de atalho, se eu quiser comentar algo. E isso é muito
bom para se lembrar apresentações
ao vivo é que você deseja ativar e desativar bits de código. E eu posso pressionar a tecla Command
e a tecla de barra, e isso adicionará este pequeno
símbolo na frente. Agora, parece um
pouco diferente, mas funciona exatamente da mesma forma. Dois hashes e um lado de tubo. Isso acabou de colocar em
um comentário um pouco do código. Então, onde quer que eu esteja em um, em um, em uma linha de código, eu posso simplesmente pressionar Command ou
Control e barra para frente. Ele comentará
essa linha de código. E então, quando eu corro de volta para o tribunal, porque
as dormidas foram removidas. Se eu quiser remover esse comentário de
código novamente, eu poderia simplesmente voltar
novamente em qualquer lugar nessa linha e pressionar command
e forward slash novamente, ou Control and forward slash, e isso removerá
esse código comentário. E então estamos de volta
ao nosso arpejo.
9. Opções de reprodução: Assim, além de usar o código para definir o tom da
nota que queremos tocar, também
podemos adicionar
várias opções. E você verá isso
em todas as opções do Sonic Pi, que
nos permitem personalizar os sons
que estão sendo produzidos. Então, vamos começar
com dois simples
que podemos adicionar
aos comandos de reprodução. Então, vamos
criar isso. E vamos apenas adicionar um jogo simples e
agradável, 60. Ok, então isso vai tocar
no volume padrão para Sonic Pi. Mas parte da música é a
dinâmica da música e a dinâmica da música envolveu o volume em que as
notas estão sendo tocadas. Então, se quisermos mudar, podemos adicionar uma opção a isso. Então, para Sonic Pi, isso é chamado de opção de
amplitude. Então, vamos apenas adicionar isso. Então, se eu acertar uma vírgula
e uma vez eu acertar uma vírgula após os
anos sessenta, me
permite adicionar várias opções
diferentes. A opção de amplitude ou a opção de volume é
simplesmente chamada de AMP. E você pode ver
isso aqui na janela de conclusão de código. Então Sonic Pi é,
novamente, tente nos ajudar. Então, o que é usado? As amplitudes. Então vamos dizer AMP e
depois dizemos dois pontos. E agora vamos
definir a amplitude. A amplitude e o Sonic Pi
são definidos por um número, então 0 não é nenhum volume. Um é o volume de saída
padrão normal, mas podemos subir a partir daí também. Então, por exemplo, se eu
definir a oportunidade para zero 0,5 e pressionar play, isso acabou de ser produzido na
metade do volume normal. Agora é muito difícil
ouvir essa diferença aqui. Então, vamos adicionar um pouco mais de
código para demonstrar isso. Então, vamos começar
com uma jogada aos 60. Essa será
a amplitude padrão. Dormirá por duas batidas. E então vamos tocar
este na metade do volume. E você deve ser capaz
de ouvir a diferença. Ok, então você pode ouvir que a segunda nota foi
definitivamente mais silenciosa. Vamos adicionar outro sono. E novamente, tocaremos aos 60, mas desta vez vamos tocar
com o dobro do volume normal. Podemos definir isso como uma
oportunidade para uma área. Muito simples de configurar. É importante lembrar
que as opções que
definimos aqui se relacionam apenas com a
nota que estamos tocando. Então, eles só se
relacionam com essa nota. Então, se eu for e fizer outra, outra linha aqui, eu
vou jogar 60 fora do avião
sem nenhuma opção. Assim, podemos ouvir a linha sete tocada apenas com a amplitude
padrão de um, que é exatamente o
equivalente a digitar isso. Mas as
configurações que fazemos, as opções que colocamos aqui, a opção de amplitude neste caso se
relaciona apenas com essa nota
que está sendo tocada. Ele não define a amplitude para todos os
nós futuros, por exemplo. Além da amplitude,
temos pan. Então, essa é a segunda opção
simples que
vamos ver agora. E
o pan é simplesmente definir onde o som aparecerá dentro
do campo estéreo. Você é da esquerda para a
direita, muitas vezes chamado de equilíbrio. Então, vamos fazer isso de novo, mas vamos,
vamos começar aqui. Então, podemos dizer novamente, um jogo 60 por padrão vai
enviá-lo para o meio. Portanto, você terá uma quantidade
igual dessa nota
no alto-falante esquerdo e direito ou no fone de ouvido esquerdo e direito. Então, se eu
dormir de novo para dois, desta vez, vou usar
a opção de panela. Então eu pressiono uma vírgula e
direi Pan colon. Agora, garanta. Sonic Pi é definido por um
valor entre menos 11. Então, menos um nos dará uma
panela até a esquerda. Um livro nos deu uma panela
até a direita. Um 0 paletará direto
no meio, mas eu até um volume igual
no alto-falante esquerdo e direito. E esses valores não
precisam ser menos um ou um. Eles podem ser qualquer valor
entre menos 11. Então, se eu quiser
no meio do alto-falante esquerdo, posso definir
o pan como menos
0,5, por exemplo. Só para demonstrar isso, vamos mover para a esquerda e para a direita. Então, vamos
cancelar a esquerda primeiro. Vamos direto
para o centro, mas pan para a esquerda,
vamos dormir novamente. E vamos percorrer todo
o caminho para a direita. Somos bastante simples
e você pode realmente, se você olhar para o escopo e o canto superior direito
aqui, você verá isso. Você poderá ver
isso refletido
na mira, mesmo se
não estiver usando fones de ouvido. Então, todas as coisas
acima da linha são o alto-falante esquerdo e as coisas abaixo da linha no gráfico
são o alto-falante direito. Eu posso combinar isso. Então eu poderia, eu poderia então
fazer outra cor e dizer, eu quero definir a
amplitude também. Legal. Digitando desculpas. Então eu posso definir a amplitude
deste para ser metade. Como eu disse, a amplitude
deste deve ser duas vezes.
Vamos tentar isso. Podemos ouvir, ou talvez você tenha ouvido um pouco
de distorção lá. Eu certamente fiz. Com esse. Você só precisa ter
um pouco de cuidado com a amplitude, porque
conforme você
avança, sobe para
volumes mais altos, você
terá alguma distorção e corte geralmente não
tende a ir acima de 1,52. Somente em raras
ocasiões em que você realmente quer isso como parte
da composição. Ok, então é isso
para quatro opções. No próximo vídeo,
falaremos muito rapidamente sobre batidas por minuto.
10. Como configurar o ritmo: Ok, então aqui
temos um pouco de código que você já deve
entender completamente. Basta ler e certificar-se de que você
entendeu. Mas muito rapidamente vamos
tocar uma nota no midi note 60. Vamos dormir por uma batida. Então vamos tocar
outra nota aos 60. Vamos dormir por uma
batida e depois vamos
tocar uma nota final,
nota número 60. Agora, como mencionei
brevemente anteriormente, o quando,
quando eu defino qualquer tipo
de duração e ele opções relacionadas ao
tempo dentro do Sonic Pi, ele é medido em batidas. Agora, para manter isso simples e
agradável. Então, dormir aqui, por exemplo, é dormir por uma batida entre esses nós. Agora, para manter isso
agradável
e simples e tornar a
matemática agradável e fácil. Por padrão, tudo o
que tocamos no Sonic Pi é definido para
60 batidas por minuto. E isso é feito apenas para tornar a matemática agradável e fácil
para que eu possa
olhar para aquele sono e eu possa
pensar nisso como sendo um segundo ou
sendo uma batida, porque 60 batidas por
minuto é o mesmo coisa. No entanto, pouca música produziu
60 batidas por minuto. Então, precisamos de uma maneira de ficar fora de controle do que
batem por minuto. E eu
vou te mostrar como fazer muito brevemente. Então, tudo que eu preciso fazer é ir para
o topo do programa aqui. Eu só vou usar
esse comando simples. Então, eu vou dizer para
usar sublinhado BPM. Oh, coloque cento e dez,
cem, dez batidas por minuto. Agora, quando eu toco,
indo muito mais rápido, ele está fazendo 110 batidas por minuto. Se eu apenas comentar
isso usando Command ou Control e barra direta ou
adicionando um sinal de libra ou um
sinal de hash no início. E execute isso de novo. Lá estamos de volta a
60 batidas por minuto. Se eu remover esse comentário. Aí estamos nós. Então é assim que
podemos definir as batidas por minuto dentro,
dentro de nossos programas.
11. Sintetizadores: Ok, então isso é
ótimo. Na verdade, podemos produzir uma música
usando código e
podemos descansar entre as notas ou podemos tocar todas as
notas juntas como um acorde. Você pode definir a amplitude,
podemos definir a panela. Mas os sons que
estão produzindo não são muito interessantes
para o seu público
assim que podemos ficar
muito entediados ou aquele
som de bipe saindo do Sonic Pi. Felizmente, o Sonic Pi
tem mais de $0.40 incorporado. Há uma lista
na tela agora. Vamos dar uma
olhada em alguns deles agora. E há um
bom senso aqui. Então, vamos voltar
ao Sonic Pi. E podemos ver aqui que
temos apenas uma tríade de dó maior. E usar um dos sensores é muito, muito simples. Então, o que eu vou fazer,
eu vou subir aqui. É muito parecido com o que
dissemos usar o BPM antes para
usar batidas por minuto. Podemos dizer que use um sintetizador. Então, podemos dizer que use sublinhado. Synth, aperte a barra de espaço,
atingimos os dois pontos, e então digitamos o
nome do sintetizador que queremos. Então, só para este, vamos usar a fonte de
sublinhado tecnológico. Você pode ver que a ajuda na tela
está chegando para nos avisar. E quando eu pressionar Executar agora, você ouvirá que ele
tocará a tríade R, Dó maior usando
os textos. Incrível. Muito, muito mais
interessado em som. Agora, eu poderia usar
qualquer sintoma aqui. Então, tudo o que preciso fazer é acertar o códon e
digitar outro. Então, para três ou três, por exemplo, eu poderia
dizer TB três ou três. E há todo tipo
de coisa boa desde aqui. Então, para os anos 1800,
temos lucro. E como eu disse,
há muito desde aqui agora, como
mencionei anteriormente, a seção de ajuda dentro do Sonic
Pi é absolutamente fantástica. Incluído aqui para você. Se você descer para
o canto inferior esquerdo, verá essa pequena
guia chamada sense. Novamente, se você não tiver a seção de
ajuda aberta agora, vá até o topo e use esse botão para
ativá-la ou desativá-la. E então aqui
temos a sensação de que há uma lista completa de todos
os sentidos aqui. Então, vamos dar uma olhada na lâmina. Então eu posso ir até aqui. Só preciso digitar o nome. Mais pesado. Podemos simplesmente copiar e
colar isso aqui. Então você pode ver que há uma lista
completa de sincronização aqui, que é exatamente a mesma
lista que eu acabei mostrar no slide anterior. Vá em frente. Você tem um pouco de música com a qual está tocando,
com a peça. Venha, vá em frente
e
brinque com o sentido e veja quais sons
interessantes estão lá.
12. Como aplicar filtros de sintetizadores: Ok, então uma das coisas que pensamos
quando pensamos, já que pensamos em filtros. E há filtros
embutidos no sentido do Sonic Pi. Então, uma das coisas comuns a fazer com um filtro
de sintetizador é o corte. E definimos isso usando as opções da
mesma forma que
definimos amplitude e panorâmica anteriormente. Então, vamos começar do
zero aqui. E então vamos
usar as fontes de tecnologia. Então use sublinhados sintetizador,
códon, fonte de tecnologia. E depois vamos jogar,
vou jogar um E três. Então, um E na terceira oitava.
Isso soa assim. Se eu fosse definir o
ponto de corte do filtro, simplesmente coloquei uma vírgula, ensinei o corte de dois e depois definirei
o ponto de corte em 70. E isso é o
que parece. Ok, então isso está definindo
o custo do filtro. Você pode ouvir isso Isso está realmente ajustando a forma como
a nota soa. Então vamos, vamos adicionar outro,
outro E3 aqui para que você possa fazer
a diferença de adormecer. Isso vai
reproduzir a E3 sem que o corte do
corte do filtro seja definido. E o, e depois o
E3 com um ponto de corte. Aí estamos nós. E novamente,
do lado direito, você pode ver na janela de registro exatamente
o que aconteceu aqui. Jogamos tech soars com a nota em 52, que é uma E3. Em seguida, tocamos
as ordens dos textos com uma nota em 52, com um corte em 70. E você pode ver que
o tempo que pagamos
isso, desta vez parte dos logs aqui, é quando o som
foi reproduzido ou quando a ação ocorreu em relação a quando pressionamos o
botão Executar, o início da peça. Então, imediatamente no tempo 0 é 0. Jogamos 52 e,
dois segundos depois, jogamos os têxteis novamente, novamente com 50 a 70. Para que essa parte da lei também
possa ser realmente útil para ver o que aconteceu em que ordem
e quando aconteceu. E, novamente, é muito
simples
descobrir que agora com um
simples pedaço de código que tem um código
fica mais complexo, você encontrará o
log cada vez mais útil. Temos falado
sobre sintetizadores e conceitos
de
sintetizadores como filtros, e eles estão aplicando filtros. E em um segundo, vamos olhar
para a ressonância. Se esses conceitos
são novos para você, eu definitivamente recomendo que você
confira meu outro curso que completa o guia para iniciantes em
síntese e design de som. Esse curso o
guiará por esses conceitos e
muito, muito mais detalhes. Mas, por enquanto, vamos seguir em frente e dar uma
olhada na
ressonância. Muito brevemente. Uma ressonância está apenas dando uma espiada no filtro
logo antes do corte. Definimos os residentes
usando apenas outra opção. Como eu disse, podemos simplesmente
adicionar nossas opções,
colocando uma vírgula após
a opção atual. Então, vamos fazer o mesmo de novo para que possamos
ter certeza de que podemos ouvir
as diferenças. Então, vamos fazer um E3. Vamos definir o corte da mesma forma. Então, para definir os
residentes, eu apenas adiciono outra opção. Então eu pressionei vírgula. E eu vou definir
a ressonância
usando a opção raise, RES, hit the colon. Agora, as ressonâncias são definidas
como um valor entre 01. Você não pode definir um. Então, um. Os residentes podem ser qualquer coisa
abaixo de um e acima 0. Então, neste caso, os textos ou enviados, se eu olhar aqui
na seção de ajuda, eu olho para o sensor como uma fonte de tecnologia e
clico em ressonância. Eu posso ver que, por padrão,
a ressonância é definida como 0,7
para este sintetizador, que pode ser diferente
para sintetizadores diferentes. Vamos mudar isso. Vamos definir isso como
nulo 0,9 para isso. E você ouvirá uma diferença
sutil no filtro
desse sintetizador. Aí estamos nós. Então é assim que
definir o corte do filtro e a ressonância é para que os
sintetizadores tenham uma brincadeira. Esses efeitos
serão drasticamente diferentes para os
diferentes tipos e tamanhos. Então mude isso aqui, toque, toque com diferentes tipos
de sintetizadores e altere esses valores de corte e
ressonância aqui. E para realmente
experimentar esses recursos. Na próxima seção
, veremos outra
parte popular da síntese, que são
os envelopes.
13. envelopes: Ok, antes de
mergulharmos em algum código, vamos dar uma olhada no
que são envelopes. Agora, faremos uma
breve introdução aqui,
mas, novamente, se você quiser
mais informações, consulte
meu
guia completo para iniciantes em síntese e curso de design de
som. Um envelope é, na verdade,
apenas uma forma de descrever a amplitude ou o volume
de um som ao longo do tempo. Só para encontrar. Onde
encontrá-la neste gráfico aqui. Então, neste gráfico,
temos o eixo y, que é amplitude ou volume. No eixo x está então a hora. Portanto, a primeira parte do
envelope é a para ataque. E muitas vezes você vai se referir,
você está aqui o termo ADSR. Agora, essa é apenas outra
forma de nomear e envelopar. Então, se as pessoas estão
falando sobre ADSR, elas estão falando
sobre um envelope. Existem vários
tipos diferentes de envelope, mas o ADSR é o mais comum. Então a representa o ataque, e isso é
simplesmente a quantidade de tempo que leva para ir da amplitude 0
à amplitude máxima. Quando nós, quando acionamos uma nota. D então representa a decadência. E este é o tempo que
leva para ir
da amplitude máxima
no final
da fase de ataque até o nível em que queremos sustentar
a nota que é o S e o S. O sustain está definido em termos de volume ou amplitude
em vez de em termos de tempo. O lançamento é quanto
tempo leva para descer desse nível
de sustentação, voltar para a amplitude 0
no final da nota, uma nota é liberada. Portanto, um DNR é determinado
por um período de tempo. E S, o sustain é determinado
como uma amplitude ou é declarado como uma amplitude
ou um volume em vez de, vez de um
período de tempo em Sonic Pi. Então também temos
três outros elementos, que são o nível de ataque, o
nível de decaimento e o nível de sustentação, e
esses também são volumes. Então, vamos
ao código e ver como podemos usar isso
para afetar nosso som. Ok, então aqui estamos de
volta e Sonic Pi. Vamos dar uma olhada nos envelopes
ADSR e como
podemos configurá-los
no Sonic Pi. Então, vamos começar com
um simples comando de reprodução e vamos jogar um C4. Ok, então para definir o envelope ou
configurar o envelope, defina os parâmetros
do envelope. Nós apenas adicionamos opções da
mesma forma que fizemos com Pam, cortes de
nível,
ressonâncias, etc. Então, exatamente o mesmo. Novamente, é bom e simples. Ele foi realmente projetado muito
bem para ser muito normal. Então você pode dar uma
volta e seguir o mesmo padrão para
quatro opções diferentes. Então, novamente, atingimos
a vírgula. Aqui. Vamos definir diferentes
partes dos envelopes. Estamos começando com o lançamento. Então eu acho que é o
mais fácil chegar aqui. Então, ele vai definir o
lançamento, liberar o códon. Essa é uma força que vai
ser duas por quatro batidas. Novamente, como estamos em
um BPM de 60 por padrão, isso significa que vamos
lançar mais de quatro segundos. Então, vamos jogar isso. Então você pode ouvir que levou
quatro segundos para ir
da amplitude sustentada
até uma amplitude de 0. Eu digo isso de novo. Podemos definir os parâmetros do envelope ADSR da
mesma maneira. Então, talvez queiramos
definir um ataque. Então, podemos simplesmente entrar aqui. Podemos adicionar outra vírgula. E diremos que desta vez
vamos definir o ataque. Vou definir o ataque para 2.5º em nosso envelope ADSR. Em seguida, demorou 2,5 para ir da amplitude
0 até a amplitude
máxima. E então ele libera mais de
quatro segundos ou quatro batidas. Mas, como eu disse,
temos a decadência,
sustentação e liberação do ataque que todos nós podemos definir. Também podemos definir
o nível de ataque,
o nível de decaimento e
o nível de sustentação. E só para lembrar que o ataque é o tempo necessário para ir da amplitude 0
ao nível de ataque. A decadência é a hora
de passar do nível de ataque
para o nível de decaimento. A sustentação é o tempo necessário para passar do nível de decaimento para o
nível de sustentação. E o libera o tempo para passar do nível de
sustentação para 0. Então, vamos, vamos configurar nossas anotações
com todas essas opções. Então, vamos continuar com
o ataque de 0,5, mas vamos
dizer que nosso nível
de ataque será um. Então, o que vai definir isso?
Para que possamos ver novamente, eu poderia usar
as teclas de seta para
mover para cima e para baixo nesta janela de conclusão de
código aqui. E então, quando eu tiver um, eu quero apenas apertar Enter e
ele vai colocá-lo para mim. Vamos definir o
nível de ataque para um. Vamos definir isso como k. Então vamos definir a
decadência para um também. Vamos definir o nível de decaimento. Vamos definir que não seja 0,7. Vamos definir o sustentável. Vou definir isso como não 0,4. Vamos definir o
sustentado para dois. Isso realmente
me levou a um bom ponto. Então, realmente não importa no Sonic Pi, onde ele meio que
ignora o retorno da carruagem. Então, se eu chegar a uma linha aqui, e porque minha fonte é muito grande, se ela tem o
slide dela aqui, isso é meio que pontuação fora da tela. Posso rolar para a esquerda e para a
direita, mas na
verdade, provavelmente é
mais fácil apertar Return. E você vai vê-lo lá,
colocá-lo em uma nova linha. Está perfeitamente bem. Se você quiser apenas organizar
seu código dessa maneira, ele ignorará os
retornos de carro ou a tecla Enter. Então, aqui atrás, eu
tenho uma vírgula faltando
aqui para sustentar. Então, vamos executar isso. Então pegamos um som
que só para demonstrar, vou adicionar outro tocar o
mesmo som aqui para um C4 e dormir por dois. Então, isso vai tocar
o som padrão
vai dormir por duas batidas. E então ele vai
jogar este com o envelope que
configuramos da maneira que queremos. Então você pode realmente
ouvir a diferença. E, novamente, posso
combinar isso com outras coisas que
aprendemos no Sonic Pi. Então, vou usar um
sintetizador para isso. Então vamos, vamos usar, vamos usar os lucros do sintetizador. Então, aqui estamos nós. Ou seja, são envelopes dentro do Sonic Pi, agradáveis e fáceis de fazer. Novamente, estamos apenas adicionando-o como, como opções adicionais
após nosso comando play. A coisa a fazer agora é
experimentar diferentes sentidos, mas também com envelopes diferentes e ver que gene de
som interessante surge. Experimente e vá para alguns sons
percussivos com um ataque muito curto
e um lançamento curto, o que lhe dará sons muito
mais percussivos. Eu tentaria alguns sons realmente parecidos com
pad,
definindo o ataque e a
liberação para serem muito longos. Então, brinque com
os parâmetros lá dentro. Não se preocupe, você não
pode quebrar nada. E eu deveria apenas mostrar a você
através dos comandos de erro. Então, se, por exemplo, eu definir
a lição como algo que vai me
dar um erro infalível. Então, se eu pegar o
nível de ataque dois menos um, então ele tentou jogar, mas ele conseguiu chegar até
o nível de ataque e
então acertamos um erro. Então eu posso ver aqui
então o valor
do nível de ataque de opção deve ser 0 ou maior e ele
tem um menos um. Então isso é muito,
muito útil, Eric comanda dentro,
dentro do Sonic Pi. Se você receber
esse tipo de linha rosa
aparecer ou essas
mensagens de erro mostradas, você pode se aprofundar em
muito mais detalhes aqui. Mas, em geral, se
você ler
essas mensagens de erro grandes em negrito
que aparecem, Isso lhe dará uma
boa indicação onde exatamente no seu
código o erro ocorreu. E como eu disse antes, é um ambiente
muito bom e seguro. Você não pode causar nenhum dano ao seu computador ou a qualquer
outro programa em execução. Realmente quero. Sinta-se à vontade para experimentar dentro do
Sonic Pi. Experimente coisas. Se não funcionar, vai
lhe dar uma boa mensagem de erro legível que o apontará
na direção certa.
14. Como reproduzir amostras: Ok, então nós olhamos para
o comando de reprodução padrão, que reproduz aquele ruído de bipe. Nós vimos
ser capaz de mudar esse som com a
capacidade de usar um sintetizador
integrado diferente dentro do
Sonic Pi e ser
capaz de alterar várias opções, como o volume ou a
amplitude, o panela. Aplique filtros e
corte com cortes e ressonâncias e seja capaz de
ajustar os envelopes. Então, espero que você tenha tido a
chance de jogar muito
bem com eles e realmente entender como tudo
isso está funcionando. Mas há outra maneira de
reproduzir som no Sonic Pi, e isso é através
do uso de amostras. Agora, existem várias amostras
integradas
no Sonic Pi, e você pode ver todas elas
na seção de ajuda aqui. Se você clicar nessa
guia para ver amostras, ela fornecerá uma lista
de categorias de amostra. E então você pode pular neles e reproduzir as diferentes amostras. Agora, como eu disse, a seção de
ajuda do Sonic Pi é
absolutamente fantástica. Se você passar por
aqui, verá todas as amostras diferentes
que você pode usar. E, na verdade, se eu
for e escolher uma aqui, se você escolher esta
pequena flecha ao lado dela,
isso é na verdade um botão play. E assim você pode testar
as amostras
na seção de saúde. Então, se eu jogar ao lado
desse skinny boom, por exemplo, aperte
o botão Play. Existem muitas e muitas
outras amostras de alta qualidade
incorporadas no Sonic Pi. Agora, para usá-los, eu apenas
uso as palavras-chave de amostra, então eu simplesmente digito
a palavra amostra. Então eu acertei os dois pontos e o nome da amostra
que eu quero usar. Então há um
que é guitarra, que é um mi menor nono. Então, se essa for a amostra, vou usar isso
e, assim, pressione Executar. Novamente, eu posso aplicar
as mesmas opções que
eu fiz para a praga de n. Então, se eu for até o final aqui
e eu puder definir a amplitude, por exemplo, isso é um 0.5 e nós vamos painel todo
o caminho para a esquerda, que novamente é menos uma panela. E toque isso. Então, ouvimos uma
amostra de meio volume até a orelha esquerda. Há muitas e
muitas amostras incorporadas e eu encorajaria você a dar uma
olhada aqui. Então, se
descermos e dermos uma olhada em alguns
desses sons ao fazer um loop, por exemplo, podemos ver
o Amém quebrar aqui. Então, se eu, se
eu testei uma amostra, se eu quiser reproduzir isso dentro
ou usar isso dentro do meu código, eu posso ir e digitá-lo
ou eu posso realmente ir e copiar isso com o Comando C, Controle C. Ou eu posso
clique com botão direito e copie. E eu posso simplesmente pegar isso
e colar aqui. Então, isso vai
reproduzir uma amostra
na velocidade em que
foi gravada. Mas eu posso realmente
mudar a taxa de amostras novamente apenas
com outra opção. Eu disse essa opção usando
novamente uma vírgula no final, eu posso definir a taxa, que é a velocidade
da amostra. Agora, por padrão, todas as amostras reproduzidas com
uma taxa de um e essa é a taxa ou a velocidade em
que foram gravadas. Mas eu posso definir isso para
jogar na metade da velocidade. Então, 0,5. Eu poderia fazê-lo jogar com
o dobro da velocidade ou taxa de dois. Eu poderia jogar em 1.5. Ou me interessa se eu
pegar um número negativo, se eu jogar uma taxa de menos
um, é isso que acontece. Eu jogo na amostra ao contrário. Vamos definir isso de volta
para uma taxa de um. Se você for jogar
coisas a uma taxa de um, basta remover essa opção. Vou deixar lá por enquanto. Mas tudo
sobre tudo por culpa
T, em vez disso, joga
a uma taxa de um. Mas eu também posso usar amostra
externa. Portanto, existem muitas e
muitas amostras
incorporadas ao Sonic Pi. Eu definitivamente passei cinco minutos agora apenas
brincando lá dentro. Muito som muito,
muito útil. Então eu não sei. Temos o
pouso lunar, um som ambiente. Havia muitos tipos de amostras
de bateria embutidas. Por exemplo. Há mais algumas amostras de bateria e aqui estão sons de baixo. Sons com falhas, tarolas. Há, novamente, muitos loops e um monte de sons de vinil para adicionar
uma música de filtro lo-fi. Há um monte
lá, então eu definitivamente encorajo você a
gastar cinco minutos agora pausar este vídeo e uma
olhada nas
amostras e fazer um teste e brincar com elas. e brincar com a taxa e ver como
eles soam, invertidos ou
acelerados ou desacelerados. Agora, há as amostras embutidas, mas na verdade podemos usar amostras das quais
gravamos, basta carregá-las, carregá-las
do nosso disco rígido. Então, vamos aqui. E da maneira como fazemos isso, apenas
especificamos um caminho. Então, isso será
um pouco diferente no Windows em um Mac, eu estou em um Mac. Então, para fazer isso, tudo o que preciso
fazer é pressionar amostra. E depois entre aspas, só
preciso dizer ao Sonic
Pi onde está a amostra. Agora, se você estiver no Windows, provavelmente verá
dois pontos para frente barra alguma coisa
ou C dois pontos barra invertida. E então o caminho de onde quer que esteja sua amostra. Estou em um Mac. Então, minha amostra está na minha área de trabalho. Então, vou para Usuários,
Steve, na minha área de trabalho. E então eu tenho uma
amostra chamada beat one. E aí estamos nós. Então
isso é tudo que eu preciso fazer para dizer a ele para reproduzir uma amostra, isso é carregar uma amostra. E do meu disco rígido, mais uma vez, posso alterar a taxa de
uma amostra que carreguei. Assim. isso Obviamente, isso vai levar
muito tempo para jogar. Portanto, este é um bom exemplo
de usar o botão Parar ou pressionar Command ou
Control S no teclado. Aí estamos nós. Então podemos começar, pará-lo no meio de uma corrida. E, novamente, eu posso jogar isso em ações
reversas que eu
posso jogar duas vezes na
velocidade inversa. Ok, então há outra opção para reproduzir amostras também. Podemos apenas apontar para uma pasta
e podemos usar um índice para, para, para dizer qual delas reproduzir. Portanto, isso é realmente
útil se você tiver uma biblioteca de amostra ou uma
pasta em seu disco rígido, isso tem um monte
de amostras nela. E então nós apenas dizemos ele com qual amostra
queremos jogar em uma pasta. Então, podemos simplesmente remover isso aqui. Podemos dizer, ok, toque
a primeira amostra. Agora, aqui está algo
para mostrar a você. Então, quando estamos programando, é muito, muito comum. Na verdade, quase universal dentro das
linguagens de programação que o primeiro item da
coleção é o 0º item. Então, contar dentro de
um computador sempre, sempre começa em 0, certamente dentro de
Ruby e Sonic Pi. Como eu disse antes, Sonic
Pi é baseado em Ruby. Então, quando eu digo que quero usar a
amostra 0 dentro desta pasta, isso significa reproduzir a primeira
amostra dentro dessa pasta. Agora eu só tenho uma amostra
nesta pasta na minha área de trabalho, então ela vai reproduzir as
mesmas que tínhamos antes. Agora, você verá mais tarde que isso pode ser
realmente útil porque
podemos usar codeína para
determinar qual amostra
queremos reproduzir sem
precisar saber o nome de cada amostra. Podemos apenas dizer Play
me sample five, play me sample three,
sample ten, etc. Então, essa é apenas uma
maneira diferente de acessar amostras. Mas, novamente, se eu quisesse apenas
acessar uma amostra específica, apenas digitaria o
caminho completo e o nome dele após o teclado de amostra. Agora, os envelopes para amostras funcionam exatamente da
mesma maneira que fazem sentido. Então, por exemplo, poderíamos definir
o ataque dessa amostra. Podemos dizer, eu quero
isso, o ataque
pela amostra levará quatro semanas. Vamos jogar isso. Assim,
podemos ver a partir daí que
foram necessárias quatro batidas para obter a amplitude
0, uma vez que
acionamos a amostra até a amplitude máxima. Agora, a sustentação para amostras
é ligeiramente diferente, então a sustentação é automaticamente definida para o
comprimento da amostra. Portanto, lembre-se de que o sustain
é
a única parte do envelope que fizemos que definimos em termos de tempo, o resto do definido
em termos de amplitude. Mas a sustentação é automaticamente definida para o comprimento da amostra. Ou podemos configurá-lo como de costume. Para que eu possa definir o
sustentado como sendo, digamos, duas listas. Vamos remover esse
ataque só para
ter certeza de que está bem claro. Aí estamos nós. Então, porque eu nos
disse para sustentar
por duas batidas, ele tocou essa amostra
por duas batidas. Assim, também posso definir o
ponto inicial e final para a amostra. E eu digo o quão longe
na amostra eu quero ir. Esse é um valor entre 01. Então, é meio que, se você quiser, porcentagem
através da amostra que eu
quero começar e terminar. Então, eu poderia dizer, vamos começar com zero 0,2
do caminho através da amostra. Vamos terminar em nenhum momento para seis. Então, isso é jogado
aqui que começamos
na amostra e
terminamos antes do final. Aí estamos nós. Isso é
amostragem ou reprodução de amostras no Sonic Pi. Na próxima seção, vamos dar uma
olhada no fluxo do programa e começar a construir programas
mais complexos, para começar a produzir mais
complexos e interessados em música.
15. Fluxo de programas: Então, o que queremos dizer
com fluxo do programa? Bem, o fluxo do programa é apenas
uma forma de determinar em que ordem as instruções dentro do nosso programa são executadas. E isso se resume a
três conceitos básicos. Isso é sequência,
seleção e iteração. Sequência é apenas a execução
das instruções em ordem. E é isso que temos
visto até agora. Por exemplo,
tocamos uma nota, dormimos e
colocamos outros nós. Então nós me esbofeteamos,
tocamos outra nota. Esta é apenas a execução
dessas instruções da parte superior
do nosso arquivo de código até a parte inferior, na ordem em
que as digitamos. A seleção é apenas uma
forma de
determinar qual ação
tomar em nosso código
com base em outra coisa. Então, podemos dizer que,
se isso aconteceu, então faça isso, caso contrário, faça outra
coisa e isso ficará muito
mais claro e eu explico as condicionais mais tarde. A iteração da terceira parte
é apenas ser capaz de
fazer a mesma coisa várias vezes. Agora, isso pode acontecer um número infinito de vezes ou um número predeterminado de vezes. Mas digamos, por exemplo, que tivemos uma, a tríade Dó maior com
a qual começamos logo no
início do curso. Agora, poderíamos jogar
essa tríade Dó maior 16 vezes digitando o mesmo código em 16 vezes,
dormindo entre cada uma. Então, podemos fazer uma
tríade de dó maior dormir por uma batida. Outra tríade dó maior
dorme por uma batida. Mas toda vez que fazemos isso, bem, são quatro
comandos, não é? Portanto, há três comandos de
reprodução para fazer nossas três notas
rosnarem, tríade e adormecerem. Se quisermos fazer isso,
dez vezes x por exemplo,
digamos, por exemplo,
mantenha-os agradáveis e simples. Se quiséssemos. Queríamos jogar isso, aquela tríade
dó maior dez vezes, teríamos que repetir
essas mesmas quatro linhas,
as três jogadas e dormir
dez vezes dentro do nosso código. Para reproduzir o mesmo código, dez vezes a iteração,
seria uma ótima maneira. Eu fui capaz de
dizer, ok,
bem, aqui estão essas
quatro linhas de código. Basta fazer isso dez vezes. E é isso que
vamos ver a seguir.
16. Loops: Ok, então se pensarmos no início
do curso e tivermos um pequeno pedaço de
código que
nos reproduziu uma tríade de Dó maior e
ficou assim. Então, como eu disse antes,
se quiséssemos jogar
a
tríade dó maior dez vezes, você poderia querer fazer
algo assim. Então, vamos dormir por uma batida e então podemos digitar
nossa tríade Dó maior novamente. E então podemos fazer isso
outras oito vezes. Então, podemos ficar mais espertos
e podemos dizer, ou podemos copiar e colar, certo? Assim, podemos fazer uma cópia
que a Motors mantém paciente como três
vezes quatro vezes 5678910. Então, temos nossas dez tríades
principais ou principais de locação em uma fileira. E isso é usar
a parte de sequência
do fluxo do programa de
iteração de seleção que aprendemos
na lição anterior. Então, é só executar
cada instrução em ordem. Eu tenho que usar o botão de parada. Ou você pode usar o Comando
S ou o Controle S para interrompê-lo
no fluxo do programa. Não precisamos ouvir tudo isso. Agora isso funciona perfeitamente bem. Está absolutamente bem. Vamos operar e é
perfeitamente normal fazer isso, exceto que você pode ver que para produzir música de
qualquer tipo de duração, você vai acabar com um programa muito longo
e uma enorme quantidade de código repetido que é
muito, muito difícil de ler. Então, a maneira de contornar isso
é remover isso. A maneira de contornar isso é usar
uma construção chamada on loop. E é aqui que nos movemos para as partes
de iteração do fluxo do programa. Então, no Sonic Pi, a palavra-chave para um loop, eu costumava fazer as coisas girando
e girando e girando novamente. Lucas, na verdade, uma
maneira muito útil de usar porque usamos loops na música de qualquer maneira para significar
algo que apenas toca, bem, que pode ser tocado em voltas
e voltas e voltas novamente. Então, podemos dizer, ok, bem, então vamos dar uma olhada neste. Vou digitar isso
e vou explicar. Então, o que dissemos aqui é que usamos a palavra-chave
loop e depois dizemos fazer, é loop, do. Então, tudo antes do fim. Vamos dar voltas, dar voltas e voltas
e voltas de novo. Isso
vai continuar para sempre. Então eu
vou parar com isso. São as razões pelas quais posso
continuar para sempre. É isso, vai,
vai dizer loop do. E vai jogar esses, essa tríade, indo dormir
por 1 segundo ou uma batida. E então ele vai chegar
ao fim e vai
voltar ao loop, fazer e fazer de novo, jogar o triatleta
por um segundo, chegar ao final, voltar
ao loop, fazer, e então apenas manter indo para sempre e sempre
e sempre e sempre. No entanto, o que podemos fazer é
um tipo diferente de loop. Podemos dizer ao Sonic Pi que
queremos jogar algo um
certo número de vezes. A maneira como fazemos isso
é muito simples. Então, substituímos a palavra-chave
loop pelo número de vezes
que queremos repetir. Então, vamos fazer isso
três vezes para que possamos ver até o n. Então, apenas dizemos o
número de vezes. Então, três pontos vezes, faça, então, faça isso três vezes. E aí estamos nós. Então, nosso
fluxo de programa voltará para a parte da
sequência. Então, poderíamos dizer jogar
isso três vezes. E então vamos
fazer outro acorde. Então, vamos fazer um, um Sol maior. Então vamos,
vamos dizer dois pontos, G4, um antes. E a. Os cinco devem nos dar uma,
uma tríade de Sol maior. E aí estamos nós.
Então, podemos ver que isso exigiria uma
enorme quantidade de código para ser feito. Pelo menos podemos
resolver isso, certo? Então, temos esses quatro
que teriam sido repetidos três
vezes. Então, isso é 12. E depois outros quatro
repetidos três vezes. Então isso teria sido
24 linhas de código. E reduzimos isso a isso. E podemos ver
que isso é muito,
muito mais fácil de
ler, particularmente se eu usar um código de comentários. Então eu posso dizer, oh, desculpe-me. Então eu posso colocar um comentário
aqui para dizer,
para dizer que isso é um Dó
maior e depois esta é uma
Nebulosa em Sol maior . Podemos ver que temos um
trecho de código
muito, muito mais legível. Esse número de vezes
não precisa ser três. Pode ser o
que você quiser. Pode ser 60 e pode ser 20,
pode ser 100, o que quer que seja,
o que você quiser que seja. A única coisa importante
a lembrar sobre os loops é que cada loop
deve conter o sono. E, de fato, se nós apenas
removermos isso por enquanto, se eu remover esse sono, então o que acontece é que
o computador é tão rápido, ele faz um loop três vezes. Você ouviu que estava
muito distorcido. Mas, na verdade
, foi jogar essa tríade três vezes, tudo ao
mesmo tempo. E é por isso que
devemos adormecer em cada loop, porque
o computador é
tão, tão rápido
que ele percorre essas três vezes em uma
fração de segundo. Devemos lembrar de
colocar o comando
sleep em cada loop.
17. Laços aninhados: Agora também podemos aninhar loops, loops
irregulares de diferentes
tipos dentro uns dos outros. Então, sabemos que temos o
loop do e temos os três pontos vezes du ou as 16 vezes que podemos aninhados um
dentro do outro. E vou mostrar um pequeno exemplo aqui para que
possamos dizer loop, sabemos que
vamos precisar de um fim? Agora, você notará que,
ao executar as coisas, ele formata
o código e coloca os
recuos para facilitar a leitura. Outra maneira de fazer isso
sem ter que esperar que ele seja executado como pressionar
Comando ou Controle M, quatro M para mãe. E isso apenas formatará bem
o código para você. Então eu posso dizer aqui, amostra
pouco tocar o bumbo, amostra, BDI, casa de sublinhado. Novamente, Control, Enter. Controle, Controle ou Comando
M formatará isso para você. Então, isso está tocando
fora de um loop. Se eu jogar isso agora, ele
vai jogar uma vez. E a razão pela qual ele falhou
, já que não há sono
dentro desse ciclo. Então, durante a praga
das auditorias, tudo bem. Só vai
jogar todos de uma vez. Mas, na verdade, como eu disse antes, Sonic Pi é muito
voltado para o aprendizado e para evitar que você faça algo que poderia
potencialmente consumir muito processador e memória
em seu computador Na verdade, nos deu um erro aqui para dizer que não
dormimos, porque reproduzir amostras é muito, muito mais intensivo nos recursos
do
sistema do que apenas usar, apenas usar o comando play. Ao automatizar isso para funcionar,
queremos adormecer. E aqui, isso
vai dar um loop para sempre. Jogue nessa amostra com um
recorte de um quarto de batida entre uma parada que
cada vez menos. E vamos aninhar outro
laço dentro disso. Dentro disso, podemos dizer que toda vez que contornar esse ciclo, vamos reproduzir
essa amostra uma vez. E depois vamos
jogar pelo chimbal. Então, para cada bumbo, cada bumbo que
tocamos com este BD, como a amostra que queremos
para chapéus altos, bastante comum
para a batida do chão. Então, digamos que os tempos de ponto façam. Como vou jogar uma amostra de
chimbal aqui, ômega um nesse loop. Vamos pressionar Command
M para formatar isso. E então, dentro desse loop, vamos tocar
uma amostra de chimbal. Então, temos um embutido,
embutido no Sonic Pi. Então, vamos dizer que o símbolo
do tambor fecha. Esse é o que queremos.
Então vamos dormir por nada, 0,25 de batidas. Então, quatro, vamos
acabar com quatro chimbal fechados por batida
e depois um bumbo. Então, vamos dormir. Durma por um quarto das batidas. Antes de jogarmos. Vamos ler isso
para ter certeza de que entendemos
completamente. Então, vamos fazer um loop
para sempre nesse loop externo. E dentro desse loop externo, primeiro
vamos tocar a amostra
da casa BD,
que é uma amostra de kit de bumbo. E depois que essa
amostra for tocada, embora, como eu disse ,
ela calcule tão rápido, será ao mesmo tempo que
vamos jogar
para chimbal fechado com
um quarto de batida, dormir entre cada um. Então, uma vez que ele toca
os quatro chimbal, vamos
voltar ao topo. Jogue o Keq para chapéus altos, jogue o chute para chapéus altos. Então jogamos o chute
e esse loop. E então tocamos
os quatro chimbal. Podemos ver que esses são chamados de loops aninhados. Então, vamos jogar lá. Nós somos. Aqui estão nossas primeiras
batidas básicas dentro do Sonic Pi.
18. Para o infinito, mas não mais!: Uma última coisa a
dizer sobre loops é apenas para avisá-lo um
pouco sobre loop infinito. Então, vamos adicionar outro,
outro exemplo de comando aqui. E vamos apenas dizer que vamos
jogar o, o magro. Boom. Então, vamos ouvir
o que isso parece. Eu vou parar
por aí, mas teria durado para sempre. Ok, então o, o, este exemplo aqui na linha
nove nunca é jogado porque esse loop está girando e
girando e girando novamente. Então, nunca voltamos para a parte da sequência
do fluxo do programa. Então, nunca
chegamos à linha nove porque estamos indo da linha um para a
linha sete indefinidamente. Portanto, eu o alertaria
contra o uso de loop do e só uso de loop do se
você realmente quer dizer isso. Então, eu diria para definir o número de
vezes sempre que puder. Então, podemos dizer para os horários dos pontos. Então ele vai tocar esse loop
externo quatro vezes, o loop interno quatro vezes
dentro de cada um deles. Então, vamos
tocar bateria, e eles vão
tocar 16 chimbal antes de tocarmos
esta amostra final. Então, isso agora vai realmente
chegar à linha nove. Ok? Então, para praticar isso e o que eu gostaria que você fizesse é pegar o código que você
pode ver na tela. Agora, é difícil
fazer isso funcionar e depois brincar
com as batidas. Então, tudo o que há é algo que você
entende bem. Então, acho que a próxima coisa a
fazer seria tentar adicionar um som de caixa
nessa batida.
19. Como melhorar a sua batida: Ok, então talvez você tenha
acabado com algo parecido com
o que temos aqui. Vamos jogar isso. E podemos ver que estamos fazendo um
loop quatro vezes. Você está tocando bumbo. Tocamos dois chimbal, limitamos o jogo nesta amostra de caixa, outros dois chimbal, e
depois voltamos para
o bumbo novamente. Não se preocupe se
o seu não for
exatamente assim
e provavelmente não for exatamente assim. Contanto que você
entenda como os loops e
como o fluxo do programa funciona com a sequência
das iterações. E você
conseguiu uma batida agradável. Definitivamente,
vale a pena gastar um pouco de tempo
com isso e
pensar em nosso b2 que você deseja
produzir em sua cabeça e depois ver se consegue obter isso
expresso como código.
20. Randomização: Ok, então eu mencionei
anteriormente o uso de números de notas
midi em
vez de, do que o número mini. Portanto, usar 60 em vez de C4, por exemplo, pode ser, embora contra-intuitivo,
muito útil às vezes. Eu sou um daqueles
momentos em que estamos usando um gerador de números aleatórios. Agora, a randomização pode ser muito útil para um tipo de música
generativa ou para fazer com que o computador gere
ou crie alguma música para você com base em números aleatórios que você simplesmente não
inventaria. Se isso é realmente para parte de sua composição
escrita em código, ou se é um
tipo de inspiração, basta tocar com alguns valores
aleatórios e me dar alguma inspiração para
uma melodia ou um linha de base, ou o que quer
que eu esteja procurando. Gerar números aleatórios no Sonic Pi é muito,
muito simples. E como podemos tocar um
número de nota em vez de um nome, isso significa que podemos gerar um número aleatório e
depois tocar essa nota. Então, a maneira como fazemos isso é
com o comando rand. Vamos ver como isso funciona. Então nós conhecemos,
conhecemos a peça. Vamos lá já. Temos o jogo 60 como já
usamos muitas vezes. Bem, isso só vai colocar uma nota com o valor da
nota de 60. Mas podemos dizer, toque uma
nota com um valor aleatório. Então eu posso usar o comando rand e posso dizer aqui
dentro de colchetes. Então eu posso dizer, toque
uma nota aleatória entre o número 50, o número 100. Está bem? Então, se eu olhar para o registro aqui, eu posso ver esta placa
me uma nota em 87.5031. Se você digitar isso em sua janela de código, executar esse
código e examinar seu log. E também posso
garantir que você
gerará um
número aleatório ou nó aleatório, que será 87.5031. Agora, isso pode parecer estranho. Isso pode parecer estranho
porque não é realmente aleatório, não é? Se você conseguir inserir
o mesmo código que eu e no seu computador um horário e local
diferentes, gere o mesmo
número aleatório, mesmas notas aleatórias. Não é realmente aleatório agora que
isso é feito por uma razão. O motivo
é que você
deseja compartilhar esse código em todos, reproduzi-lo
em seu
computador posteriormente e garantir que ele seja o mesmo para
que cada desempenho
seja o mesmo. Então brinque com isso, gera algumas notas aleatórias
diferentes. Então, novamente, para mudar isso, podemos dizer, ok, me gere um número aleatório entre 4080. Há um nó aleatório diferente. Então, para gerar
uma nota aleatória diferente, o que eu precisaria
fazer é definir a semente aleatória. Agora, novamente, isso é
feito de propósito. Esta é uma escolha deliberada de
design dentro do Sonic Pi para garantir que, se você um pedaço de código que use notas
aleatórias das quais você
realmente goste do som. Que sempre será o
mesmo. Então você pode ver que é uma escolha
deliberada de design. Mas para mudar a randomização, eu só preciso usar
um comando simples que é usado semente aleatória, usar sublinhado, sublinhado
aleatório C. E eu posso digitar
qualquer número aqui. E isso realmente, realmente
não importa. E você verá,
podemos usar isso um pouco mais tarde
e mudaremos a semente aleatória para gerar
diferentes padrões aleatórios. Mas eu poderia, por exemplo, mudar, usar
semente aleatória aqui para 40. Você notará que da
última vez que executei isso, gerei a nota 70.0024. Isso é interessante por
si só porque as notas no Sonic Pi não
precisam ser números inteiros. Então, na verdade, mostra que
você pode escrever programas em Sonic Pi para produzir composições
microtonais. Mas podemos definir essa semente aleatória. Como eu disse, realmente não
importa qual é o número. 99 está bem. Quando eu executar isso agora. Agora eu tenho uma nota
que é 68,63. E novamente, se você
usar essa semente aleatória e esse comando redondo
exatamente assim, no seu computador, com
a semente aleatória de 99, seu jato, você também
gerará a mesma nota. E, novamente, é para
que você possa salvar essa composição e
saiba que ela
vai tocar exatamente
da mesma maneira todas as vezes. Então, vamos um pouco mais longe e ver como podemos
usar isso para produzir melodia.
21. Como criar melodias com randomização: Então, vamos nos
livrar disso por enquanto. Vamos dizer, ok, toque uma nota aleatória
entre 5100. Mas vamos, vamos
embrulhar isso em um loop. Então, como vimos antes, mas apenas faça um loop, faça um fim. Precisamos lembrar de
adormecer. E então vamos adormecer
um aqui e pressionar Executar. E se pudermos chamar
isso de melodia, então você terá produzido a mesma melodia que eu fiz se você executar esse
código em seu computador. Também podemos
aleatorizar o sono. Porque o sono é apenas
um número entre, entre 0 e o que
quisermos que seja. Digamos que rand. Me faça dormir
entre zero 0,25. Então, um quarto de batida, 1,5
batimentos. E vamos executar isso. Ok, então podemos ver que nós, nós randomizamos o, não apenas a nota, mas
o tempo entre os nós. Para que pudéssemos trocar o
comando play por uma amostra. Então, vamos dar uma olhada nisso
para que possamos reproduzir a amostra. Vamos fazer uma massagem de vidro B. Então, aqui estávamos jogando
a mesma amostra, mas estamos randomizando o
tempo entre as amostras. Mas não se esqueça, podemos usar a opção de taxa de uma amostra
para acelerá-la ou desacelerá-la. Então, podemos fazer exatamente o mesmo com
o valor aleatório lá. Assim, podemos definir a taxa
para ser um valor aleatório entre 0,52, por exemplo. Então isso seria honesto. Assim, podemos usar as funções de
randomização para criar valores aleatórios para ir em qualquer opção
que leve um número, é por isso
que é tão útil
que o Sonic Pi tenha sido projetado de tal forma que definir as opções com números
e, portanto, podemos
usar valores aleatórios na grande maioria deles. Então, brinque
com diferentes, você pode querer
olhar para os envelopes, cortes de
filtro, ressonâncias,
padrões e amplitudes. Basta inserir alguns valores aleatórios
usando a função rand. E você começará a criar músicas
verdadeiramente geradas, que,
como eu disse , você
pode querer usar diretamente em sua composição
ou usá-las como eu faço. Ocasionalmente é apenas
jogar alguns valores aleatórios, brincar com
diferentes opções e valores aleatórios diferentes em cada um para fornecer alguma
inspiração para uma composição.
22. Outras funções aleatórias: Incrível. Outras
funções de randomização dentro do Sonic Pi, que podem ser usadas para produzir valores
ligeiramente diferentes. Então, vamos começar com um loop. Esse loop reproduzirá apenas um C4. Vamos definir a
amplitude simplesmente para rand. E então dormiremos
por meia batida, a função rand e,
em seguida, Sonic Pi
sempre produzirá um
valor entre 01. Então, vamos jogar isso. Esta é apenas uma forma abreviada de escrever isso, que
seria exatamente a mesma. Também podemos dizer
a ele para retornar um número inteiro. Então, se quiséssemos
ter notas midi exatas, poderíamos dizer
sublinhado redondo i, entre 5000. Você notará que
quando tocarmos isso, se eu olhar no registro, então
só temos notas inteiras aqui. Então, valores inteiros inteiros. Então, nada
depois do ponto decimal. Então, sabemos que
há algo
nisso , a escala midi. Então, novamente, brinque
com a função aleatória. Nós olhamos para nossas
voltas e voltas. Lembre-se de que não sou eu, isso nos dará um número inteiro. Rand nos dará um número de
ponto flutuante, ou um número, talvez com algo após
a casa decimal e a rodada, o que nos dará um
número entre 01. Brinque com eles, coloque-os em parâmetros
diferentes, reproduza alguns nós diferentes, durma em diferentes
períodos de tempo. Basta brincar com
diferentes amplitudes e parâmetros de envelope e realmente se
acostumar com o efeito que a
randomização pode ter. Em sua nota, o tipo
interessante de possibilidades
generativas que você pode ter dentro do seu código. Quando terminar de jogar com as
funções de randomização, passaremos para
a próxima seção, que cobrirá a parte final
do fluxo do programa, que
é a seleção.
23. Seleção: Para trabalhar com as
partes finais do fluxo do programa, que é a seleção,
precisaremos
entender alguns conceitos de
programação. Vamos dar uma olhada neles
nos próximos slides. Então, a primeira coisa que
vamos ver é uma coisa chamada operadores de
comparação. Os operadores de comparação
apenas nos
permitem comparar uma coisa
com outra. Então, quando estamos
olhando para a seleção, precisamos ser capazes de determinar se uma coisa é verdadeira
ou outra é falsa. Por exemplo,
queremos ser capazes executar uma determinada
parte do código se
algo for verdadeiro ou uma parte
diferente do código se essa comparação for falsa. Então,
para determinar
que temos vários operadores de
comparação. Você pode vê-los na tela
aqui. Só há seis. Vou explicar cada um
deles por sua vez, mas são conceitos bastante
simples. Portanto, os primeiros operadores de
comparação são um sinal de igual duplo. E isso é igual a, agora, é um erro comum e
eu ainda faço isso sozinho. Eu tenho feito isso
para uma programação por mais de 20 anos e
ainda faço isso sozinho. Então não se preocupe, mas quando
estamos fazendo uma comparação, queremos ver se comparamos
uma coisa com outra. Precisamos usar o sinal de igual
duplo. E isso é porque usamos o único sinal de igual
para outra coisa. Então, embora normalmente em sua matemática usássemos um único sinal de igual para
comparação na programação, usamos o duplo igual. E eu, quando digito isso na
minha cabeça, digo igual a. Então, há duas palavras, dois iguais a dois iguais. Então, se quisermos
ver se uma coisa é igual a outra,
duplo sinal de igual. Se ele quiser dizer que, se a coisa é
igual, os dois lados dessa equação, se você quiser, são verdadeiros ou são iguais, então será verdade
e podemos executar
código com base nisso . O próximo operador de comparação
, então, não é igual a. Portanto, se esse lado não for
igual a este lado, ou se um lado menos esquerdo
não for igual ao lado direito, ele retornará verdadeiro. Se os dois lados forem iguais, ele retornará falso. Que então temos os operadores
maiores e menores que. Portanto, se o lado esquerdo, lado
esquerdo for maior que o lado direito, ele retornará verdadeiro. Ou se o, se o lado
esquerdo for
menor que o lado
direito, ele retornará verdadeiro. Em seguida, temos dois operadores
finais que são muito semelhantes, mas eles incluem o bit do
meio é
menor ou maior que ou igual a ou
menor ou igual a. Então, poderíamos dizer que se um determinado valor é
menor ou igual a, ou maior ou igual ao outro valor,
então retorne verdadeiro. Caso contrário, ele retornará false. Isso, eu sei que se você não fez nenhuma
programação antes, isso é um, pode ser
um pouco estranho. Ficará muito, muito mais claro quando
olharmos para alguns exemplos de
código e
faremos muito. Então, provavelmente sou uma boa
ideia anotar isso. Portanto, temos o igual a, não igual a, maior que, menor que, maior que ou igual a e menor ou igual a. Pode haver uma
ocasião em que
queiramos encadear isso juntos. Então queremos dizer,
se isso é igual, se a é igual a b e c é
maior que d, por exemplo, ou se a é igual a b ou c
é maior que t. Novamente, isso vai ser
muito, muito mais fácil explicar e entendemos
quando vemos algum código. Mas só para dizer
que também temos esses operadores de combinação
ou operadores lógicos. Então é assim que combinamos
as comparações. Novamente, um E comercial duplo ou
um meio duplo e assinado, e um tubo duplo significa tudo. E você encontrará o sinal
de pipe em um Mac
pelo menos um pouco acima de
shift e barra invertida. Mas isso
ficará muito mais claro. Vamos pular para o Sonic Pi agora, escreveremos alguns códigos
usando esses tipos de operadores e você verá
como eles funcionam muito melhor. Ok, então a maneira como fazemos a
seleção dentro do Sonic Pi é com o uso
da palavra-chave if. É muito simples de entender. Então, vamos mergulhar e escrever um pouco de código e você verá como
todos esses operadores funcionam. Então, vamos começar
com um exemplo simples. Então, podemos dizer, se um for
igual a um, então jogue. Eu não conhecia a borracha de vidro
Amby. Como acontece com todos os blocos
de código dentro do Sonic Pi, precisamos colocar um N
na coisa aqui. Então isso está dizendo que se
um é igual a um, o que é sempre verdade, um é sempre igual a um,
então reproduza esta amostra. Então, devemos ouvir
essa amostra tocar. Ok? E podemos provar que isso funcionou por. Podemos dizer que se um
é igual a dois, então essa amostra não
deve ser reproduzida. Ok? E podemos ver
no registro que nossa execução foi iniciada
e concluída. Mas a amostra em jogo, porque um não é igual a dois. Portanto, podemos ver alguns
dos outros operadores aqui. Então, podemos dizer que se um não
for igual a dois, então o que
esperaríamos que acontecesse aqui? Sim, esperaríamos que a amostra reproduzida porque um
não é igual a dois. E lá vamos nós. Portanto, os outros operadores
que podemos usar são se
um for maior que 21, não
for maior que dois. Então, não vamos esperar que a
amostra o interprete. Se olharmos no
log, você verá que as execuções começam e terminam e
a amostra não é reproduzida. Mas se dissermos que se um
é menor que dois, então podemos pressionar, correr. A amostra será reproduzida. Você pode ver que é um conceito muito simples
e é apenas, realmente
é essa seleção. Então, se essa coisa é avaliada como verdadeira é que se essa
expressão e nós chamamos de expressão aqui, essa expressão é
avaliada como verdadeira, então executa o
código com dentro dela.
24. se ... outro: Então, vamos dar uma olhada no
que poderíamos fazer de outra forma. Assim, podemos ter dois caminhos
de execução. Então, podemos dizer, se isso for verdade, faça isso, caso contrário, faça isso. Então, vamos deixar isso como está, e podemos ver a palavra-chave para
o segundo caminho, a queda. Se a primeira expressão for
avaliada como falsa, podemos criar um
segundo caminho e usar a palavra-chave else para isso. E eu vou apenas jogar uma amostra
diferente para nós aqui. Então, algo que é
muito diferente. Então, vamos escolher,
vamos escolher uma idade, um peso
baseado em uma sala com base no peso. Então, podemos dizer que, se a primeira
expressão for avaliada como verdadeira, reproduza esta amostra, vamos tornar
isso agradável e simples novamente. Então, se um é igual a
um, então se um, se um é igual a um é
avaliado como verdadeiro, que tocará o ambíguo Rob, então tocará o bumbo. Então, vamos executar isso. E esperaríamos
ouvir a vareta de vidro. Portanto, para que essa segunda parte
do código seja executada, essa expressão após o f precisaria ser
avaliada como falsa. Então, podemos fazer isso
simplesmente dizendo se um é igual a dois. Vamos executar isso. E devemos ouvir o
bumbo tocar porque isso vai, isso será falso ou um loop imediatamente
saltou para o outro. Ignore esta linha aqui, pule para o else e jogue o que está no bloco else. Podemos ouvir o bumbo tocar. Ok, então o que mais
podemos fazer com isso? Porque isso parece
um pouco simples. Bem, poderíamos usar
alguns valores aleatórios. Então, vamos mudar
isso para algo, fazer algo um
pouco mais facilmente aqui. Então, vamos pegar
um tambor base rígido. E vamos mudar este para um. Vamos ver, um chimbal aberto. Então tem o bumbo
porque um não é igual a dois e executamos
o que estava no outro. Se definirmos isso como
verdadeiro, Aí estamos. Aqui está o nosso chimbal aberto,
então temos dois sons. É bom e fácil de ouvir. Muito claramente diferente para que
possamos entender completamente
o que está acontecendo. Portanto, essa expressão aqui
é bastante simplista. Amino sempre executa para verdadeiro. Mas alguns, talvez
pudéssemos fazer outra coisa para tornar isso um pouco
mais interessante. Então, embora saibamos que temos as funções de randomização que
analisamos na lição
anterior. Então, talvez possa ser
interessante para você alguns desses. Então, digamos que temos
a função rand que retorna um valor aleatório entre
01. Para que pudéssemos usar isso. Portanto, podemos dizer que se r1 for
maior que zero 0,5, isso produzirá um
valor aleatório entre zero e um. Se isso, se esse valor for
maior que zero 0,5, então tocaremos o chimbal aberto. Símbolo aberto. Caso contrário, outro tocará o bumbo.
Então, vamos jogar isso. Ok, então neste caso, o valor aleatório deve ter
sido maior que zero 0,5. E então jogamos isso aqui. Podemos colocar quantas
linhas de código quisermos dentro desses blocos. Então, poderíamos
tocar várias amostras,
tocar várias notas, o que quiséssemos fazer dentro
do bloco if e
dentro do bloco else.
25. Como combinar comparações: Ok, então como
vamos comparar? Então, analisamos os operadores de
comparação lógica, mas depois dissemos que
poderíamos combinar, em vez disso, poderíamos combinar esses operadores
lógicos. Podemos querer dizer
se isso é verdade e isso é verdade ou isso é verdade ou isso é verdade, vamos dar uma
olhada nisso. Então, vamos voltar ao
nosso exemplo simples. Então, se um é igual a um, se um é igual a uma jogada, o chimbal aberto é igual a um. Então, o chimbal aberto toca. Podemos combinar isso
com outro. Então isso não é um, então podemos usar o E comercial duplo e podemos dizer que se um
é igual a 12, é igual a dois, então
tocar o chimbal aberto. Mas isso só vai
tocar o chimbal aberto. Esse trecho de código dentro
do bloco if aqui
só será executado se
ambas as expressões forem verdadeiras. Podemos
encadear tantos desses. Você pode ter quantos
e"se”
quiser dentro de
sua expressão IF. Então, se eu mudar
qualquer um desses, então seja falso. Então, se dois for, podemos dizer que
se dois é igual a três,
bem, isso vai ser falso. Portanto, um contra
um sempre será verdadeiro. Isso vai, isso será falso. Portanto, isso, isso e isso não são verdade porque isso é verdade,
mas isso não é. Portanto, o jogo
básico do rumble. Agora, e se eu
mudar isso para uma sala de cirurgia? Então esse é o
tubo duplo, lembra? Então, isso é basicamente dizer que se um é igual a um ou
dois é igual a três, então jogue, depois toque o símbolo. Caso contrário, toque o bumbo. Bem, um é igual a um. Então, ele nem precisa ir, nem sequer
avalia essa parte. Diz apenas que y é igual a um. Este é um ou. Então. Realmente não importa o que está aqui. Isso é irrelevante
porque apenas uma
dessas coisas precisa ser verdadeira para jogar esse símbolo. E novamente, se eu mudar
para dois é igual a dois. Se isso for verdade ou for verdade, toque o símbolo, caso contrário,
toque o bumbo. E eles são os dois,
ambos são verdadeiros. Então, está tudo bem. O que acontece se eu mudar? Um é igual a 22
é igual a três. Nesse caso, esperaríamos que
o bumbo tocasse porque nem isso nem
isso eram verdade neste caso. Ok, então essa é uma
rápida
olhada em como fazemos a seleção
com o Sonic Pi interno.
26. A função de randomização one_in: Vamos combinar isso com algumas
das funções de randomização talvez para tornar algo um
pouco mais interessante. Então, vamos talvez fazer isso para que possamos fazer um loop. Vamos
apenas executá-lo para sempre. Mas, novamente, só para
lembrá-lo, ele realmente funcionará para sempre. Portanto, tenha cuidado ao
usá-los em suas composições. E voltaremos à
nossa função aleatória. Então, se rand for
maior que 0,5, então ,
novamente, a
função rand nos dará um valor
entre zero e um. Se for maior que nada,
0,5, toque o símbolo,
caso contrário, toque o baixo Trump. Vamos jogar isso. Aqui
você pode ver um erro. Meu erro. Eu não
dormi dentro do loop e é exatamente isso
que está
dizendo que o loop não dormiu nem afundou. Então, vamos dormir
lá e correr de novo. Está bem? Portanto, há outra, outra
função de randomização que ainda não vimos,
mas que poderia ser útil
nesse tipo de situação. E esse é o que está na função de
aleatorização.
Deixe-me te mostrar isso. Então, dizemos que se um
sublinhado, vamos colocar um dois aqui. Então, basicamente, o que se faz
é retornar um verdadeiro com a probabilidade de você colocar
dentro desses colchetes aqui. Então, uma em duas vezes, ele retornará verdadeiro uma forma puramente aleatória
e aleatória. Se eu colocasse um
inquilino aqui uma em cada dez vezes, isso
voltará a ser verdade. Se eu colocasse um em dois, esperaríamos uma distribuição
uniforme entre os símbolos e o bumbo. Então,
vamos ouvir isso. Ok, então eles estão tocando
aproximadamente a mesma quantidade agora, obviamente em um padrão
aleatório, mas, mas quase o mesmo número
de símbolos que os bumbos. E, na verdade, se
fôssemos até o login e percorrêssemos o registro
e contássemos todos. Podemos ver o bumbo tocando e podemos tocar os
símbolos tocados. Se passássemos
e
contássemos isso, acabaríamos com
o mesmo número. Mas se eu mudar
isso para um em cada dez, eu esperaria ouvir
o bumbo tocar muito
mais vezes do que o simples, porque uma em cada dez vezes eu esperaria que o
símbolo tocasse. E todas as outras vezes, eu esperaria que o bumbo tocasse. Então, vamos
ouvir isso. Ok, então podemos ver aqui que
usando esses operadores IF, a seleção
dentro, Sonic Pi, combinada com a função de
randomização, podemos realmente começar a construir
rapidamente algum tipo de generativo funções de
alguma música generativa. Porque, é claro,
poderíamos tocar acordes diferentes, notas
diferentes, o que
quiséssemos fazer, diferentes samples dentro,
dentro de padrões como este.
27. O simples se: Existe uma maneira um pouco
mais simples de escrever esse código e é assim. Vamos nos livrar
disso, nos livrar de lá. Então, podemos dizer. Então, em vez de ter uma declaração
if que se parece com isso. Então, vamos mudar isso
para um em quatro, então 14 vezes esperamos que
o símbolo seja reproduzido. Caso contrário, vamos apenas dormir
e voltar ao redor do circuito. Então isso é feito com tanta frequência dentro do código que
usamos para gerar música, Há um pequeno atalho para isso. Significa apenas que
podemos remover essa extremidade aqui. E podemos cortar
isso a partir daí. Podemos colocar
no final daqui. Então, deixe-me ler
isso para você. Então isso vai girar ao
redor, ao redor, ao redor para sempre. E vai dizer, toque este símbolo de tambor de amostra
aberto se um em cada quatro. E é apenas um
atalho, uma maneira
um pouco mais rápida de escrevê-lo. Então, acabamos com
o mesmo resultado, mas isso apenas torna o código um pouco mais fácil de ler, talvez. Oh, talvez possamos
mexer aqui e apenas, vamos mudar nosso código. Então, vamos tocar um, tocar uma vaca, um sino de vaca a cada um em seis. Então, o que isso vai
fazer é, deixe-me ordenar que
M faça isso. Isso
fará com que seja um símbolo próximo apenas para
torná-lo um pouco
menos sensível se for uma palavra. Então, vamos dar uma volta em
cada canto de uma praia. Vamos jogar
um símbolo fechado. E então, uma em cada seis vezes, vamos
tocar o sino da vaca. Ok, e isso realmente é tudo para seleção dentro do Sonic Pi. Então, faça uma jogada, mas olhe para o
ar do L e a versão abreviada de F
que temos aqui, brinque com o da função de
randomização e as outras
funções de randomização que analisamos
na lição anterior. E olhe para os operadores
condicionais e combinando esses operadores
apenas para
observar diferentes maneiras de
combiná-los e usá-los para fazer música que
é imprevisível.
28. Variáveis: Ok, é hora de
dar uma olhada em algumas variáveis. Agora, uma variável é apenas um nome
chique para um rótulo, na verdade. É apenas uma forma de
dar nomes a coisas que podemos nos
referir a elas mais tarde. A maneira mais fácil de mostrar a você
é apenas escrever algum código, mas na verdade é apenas uma
maneira de dar
um nome a algo para que o
computador possa se lembrar dele. E quando
pedimos mais tarde, ele pode
nos devolver. Isso é tudo que uma variável é. Variáveis dentro do
Sonic Pi,
muito, muito simples de usar, mas
usamos para elas o sinal de igual. E é por isso que tivemos que usar o duplo igual dentro
dos operadores de comparação. É para isso que os iguais
estão reservados. Então dizemos o nome
da coisa e depois é igual e, em seguida, qualquer
valor que queremos armazenar, o valor pode ser qualquer coisa. Então, podemos dizer, por
exemplo, número igual a 99. E então, o que
pedimos para o número mais tarde, podemos recuperá-lo
usando a palavra número. Então, vamos
deixar isso bem claro. Então, meu número é
99, e se eu disser, se Meu número for maior que 98, basta jogar 60. Caso contrário, não são. Na
verdade, acabamos. Então, podemos dizer que
armazenamos o número ou o valor 99 dentro uma variável que
chamamos de meu número. E então, mais tarde, podemos
usar isso. Em nossa instância. Só podemos usar uma
simples declaração if para dizer se meu número
é maior que 98, tocar 60, então
esperamos que eles soem. Lá vamos nós. Muito, muito simples de
usar e tão Sonic Pi, mas realmente muito
útil porque
podemos nos referir a isso em
muitos, muitos lugares. E quando queremos
mudar o valor dele, só
precisamos ir a
um lugar para alterá-lo em vez de alterá-lo em
todo o nosso código. Então, vamos dar
uma olhada em um exemplo simples. Então, uma coisa que podemos querer fazer é nomear algumas de nossas amostras para que
possamos consultá-las mais tarde. E se quisermos
mudar essa amostra, podemos
alterá-la em um só lugar. Isso, vamos ver um bom exemplo. Então, vamos criar uma
variável chamada hi-hat. E dentro dessa variável,
vamos armazenar o nome de uma amostra. Então tambor, símbolo, fechar. Então, este é um chimbal fechado. Vamos criar outra
variável chamada snare. E vamos fazer com que o, a amostra ou um
sublinhado Zoom. E vamos criar uma
variável chamada bolo. E chamaremos isso de
armazenará nisso o
nome da amostra. Casa de sublinhado Bdi. O uso de variáveis
se torna muito claro agora, porque se eu criar um loop, dentro desse loop, eu direi, ok, para muitas amostras, me
toque o chimbal. Então me toque o chute de amostra. E depois durma por
Quarter, repita. Me faça outro mal,
outro chimbal. E depois durma novamente. E toque outro chimbal para mim. Durma de novo. Durma de novo. E depois toque outro
chimbal para mim e durma de novo. Vamos jogar isso. Ok, então talvez,
na terceira batida, queiramos
trazer uma armadilha também. Então, vamos jogar uma armadilha e aqui, então vamos jogar uma armadilha ou
três, cidadão para isso. Mas e se eu quiser mudar
o bumbo que estamos usando? Então, se eu quiser mudar
o seu chute, estamos usando enquanto eu
só tenho que ir e mudá-los no lugar.
Então não é tão ruim. Mas para mudar o chapéu
alto que estamos usando, eu teria que percorrer
meu código e mudar se eu usasse, se eu tivesse feito assim. Por exemplo, eu teria que
ir a todos os lugares do meu código e mudar o chimbal
que estou usando. Então, vamos desfazer
isso. Em nosso exemplo. Podemos simplesmente
mudá-lo em um só lugar. Então, vamos mudar
isso para um chimbal aberto. Podemos mudar isso em um só lugar. Não precisamos alterá-lo
em nenhum outro lugar do nosso código. E aí estamos nós. Então esse é um bom motivo
para usar variáveis, mas nós as usamos bastante
no curso a partir de agora. Mas é só uma questão de dar um nome a alguma coisa. Você pode armazenar absolutamente
qualquer coisa em uma variável. Uma coisa que direi
sobre variáveis é sempre tentar dar a elas
um nome significativo. Como se eu tivesse uma chamada de a, B e C, teria
sido bom usá-lo,
usando esses agora e eu
substituí as folhas a, B, e C teria ficado bem agora, eu sempre teria me lembrado como eu estava escrevendo a coisa agora. Mas, na verdade, se eu
pegasse esse pedaço de código em três meses e fosse copiar esse pedaço de
código para outro lugar. Você os usa em uma nova
música que eu estava escrevendo. Ou até mesmo para abrir
isso e ler isso. E teria sido muito, muito difícil de entender, manter nomes significativos
e isso tornará seu código muito mais fácil de ler. E passamos muito mais tempo lendo código do que
escrevendo-o. Portanto, sempre vale a pena esse tipo de
legibilidade em mente.
29. Contadores de loop: Outro uso comum das
variáveis é
acompanhar onde estamos ao
executarmos um programa. Por exemplo, uma das
coisas que podemos querer
acompanhar é onde
estamos em um lúpus, esse loop está iterando. Então, vamos dar uma
olhada em nossa maneira de fazer isso. Então, poderíamos começar
com uma variável chamada counter e
defini-la como 0. Então temos um loop. Portanto, limitará esse
loop a 30 pontos vezes. Então, 30 vezes du. E então vamos pôr
um fim aqui. Agora eu sempre acho que é realmente útil colocar o
tipo no final depois de eu, depois de digitar o du. Então, se eu estiver
usando um Air for, se eu estiver fazendo algo como
um loop com um DO no final, e veremos muitos
outros exemplos mais tarde. Eu sempre acho útil apenas
colocar o final
imediatamente e depois, e depois escrever meu
código no meio. Isso evita que eu esqueça de
terminar um bloco de código mais tarde, surgindo com algum bug
estranho que às vezes
pode ser
difícil de encontrar. Então é isso que eu prefiro fazer. Mas de qualquer forma, então o que
vamos fazer é passar por esse loop. E para cada vez
que passarmos, vamos tocar uma nota. Então, vamos jogar 50 plus. O balcão
dormirá por uma batida. E então vamos,
incrementaremos o contador em um. Então, ele dirá que o contador
é o que quer que
seja agora, mais um. Ok, então vamos apenas caminhar ou falar sobre
isso, se quiser. Então, a primeira coisa que fazemos
é definir o contador para 0. Então dizemos, faça isso 30 vezes. Na primeira vez neste
loop, jogamos 50 mais o
contador, que é 0. Então jogamos 5050 mais 0 é 0. Em seguida, dormimos por um
quarto de segundo. Adicionamos um ao balcão e voltamos dessa
vez pelo loop. Então jogamos 50 mais um. Dormimos por um quarto de
segundo, adicionamos um a isso. Então os contadores agora para voltar através dos contadores para
que ele jogue 50 mais dois. Então jogamos 52 e dormimos. E então adicionamos um ao
balcão, então agora são três. Nós voltamos, jogamos 5353, depois dormimos por um quarto ou
segundo quarto de uma batida, e depois adicionamos um a ele
com 54 e assim por diante e assim por diante. E fazemos isso 30 vezes. Então, o que devemos
aqui é à medida que avançamos, como vimos anteriormente, à medida que aumentamos um número no valor da nota midi. Então esse número aqui, esse 50, deve mover a bola
que sobe um semitom. Então, o que devemos
aqui é começar aos 50
e então devemos, cada quarto de batida,
devemos subir. Devemos tocar uma nota
disso em um semitom. Então, vamos ouvir isso. Aí estamos nós. Então isso funciona exatamente
como esperávamos. Agora, isso é, novamente, uma coisa
tão comum de se fazer que Sonic Pi
nos fornece um atalho. E isso funciona assim, então isso vai funcionar
perfeitamente bem e é absolutamente bom usar isso se você tem
isso na sua cabeça e é mais fácil para você ler, é absolutamente o
certo coisa a fazer. Mas há uma versão mais curta. Eu vou mostrar para
você agora para que possamos nos livrar dessa variável de
contador. Basicamente, podemos colocá-lo aqui. Então, podemos dizer entre
dois tubos, assim. E podemos nos livrar disso aqui. Então você pode ver que isso o
torna muito, muito mais curto. Mas podemos dizer que 30 vezes sim. Podemos dizer, ok,
inclua este contador. Esse contador
sempre começará em 0. E toda vez que
passarmos por esse ciclo, ele adicionará um. É uma coisa muito comum de se fazer. Há uma função embutida. Parece um pouco estranho.
Não é tão fácil de ler. Eu aprecio isso, mas é, se você se acostumar com
isso, isso economiza
um pouco de código. Claro, esse contador poderia ser chamado de qualquer coisa que você quiser é bastante comum codificar
para ver isso chamado I.
Esta é apenas uma convenção em aparentemente todas as linguagens de
programação. Então, eu usei isso em toneladas e toneladas de
idiomas diferentes ao longo dos anos, mas é comumente chamado de IAC, poderia ser chamado de contador, você poderia chamá-lo do
que quisesse. Você poderia chamá-lo de Steve. Então, vamos ouvir isso. Novamente. Apenas uma versão mais curta
do que fizemos antes. Podemos chamar isso do
que
quisermos, só precisamos lembrar
que precisa ter o mesmo nome dentro do loop. Então é isso. Ok, então
brinque um pouco com isso
e tenha certeza de que você realmente
entende o que está acontecendo. Lembre-se, vá para a próxima
seção, onde veremos mais alguns conceitos de
programação. Desta vez algumas estruturas de dados que
são incorporadas ao Sonic Pi.
30. Listas: Ok, então há uma série de estruturas de dados
incorporadas no Sonic Pi. É um nome complicado para
um conceito bastante simples. Então, vamos analisar
cada um pouco a pouco. E eles realmente são projetados para tornar as coisas um
pouco mais fáceis para você. Dentro do Sonic Pi, há muitas coisas de construção realmente
úteis, mas vamos
explorá-las nesta seção. Então você pode ver na tela
aqui que eu tenho um programa
muito, muito simples
que vai tocar um acorde. Agora, outra maneira de fazer isso, apenas para economizar um pouco de
tempo em algumas linhas de código, poderíamos usar uma coisa
chamada lista. Agora, uma lista é apenas
pega vários valores e os coloca juntos, separados por vírgulas
dentro de colchetes. Então, deixe-me mostrar-lhe aqui. Então, vamos colocar um, vamos
adormecer aqui. Assim, podemos ter uma lista
que é, que está aqui. Então, temos colchetes e depois colocamos todos os valores que
queremos dentro dessa lista. E então tudo nessa
lista será operado, então ele reproduzirá
tudo na lista. Poderíamos dizer que
poderíamos ter o mesmo valor. Então um A4, I, Dó sustenido cinco, Dó
sustenido cinco e um E5. Se executarmos isso, mas vamos tocar
esse acorde e depois vamos buscar uma batida. E então vamos
tocar esse acorde e
veremos que há
exatamente a mesma saída. Deixe-me separar esse byte. Dois segundos. Acho que
um estava aguentando. Ok? Então, isso é exatamente
o mesmo que isso. Mas estamos, acabamos colocar todos os nossos
valores dentro da lista. Isso significa que podemos
mover três linhas de código para uma. Nós podemos igualmente. Eu substituí isso por números de notas
midi. Então, poderíamos dizer o
equivalente aqui, que é sessenta e nove, setenta e três e setenta e seis. Aí estamos nós. Então, é exatamente
o mesmo. Então, isso é apenas uma lista de coisas. E neste caso, estamos pedindo que quando lhe pedirem
para jogar o comando, para jogar esta lista, essa lista contém
todas essas coisas, mas há outras
coisas que podemos fazer. Então, vamos dar uma olhada em algumas
coisas interessantes que podemos fazer. Então, vamos criar um loop. Vamos deixar
isso assim por enquanto e depois escolher e ter certeza de colocar
nosso final. Agora. É um loop que
vários precisam dormir. Então, ele vai dormir
por meia batida. Agora, o que isso vai fazer é se eu ficar
assim, vai tocar esse acorde. Durma pela metade de
cada um. Jogue de novo, durma depois de tocarmos novamente. Agora, eu sou realmente
algo que pode ser útil se pudéssemos
escolher um desses
aleatoriamente para tocar cada vez
que passássemos pelo loop, sabemos que teríamos uma
nota dentro desse acorde. Mas só vai
escolher uma das coisas
nessa lista de jogo em vez de
jogar todas de uma vez. A maneira como fazemos isso é com outra função de
randomização. E usamos
muito a randomização na
programação de computadores em geral, mas particularmente esse tipo de código de criação de música
porque cria, produz algumas
melodias
realmente interessantes e patentes. Então, vamos usar o Choose Kiba. Então, acabamos de colocar a lista
dentro de parênteses. Quantos dizem, ok, bem, me
escolha algo que
menos que planta. Então, isso é basicamente o que
esse código está dizendo. Vamos ouvir isso. Ok, então você pode ver
que está escolhendo algo
dessa lição. Você pode ver
facilmente como algo um pouco mais complexo ou
talvez uma lista um pouco mais longa, pode fornecer alguma inspiração
interessante para músicas e ideias. Agora, eu não acho que
poderíamos fazer se pudéssemos, poderíamos criar uma variável. Para que pudéssemos sair daqui. Poderíamos falar e dizer, Oh, poderíamos fazer isso
por dentro ou por fora. Não importa, mas apenas para demonstrar o
uso de variáveis. Então, podemos dizer, vamos criar uma variável
chamada
lista de sublinhados de escala é igual a, e então vamos
cortar a partir delas. Coloque isso lá fora. Então
podemos dizer jogar algo escala, essa lista de escalas. Isso funcionará
exatamente da mesma maneira, mas acabamos de
extrair isso agora em uma variável. Então, por que isso é útil?
Por que podemos querer usar isso em vários lugares
diferentes. Podemos dizer que talvez queiramos
mudar essa escala para
uma escala diferente. Nesse caso, poderíamos simplesmente mudá-los uma
vez
e podemos nos referir a isso
em todo o nosso programa. Mas apenas mais um exemplo
de uso de variáveis para armazenar valores. Então,
esta é a nossa lista.
31. Índices: Ok, e se quisermos tocar uma
nota específica sobre listas? E as listas podem ter
um tamanho arbitrário. Poderíamos ter
centenas de notas lá, se quiséssemos, ou 100, você pode armazenar qualquer coisa
menos do que nosso estojo estava apenas armazenando números
e depois reproduzindo-os, mas podemos armazenar
qualquer coisa lá desejado por você pode ter centenas de itens
em sua lista. Como você escolhe
qual deles você quer jogar se quiser
jogar um em particular. Isso é uma coisa chamada indexação. Ou um índice é, é apenas
uma forma de dizermos ao programa qual item
da lista queremos jogar. E poderíamos fazer isso
simplesmente assim. Então, vamos nos livrar dessa
randomização por enquanto. Então, vamos nos livrar de, Vamos nos livrar desse
loop completamente. Então, se eu jogar isso agora, vai jogar todos os
três acordes. Mas se eu quisesse apenas
tocar essa nota do meio aqui, então eu colocaria apenas entre
colchetes um. Eu posso igualmente fazer
isso como esta lista. Talvez, talvez isso seja
ainda mais simples de ver. Então, vamos colocar isso aqui, do jeito que tínhamos
a lista originalmente. Então você pode ver que eu tenho minha lista e estou dizendo, esta é a minha lista. Basta jogar este item para mim
aqui. Então, esse é um. Agora, por que isso é um enquanto
Lissa é sempre base 0? Vamos dar uma olhada rápida em
um slide para explicar isso. Ok, então, como mencionei anteriormente, os computadores começam a contar em 0. Então, normalmente, quando
começamos a contar, se você perguntasse a uma conta de gráfico, eles contariam 1234, etc. Os computadores sempre
começam a contar em 0. Isso é chamado de cruz,
quase todas as
linguagens de programação. Há exceções, mas quase todas as
linguagens de programação. É por isso que o valor médio na
lista de três itens que acabamos de ver. É por isso que, para
obter o valor médio, escolhemos o índice um porque o índice 0
teria sido 69. Índice 173, um índice para 76. Então esse é o índice 0. Este é o índice um e este é o índice número dois. Os índices sempre começam em 0
da mesma forma que todo o resto. Então, sempre que fazemos qualquer
condado em tamanho Sonic Pi. Ok, então quando eu
executo este programa, então devemos ouvir de
fato o número 73. Então, só para provar isso, vamos jogar um 73. E depois dormiremos
por algumas batidas. E então vamos jogar o índice
número um desta lista. Que podemos
ver claramente que eles são a mesma nota. Se eu quisesse mudar isso, eu poderia jogar o primeiro
item da lista. Eu quero, eu posso jogar o
último item da lista. O que acontece se eu tentar jogar algo fora da lista? Bem, nada acontece. É ao invés de
lançar um erro, é simplesmente, se olharmos
aqui nos logs, nós simplesmente reproduzimos um descanso. Agora, existem outras
maneiras de jogar RESA. Então, analisamos,
vamos remover isso. Então, há um tipo de coisa
embutida no Sonic Pi. Então, podemos tocar em um
restaurante lá. Para que pudéssemos jogar, digamos um C3, C4, C4. Só estou inventando coisas agora. UM E4. E então podemos usar
esse símbolo aqui, esse códon, que significa prisão. E então podemos jogar,
digamos, outros três, A4. Ok, então agora isso é, isso não vai funcionar dessa forma
porque nós vamos, nós vamos apenas
tocar essas quatro notas e nada aqui porque isso vai
desempenhar um papel como um núcleo. Então, vamos talvez voltar a
menos para termos uma escala, ou isso pode ser
chamado de qualquer coisa. Então minha lista é igual a isso. E então talvez possamos usar essa construção de loop que
tínhamos antes. Então, poderíamos dizer cinco. Temos cinco coisas, sim, cinco vezes vamos
usar nosso balcão. Novamente, usaremos a IA por
convenção. Aí está o nosso fim. Então, podemos dizer jogar minha lista. E então,
entre colchetes, podemos dizer qual índice
queremos jogar. O índice que queremos jogar
é baseado no contador. Então, novamente, isso pode
ser chamado de contador, pode
ser chamado de
qualquer coisa que você quiser. Então, ao olharmos pela primeira vez, o contador será 0. Então, ele vai jogar o
0º item no item da lista,
item 0, o primeiro item. E então vamos dar a
volta novamente no contador que
incrementamos ele
jogará este item aqui. E então o contador
será incrementado. Reproduza este item aqui. Então vamos jogar isso
que é prisão, e depois jogamos um quatro. Agora, querendo
dormir aqui. Vamos ouvir essa área. Então, duas coisas que estão prontas. Uma é que podemos usar esse símbolo
especial dentro, desculpe, pi para indicar um descanso. E em segundo lugar, colocando
essa lista dentro uma variável e, em seguida,
usando o contador, que vimos como parte
das iterações, usando esse
nome de variável aqui para usar o índice para escolher esse
item, oferta menos. Então, dê uma olhada nisso. Isso é bastante usado. Esse tipo de código é
bastante usado. Portanto, certifique-se de entender
isso
completamente antes de passarmos
para a próxima seção, onde analisamos o uso
de alguns dos conceitos que usamos até
agora para criar um sequenciador de bateria
simples.
32. Como criar um sequenciador de tambores: Ok, então vamos usar algumas
das coisas que vimos até agora para criar um sequenciador de
bateria simples. Portanto, nenhum dos conceitos
aqui deve ser novo para você, mas provavelmente é
a primeira vez que
combinamos muitos deles para criar
algo realmente útil. E isso ajudará
você a realmente começar
a ver o poder da visão pi. Depois de combinar todos esses
conceitos, nós temos, ainda
temos muito
mais a aprender, mas,
mas temos tudo o que precisamos para construir um sequenciador de bateria agora. Então, vamos começar com a criação de algumas
variáveis que
conterão os nomes das amostras que queremos usar. Muito parecido com o que
fizemos antes. Então, vamos apenas dizer
oi chapéu é igual ao símbolo de sublinhado de
bateria,
sublinhado fechado. Criaremos uma armadilha,
que chamaremos de zona SN. Então, esse é apenas o
nome de amostra que vamos usar. E criaremos um chute, que usaremos BD house, que é o nome
das amostras incorporadas. Então vamos
usar para o bumbo. Então, a próxima coisa que
vamos fazer é criar
mais três variáveis, e elas vão conter os padrões para nossa batida de bateria. Então, quando
criarmos esse padrão, vamos criar uma string e explicarei
isso em um segundo. E ele conterá
x's e traços ou hifens. Então, basicamente, o que queremos fazer é escrever um
pouco de código depois disso,
onde quer que vejamos um
X reproduzir a amostra, se não virmos um x, não
reproduza a amostra e esta será a base do
nosso, do nosso amostrador. Então, vamos criar o
padrão para o chimbal. Então, vamos
criar uma variável chamada sublinhado de chapéu alto. Padrão de sublinhado. Aqui, vamos
criar uma string. Agora, uma string é
apenas um tipo de valor que incluímos entre aspas
duplas como esta. Isso diz que isso
significa que podemos usar espaços e o que
quisermos dentro. Mas é basicamente
apenas uma forma de dizer, trate isso como um valor total. Mesmo que haja espaços ou
outros transportadores lá, este é um vale inteiro. Aqui dentro. Vamos
colocar nossa sequência de bateria. Vamos nos
certificar de que temos 16 personagens aqui, porque vamos
criar uma sequência. Então isso tem 16 etapas, então sequenciador de 16 etapas. Então, vamos dar uma olhada aqui.
Então, vamos criar 16. personagem diz 123456789101112. Oh, não, eu rebati
isso muito errado. 123456789101112131415. Eu vou acabar com isso. Terminaremos com um
chute duplo. Então nós temos 16 passos são, eu
errei totalmente. Havia apenas e os x's eu acho que nós vamos chutar,
descansar, chutar , descansar, chutar, descansar, chutar descansar, todo o caminho, então acabar com um duplo clique. Então, temos 16
personagens lá. Em seguida, criamos nosso
padrão de caixa. Então, vamos ter um padrão de
caixa que
se parece com isso. Então, vamos criar uma variável
chamada padrão de caixa. E, novamente, queremos 16 itens
dentro do nosso padrão de caixa. Então vamos
hífen, hífen, hífen, hífen hífen X hífen
hífen hífen hífen hífen, hífen, hífen, hífen, hífen. Podemos ver porque
a fonte usada dentro do editor de código é
uma fonte monoespaçada, o que significa que
cada caractere ocupa a mesma
quantidade de espaço. Podemos ver isso porque
sabemos que temos 16 aqui. Se estes se alinharem,
temos 16 aqui também. Mas cria nosso padrão de chute. Como eu disse antes. Sonic Pi realmente não se
importa com espaços em branco. Você pode colocar espaços ou retornos de
carro onde
quiser, apenas ignorá-los. Então, o
que vou fazer é adicionar apenas espaços extras. Então, tudo isso se alinha bem. Vamos criar
um padrão de caixa, algo assim. Está bem? E realmente
não importa como é o
padrão de chute estreito do
seu chimbal. Isso é o que eu
vou fazer por enquanto. E então, aqui embaixo,
vamos criar um loop terminando Command M ou
Control M para formatar o código. E então, dentro disso,
vamos criar um loop aninhado. Queremos fazer um loop para sempre, mas queremos ter um loop 16
vezes dentro disso, que vai
passar por isso e decidir se jogamos um chapéu alto, uma armadilha ou um chute. Ok, então vamos criar nossos
16 vezes, 16 vezes du. E então vamos
usar um contador aqui. Então, novamente com o cachimbo. Lembre-se de que poderíamos fazer
isso inicializando o contador e fazendo um contador
igual ao contador mais um ou, ou, ou o que quer que seja aqui. Mas este é o
atalho que vamos
usar porque é uma coisa muito
comum dentro do código Sonic Pi. Então, vamos criar nosso fim. Precisamos lembrar de
adormecer dentro do nosso ciclo. Vou dormir por um quarto
de batida aqui. Então, vamos usar o F simples para
determinar se. Devemos tocar cada tambor ou não. Então, vamos apenas dizer amostra de chimbal. Então, vamos jogar
isso, a amostra de chimbal, que vai jogar
essa variável aqui. Então, símbolo de bateria perto, mas vamos tocar
se o padrão de chimbal, não
consigo soletrar padrão
de chapéu alto. E então vamos
ver se o índice é igual a x. Agora deixe-me explicar isso para você. Então, a primeira vez no
balcão será 0. E então vamos dizer para
tocar a amostra de chimbal, mas somente se o
padrão de chimbal para o índice 0. Então, vamos
olhar para esse padrão de chimbal. Vamos olhar para
o primeiro personagem dentro do padrão chimbal. Se isso for um X,
jogue o chapéu alto, vamos pela segunda vez o contador vai
incrementar a contagem agora é um. Desta vez,
vamos dizer para jogar a amostra de chimbal psi
se o personagem na posição um dentro
do padrão chimbal for um x bem posicionado
com base em 0. Então é o segundo personagem
enquanto não é um x. Então não vamos
jogar o chapéu alto. Então, podemos fazer isso e vamos
ouvir o padrão de chimbal. Você deve ser capaz de reconhecer o padrão de chimbal dessa corda que
temos no topo aqui. Então ele vai tocar oi chapéu,
descanso, descanso de chimbal, descanso de chimbal, descanso chimbal todo
o caminho até o fim até atingirmos dois chimbal. Porque estamos dando voltas, isso vai ser efetivamente três chimbal e linha. Então,
vamos ouvir isso. Está bem? Então esse é o nosso sequenciador
básico. Então, tudo o que resta a fazer
é fazer exatamente a mesma coisa para a armadilha e para o chute. Então, tudo o que dizemos é tocar
a amostra da caixa. Se o padrão de laço na posição em que
estamos dentro do, determinado pelo contador,
o índice do rato. Então, ao lado do balcão está um x. E vamos ouvir isso. E, finalmente, podemos fazer
o mesmo para o chute. Então, podemos dizer jogar
o chute de amostra. Se o índice
do padrão de chute do contador for igual a x. E, novamente, toda vez
que contornarmos esse loop, o
contador aumentará,
iniciando em 0. Mas toda vez que
vamos ao redor do ciclo, o contador vai
aumentar em um. Então, toda vez que
passamos pelo conselheiro,
aumentamos em um. Então, se houver um x, essa posição dentro
do padrão de chimbal,
o padrão de caixa ou
o padrão de chute. Se esse for um x, reproduzirá a amostra relevante. Agora vai fazer
isso é por isso que colocamos os 16 vezes contra inibidores. Então, temos nosso
loop, que sou eu, vamos fazer um loop para sempre. Mas vamos fazer o loop
16 vezes dentro, o que significa que
vamos fazer isso. 12345678910111213141516
vezes em
que esse loop terminou. E vamos acertar este aqui, vamos voltar ao topo
e acertar isso iniciará um novo loop de 16 vezes com o
contador reset, reiniciado em 0. Portanto, o contador será
0123456789101112131415. Uma vez que atinge 15, já
passou pelo salto 16 vezes. Lembre-se de que somos baseados em zero
quando contamos, ele voltará ao topo e, em seguida, o contador
será redefinido para 0. Então, voltamos ao
início da corda e vamos dar voltas
e voltas e voltas de novo. Então, vamos ouvir nosso
sequenciador em ação. E, claro, podemos mudar
nosso padrão muito rapidamente. Agora, você está começando
a ver o poder dos loops e variáveis
de seleção. Então, se eu tivesse acabado de programar
esse padrão de bateria tocando samples, usaria
apenas uma sequência. Então, apenas amostra, amostra, amostra que teríamos escrito
são muitos e muitos códigos. E se eu quisesse mudar
o som do bumbo, por exemplo, ou o som da caixa. Eu teria que
ir e mudar isso. E uma quantidade terrível de
lugares também teria sido muito difícil
de acompanhar . Onde eu deveria jogar? Chapéu alto e onde não
devo comprar? Onde eu deveria jogar um
chutador? Onde devo colocar? Usando esse
padrão simples aqui, usando
apenas alguns
dos conceitos que
aprendemos até agora. Temos um pedaço de código muito bom,
muito facilmente legível, mas o mais importante, é realmente mas o mais importante, é realmente
facilmente alterável. Muito fácil para mim agora mudar o
padrão do meu chute. Então, vamos adicionar um chute lá. Em vez disso. Nós executamos isso. Temos um padrão de
chute diferente. Poderíamos mudar a
caixa para outra coisa. Então eu acho que há um
chamado snare generic. Então, novamente, código facilmente
legível, mas também facilmente legível e compreensível e
facilmente alterável. Então, aqui estamos nós. Então, certifique-se de que você
realmente entende isso,
brinque com isso. Altere alguns dos padrões, altere alguns dos sons de
amostra. E por que não entrar e introduzir outro tambor
na sequência. Então, talvez introduza
um sino de vaca ou um símbolo aberto nesse padrão e
veja como você se sai.
33. Como criar padrões: Ok, Então, anteriormente, vimos
uma maneira de usar um loop para iterar sobre uma lista ou
lista de notas para
tocá-las cada uma em ordem. Mas, na verdade,
existem algumas maneiras
diferentes de fazer isso dentro do Sonic Pi. E, como seria de esperar, o Sonic
Pi cobriu você com todas as tarefas comuns de programação que podem ser úteis para a música. Então, na verdade, há algumas funções
internas chamadas
padrão de jogo e padrão de jogo, que nos permitirão
alcançar o que queremos fazer. Então, vamos dar uma olhada aqui. Então, tivemos um array de lista que
adiciona alguns valores nele. Então poderíamos chamar isso, vamos chamá-lo de meu padrão novamente. Então, acabamos de criar uma lista. Lembre-se de que nossa lista é
apenas um monte de coisas
separadas por vírgulas dentro
desses colchetes. Então, vamos escolher
alguns números aqui. Sessenta e nove, sessenta e
três, setenta e seis. Tenho certeza de que era isso
que tínhamos antes. E então podemos dizer jogar padrão de
sublinhado. Reproduzir padrão de sublinhado. Meu padrão. Então, vamos ouvir isso. Isso é exatamente o equivalente
a fazer isso. Então, vamos apenas comentar isso. Então isso não vai ser executado, então é exatamente o mesmo. É que
às vezes é um pouco mais fácil armazenar essas coisas em uma variável. Mas de qualquer forma está bem. Então, o que isso vai fazer
é, por padrão, simplesmente tocar cada nota dentro desse
padrão, dentro dessa lista. E vai
dormir por uma batida entre cada nota
que toca. Se eu quiser mudar, eu posso
usar um método diferente chamado play pattern
underscore, cronometrado. E depois,
depois da lista, eu só preciso
dar um valor por quanto tempo eu queria
dormir entre cada nota. Então eu disse apenas diga
vírgula zero 0,25. E isso vai jogar
esta lista aqui em ordem e descansar por zero
0,25 entre cada nota. Ok, aí estamos
bem simples. E, novamente, poderíamos fazer coisas muito
mais complexas lá. Então, poderíamos dizer que
poderíamos apresentar um descanso
como fizemos antes. E então poderíamos fazer
algo parecido com o quê? Poderíamos fazer a escala de
volta, certo? Então, faríamos 7673. Bem, o
arpejo de volta e 69. Então isso vai
jogar todo o caminho. Ele vai para o restaurante um quarto de batida e
depois todo o caminho de volta com um
recife de coral entre cada um. Nota. Que somos bem simples. Então, vamos nos
divertir um pouco. Então, vamos usar um sintetizador e vamos
usar um lucro de sintetizador. Vamos criar
um comando de loop M, e vamos jogar um
padrão de tempo, mas dentro dele, então vamos jogar comScore
pattern, underscore timed add. Criaremos uma lição
com colchetes r. E dentro disso, vamos
criar uma série de notas. Então, vamos fazer isso. Vamos para S3, v3, g3, G3, B3 e um C4. Então, aqueles de vocês com algum conhecimento de teoria
musical podem ter percebido que aquele
é um arpejo de sete em Dó Maior. Muito bem se você
fez. Então, vamos subir o arpejo e depois
vamos voltar para baixo. Então, um B3, patrick G3 e um E3. Eu só vou dar uma
volta, ao redor, em torno disso. E vamos
descansar por zero
0,2 de uma batida entre
cada coisa que tocamos. E acabaremos com algo
que pode parecer familiar. Um pouco de diversão com,
com padrões. Lá.
34. Acordes: Outra coisa que
incorporamos ao Sonic Pi, nossos tribunais. Então, vamos dar uma olhada.
Para tocar um acorde. Podemos simplesmente dizer tocar
um acorde e só
precisamos dizer qual
cor queremos que ele toque. Vamos jogar um D3. Então precisamos
dizer que tipo de núcleo queríamos jogar. Portanto, há uma
lista completa aqui e você pode ver que ela aparece
no código completo. Portanto, há um monte de núcleos que estão disponíveis
para nós e
é realmente uma espécie de extensa lista
de acordes que estão passando. Mas, por enquanto, podemos
apenas dizer, ok, toca um acorde maior.
Vamos jogar isso. Aí estamos nós. Então isso é
tocado como um acorde em Ré maior. Existem muitos
tipos lá, então podemos querer
tocar um acorde menor. Poderíamos tocar um sétimo menor, algum tipo de acorde diminuído. Ok, então há um
monte lá dentro. E como você pode ver, o código completo é
realmente excelente. Então, assim que você
começar a digitar igual, isso lhe dará tudo isso. Então, dê uma
olhada, veja os diferentes tipos de acordes aqui e isso salva você criar nessa
lista e malhar. Os valores são as notas que
precisam estar dentro de cada acorde. Então, digamos que temos um D3. Vamos fazer um, um
grande acorde sétimo. Agora podemos realmente
usar índices para nos
dizer qual nota
no núcleo tocar. Então, se eu fosse colocar um
índice de um nisso, isso
tocaria a segunda nota no acorde de sétimo D3 maior. Novamente, se eu mudar
esse índice para ficar bem, então eu posso usar, usar o código aqui, usar índices para retirar
as notas dentro dos tribunais. Também posso tocar em
versões de acordes. Então, vamos nos livrar
desse índice por enquanto. Vamos mudar isso
para um acorde menor. E eu posso dizer, ok, bem
, me faça a primeira
inversão disso. Jogue a segunda inversão. A terceira inversão.
Aí estamos nós. Então, muitas coisas realmente úteis, funções
realmente úteis
incorporadas nos tribunais. Eu também podia tocar o acorde
como um, como um arpejo. Então, vamos remover isso
para mantê-lo simples e simples. Mas em vez de dizer
tocar acorde, posso dizer tocar,
tocar corda padrão. Por padrão, cada
padrão de jogo vai deixar um resto de uma batida
entre cada nota. Mas se eu quiser mudar
a velocidade do arpejo, posso dizer botão Play, maré. E eu só preciso colocar o
final aqui, então vamos dizer cinco, então um quarto de batida
entre cada nota. Mais uma coisa que posso fazer com padrão de
jogo Simon é que
posso realmente dar valores
diferentes para o tempo que eu quiser fazer notas
respiratórias. O que isso vai fazer é alternar
entre os dois. Então, vai sustentar
0,25 para a primeira nota, 2,5 para a meia batida
para a segunda nota, quarto para a terceira
metade da quarta. E nós vamos apenas, vamos
apenas alternar entre esses dois enquanto eu subo no arpejo. E você pode ver
isso refletido
no tronco aqui
no lado direito. Também temos o conceito
de graus de acordes. Então, se você fez
muita teoria musical, você saberá sobre os graus
básicos. Então, às vezes, quando falamos
sobre causa, falamos sobre a progressão de acordes comuns. Então falamos sobre talvez 156 por ser uma progressão de
acordes comum. Na verdade, eles estão
integrados ao Sonic Pi. Vamos escrever
um pequeno exemplo só para demonstrar isso. Então, vamos definir o BPM para
ser um pouco, um pouco maior. Vamos usar um piano. E então vamos criar uma variável que vai
acumular agressividade. Então, nossa progressão
de acordes será um anel. Agora, não se preocupe com
esse anel de palavras por enquanto. Abordaremos isso mais tarde. Só por enquanto, basta digitar
a palavra Reagan. Vou explicar exatamente
o que isso faz mais tarde. Mas, basicamente, é uma lista
que gira e gira. Então, nós apenas
digitamos esses que
são símbolos comuns, certo? Então, usamos algarismos romanos para nossas quatro progressões de acordes quando falamos sobre teoria musical. E então criaremos um loop e rodaremos oito vezes. Dentro do loop,
precisaremos lembrar de terminar. Vamos lembrar de colocar
nosso sono também. Então, aqui nós vamos tocar o grau
do acorde. Então, vou explicar isso
como eu, enquanto digitava. Então, vamos
dizer grau de acorde, que é uma
função embutida muito parecida com acorde ou outras que
veremos em um minuto. Eu vou dizer tocar, tocar, tocar o próximo valor
em nossa progressão de acordes. Portanto, esse carrapato
o verá novamente mais tarde. Mas basicamente, apenas para, muito rapidamente, um anel
é basicamente como uma lista, mas em vez de ir para
o final e não conseguir nada, se ele conseguir o único
volta ao início. Então, vamos dar voltas
e voltas. E tick é apenas uma forma
de dizer, dizer, me
dê a próxima coisa
da lista ou do ringue. Estaremos no S3. será a chave em que estamos. Queremos estar em uma chave importante. Eu sei soletrar major. E então vamos adicionar mais
uma opção lá. Então, vamos definir o lançamento
lembrar do envelope ADSR. Então, se olharmos para cima antes,
vamos definir o lançamento de quatro. Então, o que isso deve
fazer é, usar o piano
sintetizador vai tocar. Cada nota vai
lançar mais de quatro batidas, é por isso
que dormimos por aqui. Vamos jogar
em uma escala maior C3, ou chave maior C3. Vamos tocar
o primeiro acorde, o sexto acorde, o
segundo e depois o quinto.
35. Escalas: Ok, assim por diante em escala. Então, algumas escalas são
incorporadas ao Sonic Pi. Na verdade,
muitas escalas são construídas em psi prime.
Você vai ver isso agora. Então, vamos começar com
um tempo padrão de jogo. Então, vamos querer
tocar cada nota na escala. Então, vamos jogar uma escala. E então,
lá dentro, precisamos dizer qual será
a raiz da nossa escala. Então, vamos ver um C3, e depois vamos
escolher entre essa
lista certamente longa de escalas. Portanto, há uma grande
quantidade lá. Podemos ver todas as fontes
como escalas de blues. Há todos os tipos de escalas de world music
diferentes aqui
dentro, ou escalas métricas. Há modos de ver. Eoliano. Aí estão as escamas
azuis novamente. Meninas chinesas,
escamas de crochê, diatônicas, diminuídas,
modo dórico, egípcio. Há um, há
muito aqui, então definitivamente vale a pena dividir essa lista. Podemos ver aqui embaixo que
temos todo tipo de coisa. Então, vamos escolher
um comum aqui. Então, vamos escolher o pentatônico
principal aqui. Depois, podemos selecionar quantas
oitavas queremos em nossa escala. Faça isso apenas com um numero oitavas. Então dizemos num oitavas
e diremos que
queremos três oxigênios
em grande escala. Vou dizer que estamos jogando
na hora da
patente para lembrar, então , por quanto tempo
queremos descansar entre cada nota. Então isso não é nada 0,5. Devo definir o lançamento das notas que
vamos tocar. Mas defina isso bom e
curto para zero 0,25, apenas para que, se não fizermos isso, todos os
nós se encontrarão. Nós não estávamos aqui. Uma
bela escala nítida sendo tocada, então
vamos jogar isso. Ok, então essa é a escala. Portanto, há um
monte de embutidos. Agora, vamos apenas comentar isso.
Vou te mostrar uma coisa. Portanto, há um comando dentro Sonic Pi é um comando Ruby,
mas, em seguida, Sonic Pi chamado
puts e puts vai nos
permitir corrigir o que
queremos no log. Então, por exemplo, se
eu fosse dizer bundas, Sonic Pi é ótimo. Quando eu
executo isso, ele vai mostrar isso para o log. Lá vamos nós. Para que
possamos ver lá dentro. Agora, isso pode ser ponto
muito útil durante seus programas, apenas para exibir alguns, é um OK para
que você saiba onde está. Então você sabe, quando você está
dentro de um loop ou quando você está fora de sua
parte específica em seu programa. Existem outras coisas
que você pode fazer com put, então você não pode obter as saídas de algumas funções
incorporadas. Então, por exemplo, se eu
quisesse dizer rodada de saída, isso vai gerar para o log de valor
entre zero e um. Se eu criar uma variável, vamos chamá-la de mensagem
igual a hello. E então eu envio
ou coloco minha mensagem. Agora estamos, então ele
pega o valor dessa variável e uma
saída para o log. A razão de eu ter chegado aqui de qualquer maneira, eu saí em uma
pequena missão secundária. Mas a razão pela qual eu coloquei
isso aqui é que eu
posso colocar todos
os nomes de escala no log
fazendo, fazendo isso. Então eu posso dizer escala de saída NEEPS. Vamos colocar
nomes de escala. Aí estamos nós. Então, o que vai acabar
no log é uma lista de todos os nomes das escalas. E você pode ver que há muitos
e muitos deles. Provavelmente estou passando
um pouco rápido demais, mas se não o fizesse, estaríamos rolando por dias. Então você pode ver
lá dentro. Então, definitivamente dê uma olhada nessa lista. Você pode usar o código
que temos aqui. Apenas descomente essa coisa aqui. Vamos lá por enquanto. Use esse tipo de CO2. Basta
ouvir, ouvir algumas das escalas, talvez tocar algumas delas com sentido
diferente para ver que
coisas interessantes você consegue levantar. Ou seja, uma coisa que poderíamos fazer
com as escalas, por exemplo, é que poderíamos reproduzir
aleatoriamente algumas
coisas na escala. Então, vamos dar uma olhada
rápida lá. Então, poderíamos dizer, vamos pegar as
três oitavas pentatônicas maiores C3 e nos conduzirão
exatamente da mesma forma. Mas vamos escolher não
jogar todo o padrão, mas apenas escolher
algo disso. Então, precisaremos apenas mudar
isso porque não estamos mais
jogando uma patente cronometrada. Vamos fazer com que seja simples
e agradável. Vamos fazer isso. E então vamos dormir
por meia batida. Então, vamos colocar tudo em
um loop e executar isso. Novamente. Se você digitou esse código em seu computador
e o reproduz, ele reproduzirá exatamente a mesma sequência de
nós que eu obtenho. Isso ocorre porque o lado da
randomização, Sonic Pi, é uma espécie de
pseudo-randomização. Para termos certeza de
que sempre
jogamos o mesmo todas as
vezes, se quisermos. Se eu quiser mudar isso, eu posso, eu posso mudar a semente de
randomização. Então escolha a semente aleatória, eu posso fazer isso 606. E desta vez
teremos um diferente, posso fazer 99 formas
diferentes. Mas, novamente, desde que
as sementes aleatórias
permaneçam as mesmas, sempre serão a mesma
música.
36. Anéis: Mencionamos traz antes.
Vamos dar uma olhada nos anéis. Então eu trago é uma forma de garantir que
não saiamos do
final da lista. Então, vamos demonstrar isso. Então, vamos usar
o puts ground. Podemos enviar coisas para
o log e ver agora. Então, digamos que se eu criar uma lista, então 606467, essa
é a que usamos antes. Acho que quero enviar para o log o
item número um, então 01. Portanto, isso deve ser enviado para o número de
registro 64. Aí estamos nós. Assim, podemos ver a saída do
número 64 para o log como
esperávamos. Mas o que acontece se eu
pedir o item número
nove desta lista? Podemos ver que recebi um nulo. E a razão para isso é
que há apenas três itens, então item 0, item um, item dois. Então nove está fora do alcance, não existe, não
existe dentro dessa lista. Então me diz que é nulo. Agora Sonic Pi, quando você
usa o comando play, realmente lida com isso muito bem e
dá um descanso em vez de
lançar um erro. Mas podemos dizer que isso poderia
facilmente nos pegar. Então, por exemplo,
vamos colocar isso
em nove vezes. Vamos usar esse
atalho novamente para pegar o balcão e puxar, traga isso aqui. Então, o que eu espero
ver aqui é que ele produza 60 na
primeira rodada 64, depois 67 e depois seis Nils. E aí estamos nós. Então 606467
e depois um monte de pregos. Então, como poderíamos fazer isso? Então, quando 606467
e depois fundo, e você pode ver que isso é, isso pode ser uma coisa realmente
útil, pois criamos uma seleção de
notas que queríamos. Agora queremos apenas dar
voltas e voltas
nessa seleção de notas em uma sequência curta. Bem, podemos fazer isso
fazendo desta lista um anel. E há algumas
maneiras de fazer isso. Poderíamos dizer que poderíamos
colocar um anel de ponto depois disso. E o que eu trago é que é basicamente o
mesmo que a lista. Mas quando chega ao fim, quando você pede o
item do
lado direito da lista, ele volta e
traz o primeiro. Então, ele gira
e gira e gira. Então, o que eu estou esperando
ver aqui, 606467 saída três
vezes. E aí estamos nós. Assim, podemos ver que passou pela lista e depois
pelo plano de fundo
e depois pelo plano de fundo novamente. E isso continuará indo
e indo para sempre, e
girando em torno da lista. Então isso é muito útil. Outra maneira de
escrever isso é criar a lista de uma maneira um
pouco diferente. Então, em vez de usar
colchetes, use parênteses e
diga que isso é um anel. Isso é exatamente equivalente
ao código que tínhamos antes, e ele o executará e
será executado exatamente da mesma forma. É apenas uma sintaxe diferente se você quiser uma
maneira diferente de escrever, então você pode usar qualquer uma, que você preferir. Ok, então vamos apenas, apenas para provar um
ponto, vamos apenas, vamos jogar isso em vez
de colocá-lo e então vamos colocar
imagens adormecidas dos
dois entre eles.
E isso nós somos. Então, podemos ver que esse
cérebro simplesmente deu uma volta, cerca de três vezes. Se não fosse um anel,
teríamos acabado com isso. Eu teria tentado
jogar desta lista. Nós não tocamos as
três notas e depois, e depois tivemos seis descansos. Lá podemos ver a receita e a saída do
outlet. Então, fazendo esse
anel usando o formato que tínhamos antes
ou dizendo anel de ponto. Então, na verdade, escalas e
acordes são anéis. Então, analisamos escalas
e acordes antes. Ambos são definidos como anel. Então você pode simplesmente dar voltas
e voltas, escalas
e acordes. E é por isso que fizemos da progressão de acordes na sessão
anterior um toque, porque queríamos contornar essa progressão de acordes duas vezes. Para que pudéssemos fazer da mesma
forma que fizemos aqui. Então, poderíamos dizer o
mesmo que fizemos com a escala. Então, em vez de fazer isso, poderíamos dizer jogar padronizado
ou jogar Pat e cronometrado. Ambas
as coisas funcionam em um anel. E então podemos novamente não, 0,25225 para dizer quanto tempo
escorregar entre cada um. E só para
reforçar isso,
isso é exatamente equivalente
a criar um anel de arte, dessa
forma, apenas com o
teclado ou a frente. Depende realmente de você
qual você prefere.
37. Funções de toque: Ok, então há uma série de coisas que
podemos fazer aulas particulares. Então, vamos
fazer nosso anel um
pouco mais longo para que eu
possa mostrar algumas dessas coisas. Há algumas
funções adicionais que
podemos usar. Então 606264 e depois
vamos 656769717072. E isso deve nos dar isso. Esse sinal sonoro está ficando
um pouco chato. Então, vamos escolher uma mudança na
lista A. Então, vamos usar um piano. Ok, então há várias coisas que podemos fazer com um anel. Há várias funções
incorporadas que podem ser
muito úteis musicalmente. E nós apenas os
adicionamos no ringue. Então podemos dizer tempo padrão de jogo, usar este anel e dizemos usar
este anel, mas ponto reverso. Isso vai tocar
o ringue ao contrário. Podemos embaralhar. Então isso vai tocar
todas as notas dentro do ringue, mas vai
tocá-las em uma ordem aleatória. Mas seria
sempre a mesma ordem porque nós temos pseudo-randomização dentro do Sonic Pi. Novamente, se eu quiser
mudar essa ordem, posso definir a semente de randomização para
ser algo diferente. Só consigo tocar os cinco
primeiros elementos. Então eu posso dizer que basta pegar os primeiros cinco elementos e deste anel e tocá-los. Eu poderia dizer que deixei cair
os primeiros cinco elementos. Quando eu digo largou os
primeiros cinco elementos, isso significa não jogar estes e
apenas jogar, apenas jogar isso. Há outras coisas que
eu poderia usar para esticar. Então isso vai repetir elementos que o alongamento pode ser
o que eu quiser que seja. Então, digamos três desta vez. Se eu quiser repetir
o anel inteiro, posso dizer repetir e dizer, vamos repetir este duas vezes. E mais uma vez, eu posso fazer isso qualquer
número que eu quiser aqui dentro. Eu posso usar o Mirror. Espelho é interessante.
O espelho vai tocar todo o caminho até o ringue, ou no nosso caso é uma escala, mas o anel pode ser qualquer coisa. Não precisa
estar nessa ordem, mas eu fiz uma
escala ascendente apenas para deixar claro
e claro o que está acontecendo. Então, ele vai jogar
todo o caminho através do ringue e depois
vai jogar todo o caminho de volta
ao ringue ao contrário. Agora você notará que ele jogou 60 sessenta dois, sessenta e quatro, sessenta e seis, sessenta e
sete sessenta e nove, setenta e um, setenta e dois. E então ele jogou 72 novamente e setenta um sessenta e
nove, sessenta e sete. Então, se eu não quiser,
o que é bastante comum, eu não quero jogar
este duas vezes. Eu só quero
subir e depois voltar para baixo, mas não jogar isso no meio ou no final depende como você olha duas vezes. Eu posso usar a palavra refletir. Eu posso usar a palavra refletir. Isso só vai
jogar o 72 uma vez. Ok? Portanto, há um grande
número de funções. Esses são os mais comuns. E você pode cavar
pela doca, pelas docas
no fundo aqui para procurar o resto. Mas uma coisa que você pode
fazer é encadear essas coisas
juntas para que eu possa dizer, ok, eu vou, vou colocar
uma ao contrário. Mas então eu quero refletir isso. Então, vou refletir, refletir o anel invertido. Então, está tocando
do final até o , todo o
caminho de volta para cima novamente. E eu quero repetir
isso três vezes. Nós somos. Então, novamente, um anel é incrivelmente útil. estrutura de dados é A estrutura de dados é a estrutura de dados final
que vamos analisar no
Sonic Pi por enquanto, é exatamente o
mesmo que um menos do que podemos acessar as coisas
por meio de índices, etc. analisar no
Sonic Pi por enquanto,
é exatamente o
mesmo que um menos do que
podemos acessar as coisas
por meio de índices, etc.
apenas dá
voltas e voltas e voltas para que nunca possamos
fugir da ponta de um ringue. Daí o nome, muitas funções realmente
úteis para ele. E tenho certeza de que você
pode ver que há muitas aplicações
musicais
para as funções que podemos aplicar dois anéis. Então, essas são funções
que podemos aplicar dois anéis. Na próxima seção,
veremos as funções que podemos
criar para nós mesmos.
38. Funções personalizadas: Então, agora vamos
analisar as funções, que é outra maneira de
organizar nosso código para mantê-lo agradável e legível e
manter partes dele reutilizáveis. Agora, basicamente, uma
função é uma forma de organizar um pedaço de
código e dar um nome a ele, mas que Coburn realmente
executa até que peçamos. Então, vamos nos aprofundar
e ver como fazer isso. Então, vamos ao editor de
código aqui, e estou ficando um pouco
farto desse ruído sonoro. Então, vamos usar um sintetizador. Então, usaremos os lucros em. E começaremos
criando uma função. Então, o que vamos fazer é
criar duas funções, uma chamada verso e
outra chamada refrão. O que alguns
não rotulados devem
fazer é definir avesso e, claro ,
para nossa música, e
então poderemos
chamá-la . Dessa forma. Poderemos
organizar nossa música da
maneira que queremos, sem
ter que repetir o mesmo código
muitas vezes para cada
primeiro, por exemplo. Então, vamos começar
definindo a pessoa. Então, para definir uma função, usamos a palavra-chave defined. Então precisamos dar um nome à
nossa função. Então, no nosso caso, vamos
chamá-lo de verso. Nós terminamos com o fazer. E porque vamos
fazer isso, devemos ter um fim. Então, aqui estamos nós. Agora, qualquer coisa que colocarmos dentro deste bloco não será
executada quando executarmos o código. Quando nós, quando
clicamos no botão Executar até chamarmos esse pedaço de código
específico. Então, vamos manter o inverso, agradável e simples
o código agradável e simples dentro da nossa função. Vamos apenas passar por
um padrão cronometrado. Então, digamos que o padrão de jogo cronometrado. E vamos criar uma lista
dentro de menos de. Vamos gravar. Nosso código será um D4. E isso vai
ser um grande acorde. E isso será seguido
por um, outro acorde. E desta vez vamos
fazer um, um acorde Dó. E isso será um acorde importante. E então, finalmente,
teremos um acorde G. Ok? Vou jogar em cada um desses trimestres ou
é um padrão cronometrado? Então, usamos o tempo padrão de jogo. Então, precisamos dizer
o que Sonic Pi, quanto tempo para dormir entre cada, cada
parte do padrão. Então, vamos
dormir por duas batidas. Se eu executar esse código agora,
nada acontecerá. Tudo isso aconteceu e
podemos examinar e o log aqui é que
definimos a função primeiro, mas
nunca pedimos que ela executasse o
código lá dentro. Então, para executá-lo, ou simplesmente precisamos fazer
é digitar a palavra verso. E isso é dizer a ele,
por favor, execute esta
função chamada verso aqui. E esta é exatamente a mesma maneira que as outras funções
que estão embutidas Sonic Pi definem coisas como jogar em padrão de jogo e padrão de jogo, minúsculo, etc. pedindo
que você peça para executar. Então, agora, quando eu pressiono play ou run, Aqui estamos nós. Então, ele define
o verso aqui. E então, quando eu chamo verso, ele executará o
código dentro do lado. Então eu posso definir outro. Então, vamos definir um chamado chorus end. E lá dentro,
vamos jogar outro padrão, mas
vamos jogar um diferente. Então, o mesmo novamente, mas
usaremos em tribunais diferentes. Então, dentro do nosso núcleo,
teremos um A4, um acorde maior, seguido por um Dó, novamente um maior e depois um acorde Ré maior. E manteremos o mesmo, o mesmo sono entre cada chamada para manter
o mesmo ritmo. Então agora temos um refrão
para que pudéssemos chamá-lo, em vez de chamar verso, poderíamos chamar nosso refrão. Ok, então agora podemos construir uma música simplesmente
chamando nossa função. Então, talvez tenhamos aversão, seguido por outro verso e refrão e depois
um verso final. Um livro bastante simples, mas uma construção de música
comum. O primeiro versus
o segundo verso. Agora refrão. E a final. Agora, para reordenar ou resolver, podemos simplesmente mudar a ordem em que chamamos as funções. E para mudar o curso, talvez pensemos que
A4 é um pouco alto. Então, vamos mudar isso para um A3. E agora, quando eu jogar
, e novamente, nós podemos, podemos reordenar isso para que
possamos cortar isso dele. Talvez verso refrão
e depois dois versus. Agora vamos fazer um refrão. Nosso curso mudou.
Em seguida, termine com para ir em frente e fazer o mesmo e criar um verso e o refrão. E o que você pode
fazer também é criar uma linha média ou um pré-refrão
ou outra função. E use isso para construir uma música curta como
eu fiz aqui.
39. Parâmetros de função: Agora também podemos passar parâmetros para nossas funções e fazemos
isso assim, então em avesso. Então, aqui temos um verso
e repetimos duas vezes. Mas outra maneira de fazer isso
pode ser dizer, ok, Jogue com diverso duas vezes ou
jogue com reverso uma vez. Então eu posso ir ao
verso aqui e dizer, muito parecido com como fizemos
isso com loops e contadores. Podemos apenas dentro dos tubos aqui, podemos apenas dar um
nome de variável para que possamos dizer repetições. E então essa variável será passada para a
função quando a chamarmos, e veremos como fazer isso em um segundo. É muito simples. E então podemos usar essa
variável dentro da função. Então, podemos dizer que repete
ponto vezes du. Então podemos terminar aqui. Então, ele vai repetir
o número de vezes que passamos para essa função. Então, aqui podemos dizer que
jogamos isso primeiro uma vez. E então aqui, em vez de
ter um segundo verso, podemos dizer, ok, agora eu quero que você
toque o primeiro duas vezes, duas vezes. Ótimo. Então, uma última
coisa que podemos fazer é dar um valor padrão. Então, por exemplo, se eu esquecesse de chamar verso
ou passar um para isso, para dizer, basta repetir isso primeiro. Uma vez. O seguinte
vai acontecer, podemos ver que temos o número
errado de argumentos. Os argumentos são o que
temos, o que temos aqui. Então, esses
são, esses são os argumentos que
passamos para a função. Podemos ver aqui que esperávamos que um argumento fosse passado por
qualquer número de repetições, mas na verdade obtivemos 0 porque esquecemos de passar as repetições
numéricas da função. Uma maneira de consertar
isso é colocar esse número de volta. Outra maneira é dizer, bem,
se eu não passar nada, basta jogar uma vez. E podemos fazer isso definindo um parâmetro padrão, e
é muito simples de fazer. Então, podemos dizer onde declaramos o parâmetro aqui
para a função. Podemos apenas dizer igual a um. Bem, isso vai fazer é dizer, se eu não passar nenhum parâmetro, do que apenas atribuir o valor um à variável de repetições. E se eu fizer parcialmente um
valor, então use esse valor. Então, vamos voltar à nossa configuração
original, onde tínhamos dois versos, um refrão e depois um verso. Mas não vamos passar
um parâmetro desta vez, e vamos apenas confiar que esse
parâmetro padrão esteja aqui. Lá vamos nós. Então, obviamente,
poderíamos fazer o mesmo com nosso curso
se quiséssemos. Poderíamos chamá-lo de repetições,
podemos chamá-lo de tempos, podemos chamá-lo do que
quisermos realmente. Novamente, declararemos
um valor padrão aqui. E então, novamente, diremos tempos de parada
repetida, faça. E então precisaremos de
um fim para esse ciclo. Lá vamos nós. Então é assim que
definimos uma função e atribuímos parâmetros
a essa função ou declaramos parâmetros
para essa função, analisamos e como definimos parâmetros
padrão
para o que queremos fazer se não o fizermos
passe um parâmetro ou um valor para um parâmetro
específico. Então você pode ver aqui,
há muitos, muitos usos. Este exemplo muito simples,
onde há muitos, muitos usos para funções do nosso código, tem apenas uma maneira
de organizar nosso código, facilitando a alteração. Não precisamos fazer
a mudança em um só lugar. Por exemplo, se eu quiser
mudar o verso
e em vez de um C, queremos colocar um a,
basta fazer essa mudança. E toda vez que eu chamar
a primeira função, essa mudança será refletida. Então, uma ótima maneira de tornar seu código realmente agradável e legível. Eu posso ver facilmente que esse
é o verso e o refrão. Consigo ver facilmente a
estrutura da minha música. Como eu disse, este é um exemplo
simples de
uso de funções, mas tenho certeza que você pode imaginar
muitas outras maneiras de fazer isso. Então, tente reorganizar
seu código e usar funções para
torná-lo realmente agradável limpo, legível e reutilizável. Então, temos feito
muita programação. Então, na próxima seção, faremos uma pequena
pausa e
voltaremos ao design de som.
40. Efeitos no Sonic Pi: Então, além de ser capaz de usar sintetizados e samples
dentro do Sonic Pi, há também um monte
de efeitos embutidos. E esses são muito parecidos os efeitos que
você aplicaria a uma ou duas faixas e
instrumentos em sua DAW. Ou se você preferir tocar instrumentos
analógicos, talvez usando efeitos de guitarra, pedais, esse tipo de coisa. Mas você pode ver que há bem mais de 40 efeitos diferentes
incorporados ao Sonic Pi. Então, vamos dar uma
olhada em como os usamos. Para demonstrar esses efeitos. Vamos usar
a amostra que
usamos anteriormente que obtive minha área de trabalho. Então, vamos nos lembrar de
como fazer isso. Então, vamos
reproduzir a amostra, que está nos usuários. Steve. Está na minha área de trabalho e
se chama b21 dot. Vamos nos lembrar
de como isso soa. Então, para aplicar efeitos a isso, tudo o que precisamos fazer é
envolvê-lo com blocos FX de largura. Então, vamos ao
início aqui, dizemos com efeitos de sublinhado, e então damos a ele
o nome dos efeitos internos
que queremos usar. Você pode ver todos os efeitos aqui
embaixo. E você pode ver
aqui a mesma lista de efeitos que mostrei antes. Então, só precisamos
dar o nome a ele. Nesse caso,
vamos usar um rio. Então, podemos dizer que com
efeitos códon, reverb, precisamos
acabar com esse bloqueio? E então, quando eu
toco agora que você está aqui, esse é um efeito
de reverberação aplicado a essa amostra. Portanto, não
precisa ser uma amostra. Pode ser um sintetizador,
pode ser um simples comando de avião. Mas esta amostra, particularmente,
porque é uma batida de bateria, mostra os efeitos
particularmente bem, eles são particularmente
fáceis de ouvir. Mas podemos mudar
isso afeta para que esse efeito seja o que
quisermos. Assim, podemos olhar para baixo na lista e
encontrar algo que possamos querer aplicar um
flanger, por exemplo. Então, vamos mudar o
reverb para ser um flanger. Ou podemos mudá-lo para ser um efeito de distorção
para um Sam mais sujo.
41. Opções de FX: Assim como em muitos dos itens
que encontramos dentro do Sonic Pi, há vários
parâmetros que podemos aplicar aos efeitos para
personalizar o sol que obtemos. Então, vamos começar
adicionando um efeito de eco. Isso é como um atraso. Então,
diremos que a largura afeta o eco. Fazer. Vamos acabar com esse bloco. E então, para manter isso simples e
agradável, vamos
usar um lugar simples. Então, vamos tocar uma nota,
um 55 dormirá para dois. Talvez vamos usar uma amostra. Poderíamos usar o sino da vaca. Dormiremos novamente e depois
tocaremos mais uma nota. Então vamos jogar, eu não sei, 67. Então, vamos ouvir
o que isso parece. Ok, então é isso que um eco aplicado a todas essas
notas e amostras. Mas podemos realmente mudar
alguns dos parâmetros. E você descobrirá
que , ao
olharmos aqui, podemos, nesta lista, ver que cada
Efeitos tem seu próprio conjunto de
parâmetros diferentes que você pode aplicar. Então, vamos dar uma olhada
aqui pelo eco. Ok, e podemos ver
aqui que
temos coisas como a fase, a amplitude e
a
mistura do decaimento. Então, se olharmos, olharmos para baixo
nesta lista e
podemos dizer, podemos ver que a fase
define o tempo e os ecos, ou o sinal entre
ecos em batidas. Então, vamos mudar isso. Então, tudo o que precisamos fazer é fazer o mesmo que
todos os outros parâmetros que
estamos passando. Então, pressionamos vírgula, então dizemos, vamos definir a fase igual a, e vamos defini-la para meia batida. Vamos ouvir isso.
E aí estamos nós. Então, uma
repetição muito mais lenta no eco. Lá.
42. Como ligar efeitos: Agora também podemos aninhar efeitos. Então, quando aninharmos efeitos, tudo o que vamos fazer é
muito parecido com laços de aninhamento. Só vamos colocar esse
bloco dentro de outro bloco. Então, vamos adicionar um reverb e
mostrarei como fazer isso para que possamos adicionar outro efeito do
lado de fora disso. Então, vamos adicionar um reverb desta vez. Vou precisar de outra
ponta do lado de fora. Podemos ver que
temos esse bloco de efeitos, que é o eco
que acabamos de criar. E agora nós embrulhamos
isso dentro de um reverb. E você deve
pensar no áudio fluindo de dentro para fora. Então, a primeira coisa
que vai fazer é aplicar o efeito de eco, os efeitos de atraso
o efeito de eco. E então vai aplicar tudo isso ao bloco externo. Então, vai adicionar
uma reverberação ao eco. O eco deve ser aplicado primeiro
e depois a reverberação. Isso é muito parecido com a maneira encadeamos pedais efeitos
ou unidades de efeitos
juntos no áudio. Assim, você pode usar um aninhamento
muito, muito profundo
para alguns sons
realmente loucos ou
inovadores. No entanto, aplicar os
efeitos usa muitos recursos
do sistema
do seu computador. Então, apenas um pequeno aviso se você aplicar muitos fatos, você chegou cedo ou pode notar alguns
problemas de desempenho. Mas para a coluna vertebral. Então, vamos executar isso e
ouviremos agora que temos um eco com um Reverb no topo.
43. Como assumir o controle: Então, de vez em quando,
podemos querer ser capazes controlar uma sentença
já em execução. Para fazer isso,
há uma função embutida no Sonic
Pi chamada controle. Para usar isso, a primeira coisa que
vamos fazer é capturar a saída do enviado
em uma variável local. Então, vamos criar uma
variável chamada my synth. Vamos criar uma variável
chamada miosina. Nisso,
capturaremos a saída de um comando de reprodução,
tocaremos uma nota midi 40, e definiremos o
lançamento para cinco. Essa nota ainda será reproduzida, mas
a saída dela também
será capturada na variável
my synth. Podemos então
dormir um pouco, fazer uma pequena pausa, e então podemos usar
a função de controle para mudar as coisas sobre isso sintetizado para que
possamos dizer meu pecado. Poderíamos então definir um
monte de valores. Nesse caso, vamos
mudar as notas e
vamos dizer, ok,
agora toque um 45, dormirá novamente, controlará o sintetizador novamente. Desta vez, mudaremos
a nota para 47. Então vamos dormir mais. E, finalmente, mudaremos
a nota novamente para 40. Agora, esta é uma função particularmente útil para usar porque, se você se lembrar, definimos pan e amplitude e pontos de corte e coisas assim
antes ou quando definimos isso, dissemos que apenas aplica-se
à função atual. Então, quando eu fizer isso, se eu fosse fazer uma peça 14, definir o
painel para a esquerda, eu precisaria definir
esse padrão para cada nota que eu tocasse. Agora eu posso, eu posso
criar minha loja de sentidos. Ele cria esta versão,
por exemplo, aqui. Eu posso armazenar isso
na saída por centro. Agora eu posso controlar meu sintetizador. Não preciso definir
o lançamento todas as vezes. E você pode imaginar se eu tivesse um envelope complexo e
dissesse muitos valores lá, isso significa que eu só preciso
definir isso na primeira nota,
na primeira vez
que That's int é usado, capturar a saída de
isso em uma variável, e então eu posso apenas
fazer os ajustes que eu acho adequados provavelmente apenas para alterar as
notas, em vez de
ter que definir todos esses
parâmetros todas as vezes. Então, vamos ouvir
isso. Então, a razão pela qual isso é particularmente
útil é que no início de Roma, quando olhamos para
o comando play, falamos sobre libras de
amplitude. Também analisamos os filtros com cortes e
ressonâncias, etc. E dissemos isso, que
esses parâmetros só
se aplicarão ao comando de
reprodução específico que
foi executado. Então, se eu quisesse que tudo se movesse para a esquerda e quisesse usar o comando play,
por exemplo, eu precisaria adicionar um pan menos um a
cada nota tocada. Enquanto agora eu posso definir
isso no original, na primeira nota, capturar a saída
do sintetizador em uma variável, e então eu posso usar
isso por toda parte. Então, eu não quero colocar um envelope em
cada noite. Se eu quiser manter o
envelope igual, a potência e o corte, a
ressonância do filtro, etc. Então, vamos demonstrar
isso um pouco. Vamos usar uma frase. Então o sintetizador usará essa
base e precisamos fazer isso, e então terminaremos
esse bloco de sintetizador. Então agora vai fazer
exatamente o mesmo, mas vai usar esse sintetizador
base. Para que eu possa adicionar meus
parâmetros aqui. Então eu poderia dizer que, por exemplo, eu posso definir os
padrões ou menos um. E o que isso vai fazer é,
em vez de ter que ter alimentado menos um após
cada comando de jogo, agora
eu o defino aqui. Ele é capturado dentro
dessa variável e os parâmetros que
eu apliquei aqui, eu posso controlar
ou aplicar por toda parte. Agora, há uma pequena
restrição para isso. Então, coisas como AMP para
amplitude com o volume, o corte, pan, coisas
assim podem ser alteradas quando
uma sintase é iniciada. Mas você não pode alterar os parâmetros do
envelope ADSR. Portanto, não posso alterar
o lançamento uma vez por, depois que uma sintase começou. Mas eu posso controlar outros itens. Então, como a panela. Eu poderia aqui, eu poderia dizer controlar meu sintetizador e então eu posso
definir a nota de 40. Mas no último, eu posso
deslocar todo o caminho para a direita. Você pode ver novamente, essa é
outra maneira de usar o Sonic Pi para pegar atalhos para impedir
que você tenha que
se repetir o tempo todo e realmente controlar a reprodução da síntese. Então brinque com
as opções lá dentro. E eu acho que você vai
encontrar. Como eu disse, é uma função bastante avançada, mas acho que você
achará muito útil.
44. Como controlar o slide de notas: Outra coisa que
temos quando usamos a função de controle, pois podemos usar uma coisa chamada slide de nota. E isso é como um deslize ou
relatá-los em vigor. Então, podemos adicionar isso quando declaramos as variáveis
originais. Então, vamos adicioná-lo aqui. Portanto, é só uma questão
de adicionar outro parâmetro ou outra opção. Podemos dizer nota
sublinhado slide. E nós definimos um. Então, novamente, tudo no Sonic Pi quando preferimos o tempo,
é o número de batidas. Então, neste caso
, vai levar um slide de batida de
um nó para o outro. Então, vamos ouvir como
isso soa. Necessariamente. Novamente, posso fazer isso
muito longo ou muito mais curto. Podemos ouvir uma ligeira entrada, muito mais rapidamente
entre as notas. Agora.
45. Como controlar efeitos: Além de controlar o sentido, também
posso controlar os efeitos. Então, vamos tentar isso. Então, vamos aplicar um efeito. Então, exatamente como fizemos antes. Vamos aplicar este
é muito bom. Vamos aplicar o efeito de oscilação. Aqui. Precisamos usar os operadores
de tubulação para fornecer um nome de variável. É assim que esse
controle funciona com efeitos ligeiramente diferentes da forma como funciona
com sintetizadores. Então, nós apenas damos uma variável. Realmente não
importa como suas variáveis chamam. Eu só vou chamá-lo de f x. Então eu vou ter um bloco
n também, ou vamos acabar com o
bloco também. Então, lá dentro,
usaremos um sintetizador. Então, diremos que com o sintetizador usaremos os lucros n para esse. Em seguida, vamos adicionar
um pouco de código dentro disso com o bloco de sintetizador. O bloco funciona
exatamente da mesma maneira, realmente é o enorme sintetizador que usamos no comando que
usamos anteriormente. Você me enviou tende a colocar perto do topo do nosso código e ele
usará o mesmo
em todo o sintetizador. Apenas diga, ok, basta usar esse sintetizador entre o do
e o final deste bloco. Portanto, é apenas uma forma de
restringir isso. Então, digamos que aqui
vai jogar um 40 com um lançamento de quatro. Em seguida, dormiremos por quatro e
controlaremos esse efeito. Então, o que vamos fazer, na verdade, vamos jogar isso antes de
começarmos a controlar as coisas. Assim, você pode ouvir o
efeito de oscilação como é por padrão, começará a
controlar o que afeta o mesmo nome de método. Então, diremos controle. Desta vez, precisamos
passar essa variável aqui. Então, essa variável que
declaramos no topo. Então, ele sabe de quais efeitos ou efeitos
estamos falando. Desta vez, vamos definir
o mix para não querer. Então, essa é a
quantidade de sinal úmido que será emitido. Controlará os efeitos
sobre eles, reproduzirá novamente. Tocaremos uma nota
diferente com, novamente com um lançamento de quatro. Assim, você poderá
ouvir a mudança
na mistura dos efeitos quanto do efeito é emitido entre a primeira
e a segunda nota. Assim, você pode ouvir que muito
mais do sinal seco foi transmitido na segunda
nota que foi tocada. Também temos algumas opções
para efeitos deslizantes. Então, vamos
apenas remover isso. Nesse caso,
podemos definir alguns
dos parâmetros encontrados
dentro do efeito de oscilação. Então, novamente,
no painel Ajuda aqui,
temos uma lista de toda a
lista de todos os efeitos. Quando clicamos nele, podemos ver todos os parâmetros
que podemos definir. Então, vamos definir alguns
parâmetros. Então, vamos definir a fase,
o rosto para um. Também poderíamos definir uma coisa
chamada “Face slide”. E vamos definir isso para seis. Então, aqui dentro,
então, vamos, vamos tocar nosso sintetizador só
vai fazer isso durar
um pouco mais para que possamos ouvir todo
o rosto deslizar. Vamos ouvir isso. Agora. Então podemos controlar
isso. Então, podemos dizer controlar o efeito
enquanto ele está sendo reproduzido. E podemos definir o rosto para algo
muito, muito mais curto. Ok, então como eu disse, os efeitos são
um pouco diferentes. Precisamos dar a ele
um nome de variável entre os tubos quando
declaramos o efeito. Mas você pode realmente ouvir
o último exemplo de que o efeito está sendo controlado
à medida que está acontecendo. Então, tocamos apenas uma nota, mas o efeito, porque
definimos o lançamento para
ser muito tempo, o efeito está sendo
alterado à medida que a nota é tocada.
46. Loops ao vivo: Ok, então é hora de falar
sobre performance ao vivo. Portanto, há um
co-construído em particular que está
embutido no Sonic Pi, o que realmente permite apresentações
ao vivo. Vamos considerar um loop que podemos ter
usado no passado. Então, digamos que vença e depois termine. Então, lá dentro,
faremos algo simples. Então, vamos jogar 60
animais dormindo por um. Vamos, vamos jogar isso. Agora isso vai
continuar para sempre. Mas o que acontece se
eu mudar essa nota? Vamos mudar isso para um 80. Só estou lembrando. Você pode ver que os loops
continuaram a tocar e apenas outro loop é adicionado
no topo, no topo e no topo. Agora, isso não é ideal
para apresentações ao vivo, é o que
realmente queremos fazer quando estamos nos apresentando ao vivo. E o Sonic Pi deve ser
capaz de fazer alterações nosso código e ter essas
mudanças refletidas ao vivo. Portanto, não separe loops tocando um
em cima do outro, mas na verdade mude a
corrida sem loop enquanto ela está sendo executada. Então, a maneira como fazemos isso é
através do uso do lively. Então, vamos fazer isso. Então, tudo o que fazemos são
construções muito semelhantes no loop, mas usamos a palavra loop de
sublinhado ao vivo. Que tal fazermos isso?
Precisamos dar um nome a isso. Então, vamos chamar isso de foo. Então, ficará mais claro mais tarde por que precisamos
dar um nome a eles. Mas agora, quando eu executo isso, estou fazendo exatamente o que você espera
, jogando
60 monges em vez disso. Se eu mudar para 60, ouça o que acontece.
Se eu mudar para 70. Tão habilmente, Sonic
Pi é capaz de detectar a mudança e fazer
essa mudança ao vivo
como, enquanto meu programa está sendo executado. Agora que isso aconteceu, isso abre enormes possibilidades para apresentações ao vivo. E você notará
que foi muito inteligente não ter feito a
mudança imediatamente. Ele esperou até
os pontos certos. Então, se eu mudar isso
para dormir por 234234. Agora, se eu for fazer essa
alteração e mudar para 55, e eu fizer isso imediatamente
após uma nota. Você notará que ele espera e continua
a dormir e não reinicia o loop até o momento certo para ver
se consigo acertar. Portanto, sempre manteremos esse temporizador interno
em execução e
continuaremos o loop e não faremos essa alteração até a
próxima vez que eles forem executados, em vez de executar
novamente imediatamente. Então, isso nos dá
uma grande possibilidade. Então, poderíamos, por exemplo, definir isso para
algo um pouco mais acessível, a menos que isso
volte a um período mais curto. Para que pudéssemos,
poderíamos fazer todos os tipos de
heróis reproduzindo ao vivo. Então, podemos dizer que a areia pode mudar
isso para três ou três. E podemos falar o máximo de
código aqui que quisermos nos
informar e ele não será executado até que eu pressione o Comando R ou pressione
o botão Executar novamente. Nos atrasando. Sinto muito. Desculpa. Os fatos. Só riba. Mude as notas. As notas. Então você pode ver o que
aconteceu aqui é que eu não adicionei outra nota, mas eu não tenho dormido. Portanto, ele está tocando efetivamente as duas notas ao
mesmo tempo. Outro sintetizador. E lá vamos nós. Você pode ver como podemos
fazer alterações em nosso código
o quanto quisermos. E então, quando pressionamos Command ou Control R
ou apertamos o
botão Executar, na próxima vez
que esse loop for executado, as alterações
serão tornadas vivas. Então, novamente, uma maneira fantástica ser
capaz de
se apresentar ao vivo. Comece com uma base de código inicial, nossa parte inicial do código, e então vá e faça
suas mudanças para realmente adicionar um
elemento de desempenho a ela. Assim, podemos ter vários loops ao vivo em
execução ao mesmo tempo. Então lembre-se antes, se
tivéssemos algo assim, se tivéssemos um loop do
escondido aqui, nós ,
vamos, vamos, vamos
tocar uma nota e depois terminar. Então podemos ter outro loop, que pode tocar um sino de vaca. Então, o que vai acontecer
aqui? Esperando cada um, mas dormindo. O mesmo aqui. Agora, é claro, o segundo
loop nunca foi realmente colocado. Nunca
ouvimos o sino da vaca. E isso é porque
esse loop está
girando e girando para sempre. Portanto,
a sequência do fluxo do programa nunca
chega ao segundo loop. Animado. Isso é
um pouco diferente. Então, se eu mudar isso
para um loop ao vivo, e pudermos, novamente,
precisamos chamá-lo de nome. Então, vamos chamar isso de foo, e mudar este para um loop
ao vivo e chamar este. Bar. Agora veremos que os dois loops são
reproduzidos ao mesmo tempo. Então, vamos nos certificar de que
podemos ouvir os sons. Vamos mudar o
sono aqui dentro. Vai haver um ritmo um pouco
estranho, mas isso significa que
podemos ouvir os dois sons
tocando ao mesmo tempo. Então, isso significa que podemos ter vários loops executados ao
mesmo tempo. E você pode ver
que isso seria muito útil para apresentações ao vivo. Então, onde queremos
ter um, talvez um, um padrão de bateria, toque uma melodia, talvez alguns acordes ou linha de base. E podemos ter todos aqueles
jogando de forma independente
dentro de seus próprios loops. Ao mesmo tempo. Ele mantém o código limpo e limpo,
muito fácil e legível. E somos capazes de mudar isso em tempo
real à medida que estamos atuando.
47. Desempenho ao vivo com loops ao vivo: Ok, Então, mais cedo, escrevemos um sequenciador que se parece
um pouco com isso. Vamos nos lembrar
de como isso soa. Isso é ótimo, mas nunca sou tão útil para apresentações ao vivo. Então, como podemos pegar esse código e convertê-lo em
algo que pode ser um pouco mais útil
e,
em seguida, talvez adicionar uma linha de base ou algo assim. Então, vamos dar uma
olhada no que poderíamos fazer. Então, obviamente, precisamos começar com um núcleo por mil
animado. Este Trump"s. Então, tudo mudou. Precisamos fazer isso agora para que eu possa
entrar aqui e executar isso. Eu posso mudar o padrão ao vivo. Então, vamos adicionar três chutes
no final. Nós podemos ouvi-los. Como parte do nosso desempenho, mudamos a propina. Então, vamos adicionar outro loop ao vivo. Desta vez, vou adicionar uma linha de base. Então, vamos criar um loop ao vivo. Precisamos dar um nome a ele? Então, vamos chamar isso de base
da biblioteca. Vamos lembrar c, n the loop. E dentro desse loop
, usaremos um sintetizador. Então, vamos usar, você vai usar a superstore. E então o que
faremos é ter
um loop aqui que
parece 16 vezes. E terminaremos o ciclo. E então, dentro desse loop, tocaremos uma nota
da escala pentatônica
menor, pentatônica menor. Então, vamos tocar a partir de uma escala
baseada na nota midi 40. Vamos jogar uma escala
pentatônica menor. E vamos apenas escolher uma
nota dessa escala. Alguns outros parâmetros só para fazer
parecer um pouco melhor. Então, vamos definir o
lançamento como 0.3. E diremos que só
toque se um em dois, então com uma probabilidade de um e tocar uma das notas. Então, basta escolher uma nota aleatoriamente da escala pentatônica menor. Mas depois precisamos dormir
porque estamos em um loop. Então, dormiremos por
0,25 ou um quarto de repetição. E aqui vamos nós. Então, vamos apenas executar isso e
ouvir o que parece. Isso soa bem porque estamos tocando no mesmo tipo de
ritmo e na pia, porque ambos começaram
a tocar juntos. No entanto, uma das coisas que você pode
querer fazer em performance ao vivo
é adicionar um novo lipídio, ou muito comumente os loops
ao vivo que você pode construir de antemão e depois comentar
e depois descomente. Mas vamos fingir que eu poderia simplesmente cortar isso na minha prancheta por enquanto e
vamos começar esta rodando. Então, vamos fingir que
digitei isso de volta agora e vou
apertar o botão Executar. Não parece tão
bom desta vez. Não está em sincronia com
o, com os trunfos. O baixo soa fora do
tempo com a bateria. Agora, essa é uma maneira
muito, muito simples de consertar isso, e está embutida no Sonic Pi. E tudo o que precisamos fazer é dentro, dentro de nossas bibliotecas. E é por isso que damos
nossos loops e nomes ao vivo. Nós apenas dizemos simplesmente doentio
com a bateria. Doente isso com a bateria. Então, agora, quando eu introduzi
esse loop ao vivo, se eu apenas cortá-lo na
área de transferência novamente, cole-o. Quando eu pressiono o botão Executar, ele vai esperar
até o ponto certo na biblioteca para
iniciar a linha de base. Portanto, sempre permanece
sincronizado em questão de
quando eu pressiono Executar. Então agora eu sou como se a
performance estivesse em andamento. Poderíamos escolher
mudar algumas coisas. Então, talvez você queira
mudar uma linha de base. Então, uma maneira fácil de
fazer isso pode ser mudar a
semente aleatória que estamos usando. Então, digamos que você use um
seed press aleatório de sublinhado Run. Talvez queiramos mudar o
inestimável que estamos usando. Agora estamos recebendo menos
notas e a linha de base. Você pode remover
este a1 completamente. Então agora vamos tocar todas as notas. Podemos introduzir uma chaleira
diferente, caixa
diferente. Lá vamos nós. E podemos
continuar fazendo mudanças à medida que a música está tocando o contorno. Assim, você pode realmente ver como
você pode usar loops ao vivo e afundar entre
loops ao vivo para garantir que tudo permaneça no
tempo um com o outro. E apenas seja capaz de alterar
seu código como quiser, conforme o desempenho está acontecendo.
48. MIDI em: Ok, então, além de usar o
código para reproduzir música, também
podemos receber entradas
de um controlador midi. Portanto, precisamos configurar algumas coisas dentro de suas preferências
para permitir isso. Então, se formos para a janela
Preferências aqui, se formos para I0, podemos ver aqui que
temos isso ativado. Portanto, menos menos as suas
podem ser desativadas aqui. Então, precisamos ter
certeza de que habilitamos a
entrada porque você pode ver que eu tenho meu teclado
midi habilitado aqui. Então, vamos fechar isso.
E veremos isso. Essa é outra
instância em que
o painel cues pode ser
particularmente útil. Então, por exemplo, se eu pressionar
uma nota no meu teclado agora, você verá que logado aqui é o nome do controlador. E está nos dizendo que
meu arco e flecha ou chave passo 37, que é o nome do
meu controlador midi. Houve uma nota desligada,
uma nota sobre o evento, seguida por uma nota fora dos eventos. E o que isso está nos dizendo é que as notas eram uma nota 60, que é um assento do meio. Esta segunda parte desta
lista aqui está dizendo 100s. Essa é a velocidade com a
qual pressiono essa nota, se eu pressioná-la novamente,
obterei uma velocidade diferente. Então, aqui estamos nós. Isso foi um 112. Uma nota diferente
me dará um número diferente. Então esta era uma nota 67, que era um G, e eu acertei
isso com uma velocidade de 115. Assim, podemos usar essas
informações que
vêm do nosso teclado
midi para tocar alguma música usando talvez um sintetizador ou um som que criamos dentro do Sonic Pi, mas ser capaz de
reproduzi-lo no nosso teclado. Então é assim que fazemos
isso. Então, antes de tudo, vamos criar um trabalho animado. Basta chamar esse exemplo de midi. Tudo bem. Vamos acabar com isso. Então, aqui, eu preciso
fazer algumas coisas. Então eu preciso
criar duas variáveis para que
possamos separar essas variáveis. Então, essas são as maiores velocidades e é isso
que vamos obter dessa lista que
vemos na fila aqui. Então esse é o
número da nota e a velocidade. Vamos dizer
que sincronizamos isso com um. Agora precisamos dar a ele o nome do evento que está acontecendo. Então, no nosso caso, entre aspas, vamos dizer exatamente como está escrito no painel
da fila. E aqui estamos nós. Então, ele vai buscá-lo no painel de
filas para nós. Mas vamos
dizer meio dia, cólon passo chave 31371 da shari'a. E esta é a nota na caneta. Então, queremos dizer que,
quando tivermos uma nota, eu quero usar um sintetizador. Eu vou usar o piano. Piano. E vou
passar a nota que veio
do teclado midi. E vou passar isso para o parâmetro note
ou para a opção no. Vou definir
a amplitude para ser
qualquer que seja a velocidade dividida por 127. A razão para isso é
porque a amplitude que vem de Midea é
um valor entre 0,127. Mas o parâmetro amplitude ou a opção de amplitude dentro do Sonic Pi é definido como um valor
entre geralmente entre 01. Então, vamos pegar isso,
pegar
a velocidade que vem dividida por 127 e isso
nos dará uma
amplitude adequada para o local Pi. Então, vamos executar isso. E agora, pressionando
notas no meu teclado, consigo tocar o sintetizador de piano de dentro do Sonic Pi. E novamente, se eu tivesse
adicionado filtros, envelopes, e ele tipo
de parâmetros ADSR, etc Eles serão refletidos como eu, enquanto eu toco meu teclado midi. No entanto, se você tem um teclado
midi conectado e acabou de
usar este exemplo, obviamente substituindo esta parte
aqui por qualquer que seja o seu, seu teclado é chamado a
partir do painel de dicas. Você notará que há
uma grande latência. Agora, essa latência
realmente existe propósito e podemos removê-la, mas a latência existe. Posso garantir que quando
você pressiona este botão, há exatamente 2,5
entre pressionar uma tecla. E você pode realmente ver que, se você olhar no painel de acusados, há um atraso de 2,5 entre
quando você pressiona uma tecla. E quando eles
realmente soam. Agora, essa latência está embutida no Sonic
Pi de propósito. E isso realmente ajuda com o
tempo porque os computadores, dependendo do que mais está
acontecendo no computador, os computadores podem executar velocidades
muito variadas. Então, para poder
fazer com que as coisas afundem e funcionem em um ritmo constante queremos em uma peça
de música normalmente, dependendo do que
está acontecendo no computador, esse 2.5º atraso
é introduzido em propósito de ser
capaz de combater isso. Portanto, é muito simples
remover essa latência se
quisermos jogar em tempo real. E fazemos isso com apenas
um simples comando. Então, dizemos apenas usar
sublinhado em tempo real. Agora, quando pressiono Executar, soou
imediatamente
o aviso de que eu pressionei a tecla relevante no teclado do meu controlador
midi. Então, está tudo bem. E você pode dizer, Bem
Steve, isso é ótimo, mas eu já posso
tocar um sintetizador. Eu tenho o que
pode ser porta, eu tenho um sintetizador autônomo
que eu posso usar. Mas, na verdade, agora
podemos aplicar parte
da programação que
aprendemos ao nosso sintetizador, à medida que obtém
alguns resultados interessantes. Para que pudéssemos dizer
algo assim. Então, em vez de usar este sintetizador, poderíamos dizer, ok, bem, quando eu pressiono uma nota
no meu teclado, talvez
apenas notebook,
mas com licença, algo ao acaso de uma escala que é definida por
a nota que foi passada. E então apenas me toque
algo aleatório
na escala pentatônica maior. Dependendo da nota
que eu escolhi. Em qualquer lugar dentro de três oitavas. E defina o, como fizemos antes. Vamos definir a amplitude para a, para ser a velocidade
que é passada. Então, com que força ou rapidez atingimos o teclado dividido por 127. Não se preocupe, se você perder
a amplitude. Você apenas tocará
na amplitude padrão de um, não importa o quanto
você aperte a tecla. Então funcionou perfeitamente bem. Sem isso, você perderá a sensibilidade à velocidade
do seu teclado. Então o que vai acontecer agora é que tudo o que eu tocar
uma nota vai escolher uma nota na escala pentatônica
maior, em
algum lugar em três
oitavas para as notas que eu pressionei. Então, vou pressionar
um C ou S3 médio. E assim, quando clico em Executar aqui, toda vez que pressiono esta nota, ela vai me tocar uma nota da escala pentatônica maior. Você pode ver que a
fila está aqui no, no, no painel de dicas. Acabei de pressionar o
meio C 60 por toda parte. Mas ele emite uma nota diferente. Em algum lugar dentro da escala pentatônica
maior, dentro de três
oitavas da nota que eu toquei. Agora, é um bom exemplo
para mostrar
que talvez possamos conseguir
algumas coisas úteis com código. Mas vamos dar uma
olhada em talvez um exemplo
cada vez mais útil. Vamos apenas remover isso. Jogue de novo. Desta vez, usaremos um sintetizador, então usaremos os fluxos. Bem, vamos manter esse código. Esse código é perfeitamente bom. Isso é apenas dizer, ok, isso é apenas criar
um loop ao vivo, é dizer para usar o tempo real
e capturar as notas e a velocidade da nota
no evento do nosso teclado. Mas desta vez
faremos algo um pouco mais interessante. Então, digamos que toda
vez que eu pressiono uma nota, eu queira tocar um padrão cronometrado. Então, em vez de apenas
tocar uma nota tocará uma série de notas. Então, vamos pegar novamente a
escala da nota. Das notas que nós, que recebemos
do teclado. E usaremos o
pentatônico menor novamente. Mas desta vez
vamos refletir isso. Então, vamos jogar toda a
escala para cima e para baixo. E porque usamos no padrão de
jogo cronometrado, precisamos dizer
quanto tempo queremos fazer uma pausa entre, entre notas. Então, vamos definir isso
para ser muito curto. E então
definiremos novamente a amplitude para ser a velocidade dividida por
cento e vinte e sete. Vinte e sete. Então, deixe-me passar
um pouco sobre isso para que possamos
ver toda a linha. Então, enquanto eu toco uma nota
no meu teclado midi, ela vai tocar a escala pentatônica
menor, com base na nota
que eu pressionei. E vai tocar muito rápido todo o caminho para cima e depois para baixo
novamente na
velocidade que eu passar. Então, vamos ouvir como isso soa. Assim, você pode ver que estou
apenas pressionando o OneNote. Jogamos em toda aquela escala
pentatônica todo o caminho para cima e para baixo novamente. E é claro que posso adicionar
outro objeto a isso para poder
dizer oitavas. Muito bom. Então você
pode ver que podemos realmente escrever
algum código que é acionado quando
pressionamos uma nota em nosso teclado midi para fazer uma série de coisas
diferentes. E as pessoas usaram isso um efeito
realmente grande,
acompanhado por performances, particularmente com diferentes
tipos de controladores midi, para poder acionar diferentes funções com base
na nota que é tocada. em. Então, se você tem um controlador
midi, seja um teclado
ou um PAD, brincar
é muito fácil de
configurar , como vimos dentro do Sonic Pi. E, novamente, há
mais ajuda disponível no painel Ajuda sobre
como configurar isso. Mas é realmente
muito simples de fazer. E é um dispositivo de
performance ao vivo
muito, muito poderoso. Portanto, não só tem
a capacidade de
alterar o código ao vivo dentro dos
Live loops à medida que você executa. Mas você também pode usar um controlador
midi para adicionar algumas dinâmicas diferentes
à sua apresentação ao vivo.
49. MIDI fora: Ok, então isso cobre como
entramos no Sonic Pi. Mas Sonic Pi
também pode emitir lama. Assim, podemos controlar
outros dispositivos midi ou enviar midi para nossa
DAW a partir do nosso código. Então, para demonstrar isso,
vou usar um sintetizador sintetizado como um fantástico sintetizador
gratuito chamado vital. É um sintetizador que eu
uso no meu
guia completo para iniciantes em síntese e curso de design de
som. Então, se você quiser aprender
mais sobre vital,
por favor, dê uma
olhada nesse curso. Vou apenas carregar
uma predefinição que
criei outro dia chamada
Skynet quiet. Então isso é o
que parece. Ok, então isso é sintetizado em execução e eu posso tocar
com meu teclado midi, mas também posso
tocá-lo usando código. Então eu posso ver que
nas preferências que eu tenho uma saída conectada, que é o meu arco e flecha
um passo fundamental 37. Agora, isso não é algo
que eu possa descobrir. Isso é algo que o
Sonic Pi conseguiu
captar ao abrir
com base
nos dispositivos que eu havia
conectado ao meu computador. Para que eu possa definir meu canal de saída
midi padrão. Eu apenas deixo esse conjunto
para todos e podemos controlar qual canal
podemos usar codificar. E isso pode ser útil
se você estiver usando algo como contato,
onde você pode ter vários instrumentos
rodando ao mesmo tempo e enviar comandos
diferentes para diferentes
canais Midi para poder controlar diferentes
instrumentos de contato, por exemplo. Mas vamos manter isso simples e
agradável. Nós usamos vital. Então, vamos
escrever um pouco de código. Então, tudo o que precisamos fazer é
usar o comando midi, midi note on para iniciar a reprodução da nota
midi ou enviar uma nota midi no comando
para o dispositivo de saída midi, nosso teclado neste caso. E então vá dizer,
ok, agora muito sutil. Então, vamos executar um pouco de código para que
possamos dizer nota midi. Lá vamos nós. Então, podemos dizer emitindo luz acesa. Vamos jogar um E três. Na verdade, não
importa se use uma letra minúscula ou uma
maiúscula aqui. Mas estou apenas usando
aplicativos para mantê-los consistentes por toda parte. Podemos dizer, então
estamos jogando E3 e vamos jogar a uma
velocidade de 50. E enviaremos isso para
o midi channel one. Em seguida, vamos
dormir por quatro batidas. E então enviaremos
o
comando midi note off , midi note off. E, novamente, precisaremos dizer
qual nota desligar. Então, vamos desligar
a E3 que acabamos de enviar. E mais uma vez, esse
será um comando que enviaremos no canal número um. Vamos, vamos executar isso. E você pode ouvir isso
saindo do sintetizador. Agora, se eu executar isso de novo, você pode ver na verdade a parte inferior do centro
que comprei meu vital. Você pode ver no teclado que a nota
midi realmente foi enviada. Então, ele foi enviado pelo
meu controlador midi. E os backups são vitais. Como eu disse, com diferentes instrumentos
virtuais, você certamente poderia e eu controlei o contato diretamente de dentro do Sonic Pi com base nos
canais midi que eu envio. No entanto, acabei de
escolher, escolhi usar vital neste
caso porque é um sintetizador fantástico e gratuito para que todos possam acompanhar. Então, vamos adicionar outra
nota também. Então, vamos enviar uma nota midi. Em. Desta vez,
vamos enviar um A4. E, novamente, usaremos
uma velocidade de 50 e enviaremos no canal um. Vou dormir por. E então, de repente,
realmente saberemos. E vamos dizer
para desligar não, a4 no canal um. E vamos apertar Play e depois, ou rum e, em seguida,
passar para vital. Lá vamos nós. Portanto, um exemplo
bastante simples, mas demonstra
como você pode enviar midi do Sonic Pi para qualquer instrumento
ou instrumento virtual ao qual
você deseja se conectar. E é certamente um
ótimo uso para isso pode ser o controle e um sintetizador analógico
externo. Então você pode
querer conectar isso a algum tipo de
sintetizador externo que você tirou do seu
computador através de um cabo midi e, em seguida,
enviar comandos
midi do Sonic Pi para
controlar o que quer que seja. Desde então, você pode ter.
50. Áudio ao vivo: Ok, e há
mais uma maneira de
aprimorarmos nossas
apresentações ao vivo com Sonic Pi, e isso é através
do uso de áudio. Assim, podemos
pegar o áudio de um microfone ou de um
instrumento externo, como uma guitarra, e
acessá-lo através do Sonic Pi. E podemos aplicar
vários efeitos e escrever código em torno
da entrada que obtemos. Para configurar isso, você precisa ir
para Preferências. Vá para a seção de áudio, verifique se você
ativou as entradas de áudio aqui. Então, neste painel abaixo
aqui, se estiver desativado,
basta clicar nele para
ativar as entradas de áudio. Assim, o Sonic Pi pode receber entrada de
áudio
de vários lugares diferentes. Portanto, ele pode tirá-lo do microfone do seu
computador por padrão. Ele pode ser obtido de uma placa de som
externa ou de uma interface de áudio. E se, como eu, você
tem uma interface de áudio com vários canais, Sonic Pi
levará a entrada de áudio
do primeiro canal sua interface de áudio para o primeiro canal na interface
de áudio que eu tenho, eu conectei minha guitarra para tocar isso através do Sonic Pi, eu simplesmente preciso usar os comandos de áudio
ao vivo. Então, posso apenas dizer
áudio sublinhado
ao vivo e preciso dar
esse nome e áudio ao vivo. Então, vou
chamá-lo de violão. E agora, com esse comando,
quando eu pressiono Executar, agora
você deve ser
capaz de ouvir a guitarra passando,
através do Sonic Pi. Então estamos, podemos ver no escopo e
no canto superior direito aqui, podemos ver a
análise do espectro da entrada de áudio. Então, vamos pressionar parar por
aí por enquanto. E como eu disse, isso não precisa ser guitarra,
pode ser uma base, pode ser um teclado, pode
ser um microfone, etc. O interessante é que
nos permite adicionar efeitos, por exemplo. Então, podemos simplesmente embrulhar isso
com um loop de efeitos. Então, digamos que com efeitos de
sublinhado, vamos adicionar um reverb. Então agora quando eu, quando eu executar isso, eu deveria ter o
som da minha guitarra como eu fazia antes, mas com algum reverb, eu posso adicionar um pouco de
distorção pressionar Run. E é claro que posso seguir esses
efeitos como antes, mas como eu disse antes, apenas tenha cuidado com isso. Se você começar a adicionar
muitos efeitos, descobrirá que
começa a sofrer com um pouco de desempenho,
com alguns problemas de desempenho. Então, mas podemos adicionar um reverb, por exemplo, do lado de
fora daqui, e precisamos de outro loop final. Vamos formatar isso e executá-lo. E agora eu deveria ter uma guitarra
distorcida com reversão. Ok, vamos ver algo
realmente interessante pela possibilidade de desempenho. Passe o mouse para esse buffer em vez de digitar tudo isso. Eu salvei isso em um buffer diferente e vou
falar com você através do código. Então, no topo,
tenho exatamente o mesmo que tínhamos
na última seção. Então, apenas o áudio ao vivo vindo da guitarra através da minha interface de
áudio e apenas aplicando alguma distorção
e alguma reverberação que possamos então definir o BPM para 96. Só para esse
exemplo. Em seguida, temos um loop ao vivo que está tocando uma sequência de bateria uma maneira muito semelhante ao que vimos antes nas seções
anteriores. Então, basta usar esse padrão de
bateria aqui que descrevemos
nessas cordas para tocar
nossas três amostras de bateria. Em seguida, temos um loop, outro loop ao vivo acontecendo, que é apenas
tocar uma parte do baixo. Então isso está usando uma base
cínica, e é apenas um loop
16 vezes e escolhendo uma nota da escala
pentatônica menor
ou da escala pentatônica Mi menor, escolhendo uma linha aleatória
para isso e é tocando uma nota
a cada meia batida. E então temos
outra biblioteca, que é chamada de chaves. E isso está usando
o sintetizador de piano. E novamente, está escolhendo
a partir da escala pentatônica Mi menor, mas três oitavas acima desta mãe de um ou dois
autores, e está tocando uma
nota a cada quarto de batida e isso vai
loop redondo de 16 notas. Além disso, como
temos o áudio ao vivo, posso reproduzir a entrada através da
minha interface de áudio. No topo do som está sendo
produzido com Sonic Pi. E eu posso
gravar isso em
um arquivo de áudio com Sonic Pi reproduzindo meu
código em segundo plano. E então com os lipídios estão no topo pressionando o botão
Gravar aqui. E, em seguida, pressionar Executar. E então pare a gravação. E me dura onde eu
quero salvar esse arquivo também. Para que eu possa salvar isso na minha
área de trabalho, por exemplo, áudio. Clique em salvar. E então
, na minha área de trabalho, o arquivo foi
gerado como um arquivo WAV. E eu posso ouvir isso
através do reprodutor de áudio do Mac.
51. Resumo: Ok, então é isso
para este curso. Vimos algumas das fantásticas possibilidades serem
abertas quando você usa o Sonic Pi para escrever
código para criar música. Mas existem cerca de 250 comandos separados
diferentes no Sonic Pi me, nós apenas
arranhamos a superfície. Então olhe na
seção pulmonar do painel
de saúde e realmente dê
uma olhada lá. Todos os comandos têm uma documentação
muito boa. Nessa nota. Eu gostaria de encorajá-lo a
olhar nos painéis de exemplos. Então, se você olhar
no painel de saúde, veja exemplos
e você verá alguns exemplos realmente excelentes que foram fornecidos
com o Sonic Pi. Eu certamente
encorajaria você a dar uma
olhada em alguns deles e vasculhar esse código e realmente
lê-lo e entendê-lo. Eu posso recomendar um bom. Um bom lugar para começar pode ser
algo como Tilburg dois, que é um dos
exemplos lá. Basta clicar
no exemplo no painel de saúde e, em seguida,
copiar e colar o código em um
dos buffers na janela de código dentro,
dentro do Sonic Pi, você
pode reproduzi-lo e fazer muda e
realmente experimenta. Lembre-se, não há erros. Você não pode quebrar nada, experimentando dentro do Sonic Pi. E quem sabe alguns desses
experimentos podem se
transformar em sua próxima
grande ideia musical, sua próxima grande produção musical. Portanto, é uma ótima maneira
de experimentar e
descobrir novas músicas. Só não se esqueça de salvar
seu trabalho regularmente. Como eu disse, Sonic Pi, vamos armazená-lo dentro do
buffer quando você recarregá-lo. Mas, mas só para ter certeza, eu sempre gosto de quando estou realmente particularmente
feliz com alguma coisa, pegar uma cópia separada e salvar
em formas de arquivo separado. E sempre há
o botão de desfazer. Se você fizer isso, se você fizer experiências e seguir
o caminho que não gosta
particularmente, então você sempre pode
desfazer sua saída ou reverter para um
estado seguro anterior. Mas é isso mesmo. Então divirta-se e eu realmente encorajo você
a tentar algumas apresentações ao vivo, mesmo que seja apenas você mesmo em
seu quarto fazendo um registro, talvez na frente de algumas
famílias e amigos, ou quando você
realmente bom nisso, vá em frente, encene, vá e
mostre o que você tem. Dê uma olhada em algo rave. Então, apenas alguns
algoritmos do Google o
enviarão para o
site do algoritmo e você poderá ver onde algumas outras pessoas que talvez estejam na sua área ou fazendo algumas apresentações
ao vivo. Só precisa de um pouco de prática. É o mesmo que
qualquer outro instrumento. E então eu realmente
encorajo você a gastar seu tempo todos
os dias da mesma forma que você faria se estivesse aprendendo
violão ou piano, harpa, ou qualquer
outro instrumento, apenas gaste seu tempo, um pouco de tempo todos os
dias praticando Sonic Pi, praticando uma performance ao vivo, experimentando diferentes partes de código e diferentes experimentos, esse pouco de prática a
cada dia que vamos
te dar proficiente em
pouco tempo. Tenho certeza. Seja mais curto para compartilhar seu código e sua música
com o resto do mundo, seja por meio da comunidade
no site do Sonic Pi ou de qualquer outra forma que você se sinta à vontade, você se sente confortável para fazê-lo. Adoro ouvir de você novamente,
então, por favor, compartilhe
seu código comigo. Compartilhe neste site. Se você quiser aprender
mais sobre alguns
dos outros cursos e as outras
coisas que estou fazendo. Então, por favor,
vá até Steve ao vivo com music.com
e você descobrirá tudo o que precisa saber que foi fantástico ter você. Muito obrigado por assistir e eu vou te
ver novamente em breve.