Sobre

Temos aqui uma espécie de “to-do” que estabeleci para o projeto. Muita coisa ainda pode - e vai - mudar, mas a base do projeto é essa.

1* Objetivo: criar uma “pseudo-linguagem” de programação para áudio capaz de ser ao mesmo tempo interativa e intuitiva, além de flexível

2* Ferramentas: python e csound

3* Instrumentos:
3.1* pré-definidos: alguns instrumentos já pré-programados
3.2* definidos pelo usuário: todas as opções do instrumento definidas pelo usuário, com valores padrões que podem ou não ser alterados.
3.3* mistos: instrumentos pré-definidos com alguma intervenção do usuário em alguma propriedade [delay, por exemplo]

4* Algumas rotinas melódicas:
4.1* .cluster[nota_inicial, nota_final] #faz um cluster entre nota inicial e nota final. Serão usadas alturas do sistema temperado
4.2* .nota[nota] #deve ser dada na forma ** pitch + height ** Ex.: A3
4.3* .acorde[cifra] #todas as dissonãncias devem ser escritas entre parênteses e serão tocadas na ordem em que aparecerem. Ex.: C(b9) (#11)(7)= Do - Mi - Sol - Reb - Fa# - Sib
4.4* .random[nota_inicial, nota_final, numero_de_notas] #toca X notas entre as alturas especificadas
4.5* .altura[altura_hz] #toca uma nota em Hz
4.6* .glis[nota_inicial, nota_final] #glissando

5* Ritmos: dados com os números de cada figura rítmica[ 1 para semibreve, 2 para mínima, 4 para semínima, etc.] e definido antes da função melódica. Se não for definido nenhum ritmo, a função melódica ficará soando “ad eternum”. O ritmo se repetirá até que o instrumento seja emudecido.

6* Exemplo de sintaxe:
meu_intrumento.timbre = default.piano() #define o timbre como o piano
meu_instrumento.ritmo = [4,4,8,4,8,8,4,8,4,4] #ritmo simples de samba
meu_instrumento.acorde(C(7M)(9)) #toca um acorde de C7M(9) no ritmo pre-definido

meu_instrumento.timbre = default.clarinete() #altera o timbre para o clarinete
meu_instrumento.mute() #silencia o instrumento

7* Características:
6.1* Tempo real
6.2* Interativa
6.3* Alto nível de abstração [não há a necessidade de se programar todos os instrumentos ou se escrever a partitura nota por nota]
6.4* Flexível

8* Público alvo do projeto: músicos e entusiastas da música que gostariam de poder programar em uma linguagem não tão complicada quanto o csound, mas não limitada. Não se trata de uma nova linguagem, mas de um novo paradigma de programação para áudio, onde a facilidade de uso é o principal foco.

Chamei de pseudo-linguagem porque não se trata de um novo código, mas de novas funções sobre um código previamente estabelecido, no caso, o do python e csound.
O nome do projeto foi uma brincadeira com o Csound, já que esse é o “C do áudio”… C tem uma sintaxe não amigável para quem nunca se aventurou pela programação antes, pelo menos por pascal. Csound não fica muito atrás. Python, por sua vez, vem no caminho oposto, buscando clareza, objetividade e facilidade no código. Dessa forma, o projeto - que inicialmente se chamaria PySound, mas como já existe um com esse nome acabou ficando pyMusic - visa ser o “python do áudio”: interativo, rápido e fácil. Outra novidade seria a possibilidade de se criar uma linguagem de programação para áudio que ofereça os conceitos de orientação a objetos, permitindo criar usar heranças e tudo o que esse paradigma de programação oferece.

O que acho mais interessante nisso tudo é a possibilidade de se ouvir tudo o que está escrevendo conforme o fizer… dessa maneira, não há a necessidade de se compilar N vezes um arquivo, tudo é feito na hora. Obviamente isso depende de um hardware mais poderoso, mas acredito que não tanto. Dê-me um processador e 512 MB de memória RAM e eu farei som =)