sábado, 5 de maio de 2007

Atividades com som

Tenho pesquisado e brincado um pouco com atividades que usam som no laptop. Estou ajudando no Editor Musical e para a parte de som descobri o modulo csnd, um binding para o python utilizar o csound a partir da API original para C++.

Um exemplo bem básico e inútil de como usar:

import csnd

cs = csnd.Csound() # nova instancia do Csound
cs.Compile('teste.csd') # Compila arquivo .csd (opcoes+orquestra+score)

th = csnd.CsoundPerformanceThread(cs) # Inicializa uma thread executar para a partitura
th.Play() # toca
th.Join()

Arquivo teste.csd (Csound Orchestra e Score):

<csoundsynthesizer>
<csoptions>
-odac -d -+rtaudio=alsa
</csoptions>
<csinstruments>
; Inicializa as variáveis globais.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
; Instrumento #1.
instr 1
; Amplitude do sinal
kamp = 30000
; Frequência
kcps = 440
; Número da f-table.
ifn = 1
; Toca com amplitude 30000 e frequência de 440 Hz a onda do seno
; armazenada na tabela 1.
a1 oscil kamp, kcps, ifn

; Manda o som armazenado em a1 para a saida
out a1
endin
</csinstruments>
<csscore>
; Tabela #1: uma simples onda de seno usando GEN10.
f 1 0 16384 10 1
; nota de 1 segundo de duração
i 1 0 1
e
</csscore>
</csoundsynthesizer>

Ja consigo fazer sair som usando python, agora a briga é para me entender com os métodos de realtime da API do Csound pra inserir eventos de Score. Os métodos são InputMessage e ScoreEvent. Se alguem estiver mais avançado ou souber outros modos, compartilha ai com a gente :)

A documentação dessa API + python e principalmente a de som no XO/Sugar quase não existe então qualquer progresso vou atualizando aqui no Blog.

Referência da API (C++): http://csound.sourceforge.net/refman.pdf

Até mais.

Nenhum comentário: