Fazendo música com código: composição e desempenho ao vivo com Sonic Pi | Steve Lydford | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Fazendo música com código: composição e desempenho ao vivo com Sonic Pi

teacher avatar Steve Lydford, Music, Sound Design and Productivity

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Visão geral do curso

      1:56

    • 2.

      Apresentação

      1:06

    • 3.

      Como obter Sonic Pi

      1:11

    • 4.

      Conhecer a interface de usuário Sonic Pi

      8:48

    • 5.

      Vamos fazer algum ruído!

      5:07

    • 6.

      Usando nomes de notas MIDI

      2:54

    • 7.

      Comentários de código

      2:49

    • 8.

      Usando o log

      0:44

    • 9.

      Opções de reprodução

      6:14

    • 10.

      Definir o ritmo

      1:49

    • 11.

      Sintetização

      2:52

    • 12.

      Aplicar filtros de sintetizador

      4:40

    • 13.

      Envelopes

      8:47

    • 14.

      Reproduzir amostras

      12:11

    • 15.

      Fluxo do programa

      2:01

    • 16.

      Loops

      6:12

    • 17.

      Loops aninhados

      3:59

    • 18.

      Para o infinito, mas não além!

      1:58

    • 19.

      Melhorar a sua batida

      0:50

    • 20.

      Randomização

      4:23

    • 21.

      Gerando melodias com aleatoriedade

      3:37

    • 22.

      Outras funções aleatórias

      2:24

    • 23.

      Seleção

      6:17

    • 24.

      se ... outro

      3:40

    • 25.

      Combinar comparações

      2:38

    • 26.

      A função de aleatoriedade one_in

      3:28

    • 27.

      O simples se

      2:45

    • 28.

      Variáveis

      5:53

    • 29.

      Contadores de loop

      4:46

    • 30.

      Listas

      5:13

    • 31.

      Índices

      6:19

    • 32.

      Como fazer um sequenciador de tambor

      11:22

    • 33.

      Reprodução de padrões

      4:26

    • 34.

      Acordes

      7:01

    • 35.

      Escalas

      6:16

    • 36.

      Anéis

      4:54

    • 37.

      Funções do anel

      5:36

    • 38.

      Funções personalizadas

      6:48

    • 39.

      Parâmetros de função

      4:52

    • 40.

      Efeitos no Sonic Pi

      2:52

    • 41.

      Opções de FX

      2:00

    • 42.

      Efeitos de encadeamento

      1:29

    • 43.

      Assuma o controle

      5:29

    • 44.

      Controlando o slide de nota

      0:58

    • 45.

      Controlando efeitos

      4:38

    • 46.

      Loops ao vivo

      8:28

    • 47.

      Desempenho ao vivo com loops ao vivo

      7:09

    • 48.

      MIDI em

      11:54

    • 49.

      MIDI fora

      4:54

    • 50.

      Áudio ao vivo

      7:15

    • 51.

      Resumo

      3:27

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

67

Estudantes

1

Projetos

Sobre este curso

Destinado a músicos com pouca ou nenhuma experiência de codificação, este curso divertido vai ensinar a compor e executar música usando código como seu instrumento. Com base na estrutura gratuita do Sonic Pi, popular na cena do Algorave, você cobrirá tudo, desde os conceitos básicos de programação até usando o Sonic Pi para desempenho ao vivo, incluindo escrever um sequenciador de bateria. Mais tarde no curso, você vai até aprender a integrar seu código com instrumentos MIDI e áudio.

Com quatro horas de vídeo dividido em cinqüenta palestras, você encontrará descrições detalhadas e demonstrações de:

  • Como criar música codificando padrões musicais com sintetizadores e amostras.
  • Conceitos fundamentais de programação, incluindo o fluxo de programas e as estruturas de dados incorporadas da Sonic Pi.
  • Criando um sequenciador de bateria, loop melodias, progressões de acordes e linhas de baixo do zero.
  • Como usar filtros e envelopes ADSR para design de som baseado em código.
  • Como adicionar efeitos como distorção, atraso e reverb para tornar seus sons mais interessantes.
  • Como controlar MIDI e áudio do seu código.
  • Como usar as características do Sonic Pi para aprimorar suas performances ao vivo.

Vamos usar o Sonic Pi gratuito durante todo o curso, e até o final, você vai ser capaz de aplicar o que você aprendeu para criar composições musicais exclusivas e executar ao vivo usando código. Como você vai ver, qualquer pessoa pode aprender a programar. Cada novo conceito passo a passo e é mais fácil do que você pensa, mesmo que você não tenha absolutamente nenhuma experiência de codificação prévia!

Conheça seu professor

Teacher Profile Image

Steve Lydford

Music, Sound Design and Productivity

Professor

Hi, I'm Steve Lydford.

I am a sound designer, software engineer and author with over two decades of professional experience. I am an experienced teacher and have taught numerous courses both online and in-person.

I live with my family in a remote farmhouse in mid-Wales, UK, where I don't have to worry about soundproofing or neighbours!

If you'd like to find out more, please do [follow] my Skillshare profile, and if you've got ideas for classes that you'd find useful, drop me a message/email, and I'll see what I can do

Thanks for watching, and welcome!

Visualizar o perfil completo

Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

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.