Audio programming with Chuck

Este minicurso tem como objetivo ensinar os fundamentos da programação de computadores (lógica, loops, funções, objetos, classes) assim como tópicos mais avançados (multi-threading, eventos e sinais) através da linguagem Chuck. Ao longo do minicurso, os alunos criarão “instrumentos” digitais que produzem som e música em resposta direta à lógica do programa. A linguagem de programação ChucK fornece controle preciso de alto nível ao longo do tempo para a computação de áudio. Essa linguagem é a espinha dorsal de dezenas de programas acadêmicos e orquestras de laptop. Aprender a programar em ChucK, através dos exemplos musicais fornecidos neste minicurso, irá preparar os alunos para programar em outras linguagens de programação, como: C, C++ e java.

Aula 1: Fundamentos: Programação de Som, Ondas e ChucK

Vamos começar com o básico do ChucK e da ciência da computação, incluindo variáveis, tipos, instruções condicionais e estruturas em loop.

-Introdução ao Curso
-História e Introdução ao Chuck
-Olá Seno
-Tipos de dados e variáveis
-Tempo no Chuck
-Estruturas de Controle: If and Else
-Estruturas de Controle: For e While Loops
-Exemplos
____________________________________________________________

Aula 2: Bibliotecas e matrizes
Esta aula apresenta bibliotecas construídas no ChucK e mostra como números aleatórios e diferentes equações matemáticas podem ser usadas para criar composições mais expressivas. Também introduziremos matrizes e mostraremos como usá-las para fazer melodias.

-Biblioteca Padrão e Conversão de Unidades
-Números Aleatórios
-Biblioteca de Matemática
-Matrizes
-Exemplos
____________________________________________________________

Aula 3: Manipulação de Arquivos de Som
Nesta aula, apresentaremos como usar arquivos de som no ChucK e como você pode usá-los para criar paisagens sonoras e uma música techno.

-Amostras e Manipulação de Arquivos de Som
-Configuração de Arquivo de Som
-Amostras e Arquivos de Som
-SndBuf
-looping SndBuf
-Reverter uma amostra
-Gerenciamento de Amostra
-Reprodução Estéreo
-Modulo
-Faça um sequenciador
____________________________________________________________

Aula 4: Funções
Esta aula apresentará o conceito de funções e como elas podem ser usadas para modularizar e organizar seu código, além de ajudá-lo a criar composições mais expressivas.

-Introdução às Funções
-Exemplos de Funções Básicas
-Local vs. Global
-Funções Através da Música I
-Funções através da música II
-Funções através da música III
-Funções para fazer formulário
-Recursão
-Funções para Acordes
____________________________________________________________

Aula 5: Geradores de Unidades e Modelos Físicos
Nesta aula, vamos aprender como fazer efeitos de áudio. Através do ChucK, usaremos técnicas de síntese integradas e outros conceitos para aprimorar fortemente os sons que você usa para criar música.

-Introdução aos Geradores de Unidades
-Geradores de Unidade de Oscilação
-Geradores de Unidade de Envelope
-Modulação de Frequência
-Introdução aos Modelos Físicos
-Filtros
-Efeitos de Áudio
-Modelos Físicos – Cordas
-Modelos Físicos – Instrumentos de Sopro
-Barra Modal
-Agitadores
-Exemplos
____________________________________________________________

Aula 6: Multi-threading e simultaneidade
Nesta aula, nosso tópico será multi-threading, ou como você pode fazer seu programa “manipular” várias coisas ao mesmo tempo.

-Introdução à Concorrência
-Concorrência no Chuck – Parte I
-Concorrência em Chuck – Parte II
-Comandos da Máquina
-Arquitetura de Composição
-Exemplos
____________________________________________________________

Aula 7: Objetos e Classes
Nosso foco nesta aula será a programação orientada a objetos e como você pode criar seus próprios “objetos” para usar em seu código.

-Introdução à programação orientada a objeto
-Objetos
-Classes
-Classe Simples
-Sobrecarga
-Privado vs. Público
-Exemplo de DrumCircle: Classe BPM
-Exemplo de DrumCircle: Kick
-Variáveis de membro estático
-Exemplo de DrumCircle: Cowbell
-Exemplo de DrumCircle: Arquitetura de Composição
-Herança
-Exemplos


Referência:
Ajay Kapur, Perry R. Cook, Spencer Salazar, and Ge Wang. 2015. Programming for Musicians and Digital Artists: Creating Music with ChucK (1st ed.) Manning Publications Co., Greenwich, CT, USA.