SuperCollider + Lilypond

32 views
Skip to first unread message

Bruno Ruviaro

unread,
Oct 25, 2011, 4:35:38 PM10/25/11
to supercol...@googlegroups.com
Ol� Bernardo (e todos),

Estou tentando usar as suas classes pra gerar nota��o musical a partir
do SC, mas estou empacado...

1) Baixei o zip folder com tudo a partir daqui:

https://github.com/smoge/LilyCollider

2) Coloquei todos os arquivos dentro do folder
~/share/SuperCollider/Extensions

3) Iniciei o SC e abri o arquivo LilyPitch.scd (que me pareceu uma
esp�cie de documenta��o?)

4) Tentei evaluar as primeiras linhas:

a = LilyPitch(13.5)
a.plot
a.template="doc"
a.template="minimal"
a.header
a.templateList
a.templateFile
a.template

A primeira d� certo, mas o resto d� erro (abaixo). Ser� que instalei
algo errado?

Obrigado!

Bruno

- - - -

a LilyPitch

ERROR: Primitive '_FileLength' failed.
Failed.
RECEIVER:
Instance of File { (093D6960, gc=80, fmt=00, flg=00, set=01)
instance variables [1]
fileptr : nil
}
CALL STACK:
MethodError:reportError 094A7880
arg this = <instance of PrimitiveFailedError>
Nil:handleError 094A7820
arg this = nil
arg error = <instance of PrimitiveFailedError>
Thread:handleError 094A77C0
arg this = <instance of Thread>
arg error = <instance of PrimitiveFailedError>
Thread:handleError 094A7760
arg this = <instance of Routine>
arg error = <instance of PrimitiveFailedError>
Object:throw 094A7700
arg this = <instance of PrimitiveFailedError>
Object:primitiveFailed 094A76A0
arg this = <instance of File>
File:readAllString 094A7640
arg this = <instance of File>
var string = nil
LilyShowableObj:header 094A75E0
arg this = <instance of LilyPitch>
var file = <instance of File>
var content = nil
LilyShowableObj:write 094A7580
arg this = <instance of LilyPitch>
var file = <instance of File>
< FunctionDef in Method LilyShowableObj:plot > (no arguments or variables)
Routine:prStart 094A74C0
arg this = <instance of Routine>
arg inval = 165.7240550518


Bernardo Barros

unread,
Oct 25, 2011, 4:57:28 PM10/25/11
to supercol...@googlegroups.com
On 10/25/2011 01:35 PM, Bruno Ruviaro wrote:
>
> Estou tentando usar as suas classes pra gerar notação musical a partir

> do SC, mas estou empacado...

Bruno, vou corrigir esse problema. Como ninguém usa esse lib a não ser
eu, às vezes algumas pastas ficam "hard coded", o que é *bem* ruim. Vou
atualizar ainda hoje para funcionar em qualquer sistema.

O que você pode fazer é editar o arquivo LilyShowableObj.sc, que é a
superclasse de todos as classes que podem ser "mostrados" em uma
partitura (notas, acordes, sequencias, ritmos etc.).

Mude principalmente o "var <>templatesFolder = " que é a pasta que você
coloca os "templates" do Lilypond. Os templates são os arquivos com
informações sobre o tamanho do papel, o tamanho da pauta, se é notação
proporcional ou não, e vários detalhes desse tipo.

LilyShowableObj : LilyObj {

var <>fileName = "~/.scly/sketch";
var <>pdfViewer = "xpdf -remote sclyserver"; /* "okular --unique" */
var <>midiPlayer = "kmid";
var <>textEditor = "emacsclient"; /* "frescobaldi"; */
var <>templatesFolder =
"/home/smoge/.local/share/SuperCollider/Extensions/LilyCollider/templates";
var <>template = "doc";
var <>lilyCmd= "lilypond";

Talvez precise criar uma pasta ~/.scly, que é onde os arquivos vão ser
criados. Costumava ser ~/Desktop, mas nem todo mundo possui essa pasta
necessariamente (eu, por exemplo =).

Talvez um arquivo de configuração será necessário. Algo para determinar
o visualizador padrão do PDF (xpdf, okular, evince, skim &c.) e o
tocador do arquivo midi (vlc, kmid, rosegarden, logic &c.) &c. Algo tipo
xdg-open funcionaria no mac?

Eu gosto do xpdf e do okular porque você pode alterar o pdf sem ter que
fechar e abrir o programa. O xpdf é particularmente rápido.

--
Bernardo Barros

signature.asc

Bernardo Barros

unread,
Oct 25, 2011, 5:12:42 PM10/25/11
to supercol...@googlegroups.com
On 10/25/2011 01:57 PM, Bernardo Barros wrote:
> Bruno, vou corrigir esse problema. Como ninguém usa esse lib a não ser
> eu, às vezes algumas pastas ficam "hard coded", o que é *bem* ruim. Vou
> atualizar ainda hoje para funcionar em qualquer sistema.

Ah, lembrei porque eu fiz isso.

O jeito "mais correto" seria usar Plarform.

Como 'Platform.classLibraryDir', mas isso estava me dando um erro por
algum motivo e eu estava sem paciência nesse dia =)

Vou tentar corrigir

a pasta dos templates (por exemplo) ficaria algo como

Plarform.classLibraryDir ++ "/LilyCollider/templates"


Vou testar aqui.

--
Bernardo Barros

signature.asc

Bernardo Barros

unread,
Oct 25, 2011, 5:24:29 PM10/25/11
to supercol...@googlegroups.com
On 10/25/2011 02:12 PM, Bernardo Barros wrote:
> a pasta dos templates (por exemplo) ficaria algo como
>
> Plarform.classLibraryDir ++ "/LilyCollider/templates"

Oooops, na verdade é :

Platform.userExtensionDir ++ "/LilyCollider/templates"

--
Bernardo Barros

signature.asc

Bruno Ruviaro

unread,
Oct 25, 2011, 5:25:33 PM10/25/11
to supercol...@googlegroups.com
Oba! Parece que deu certo. Fiz as modificações manualmente e agora o
"plot" está mostrando a nota corretamente no xpdf (a propósito, estou
usando no Linux, não no Mac).

Obrigado!!

Depois que vc mudar de vez o código posso testar aqui também num outro
computador.

B


On 10/25/2011 02:12 PM, Bernardo Barros wrote:

> On 10/25/2011 01:57 PM, Bernardo Barros wrote:
>> Bruno, vou corrigir esse problema. Como ninguém usa esse lib a não ser
>> eu, às vezes algumas pastas ficam "hard coded", o que é *bem* ruim. Vou

>> atualizar ainda hoje para funcionar em sistema.

Bernardo Barros

unread,
Oct 25, 2011, 5:32:48 PM10/25/11
to supercol...@googlegroups.com
On 10/25/2011 02:25 PM, Bruno Ruviaro wrote:
> Oba! Parece que deu certo. Fiz as modificações manualmente e agora o
> "plot" está mostrando a nota corretamente no xpdf (a propósito, estou
> usando no Linux, não no Mac).
>
> Obrigado!!
>
> Depois que vc mudar de vez o código posso testar aqui também num outro
> computador.


É, com o código 'genérico' eu estou tendo problemas de novo..

Por que será? Deve ser algo idiota. Se eu avalio

Platform.userExtensionDir ++ "/LilyCollider/templates"

Isso funciona, mas se ele coloco essa linha no código da classe
LilyShowableObj, sclang não inicia, não aceitando "Platform":

ERROR: Parse error
in file
'/home/smoge/.local/share/SuperCollider/Extensions/LilyCollider/LilyShowableObj.sc'
line 9 char 33:
var <>templatesFolder = Platform•.userExtensionDir ++
"/LilyCollider/templates";
var <>template = "doc";


Qualquer luz me avise.


--
Bernardo Barros

signature.asc

Bruno Ruviaro

unread,
Oct 25, 2011, 6:01:54 PM10/25/11
to supercol...@googlegroups.com
On 10/25/2011 02:32 PM, Bernardo Barros wrote:
> É, com o código 'genérico' eu estou tendo problemas de novo..
>
> Por que será? Deve ser algo idiota. Se eu avalio
>
> Platform.userExtensionDir ++ "/LilyCollider/templates"
>
> Isso funciona, mas se ele coloco essa linha no código da classe
> LilyShowableObj, sclang não inicia, não aceitando "Platform":
>
> ERROR: Parse error
> in file
> '/home/smoge/.local/share/SuperCollider/Extensions/LilyCollider/LilyShowableObj.sc'
> line 9 char 33:
> var<>templatesFolder = Platform•.userExtensionDir ++
> "/LilyCollider/templates";
> var<>template = "doc";
>
>
> Qualquer luz me avise.
>

Pode ser que não tenha nada a ver, mas... me parece que o output de
Platform.user etc é o endereço resultante (folder path) SEM aspas. Será
que o

var <> templatesFolder =

não está esperando um path contido ENTRE aspas?

Ou será que o Platform não está sequer sendo evaluado nesse momento? (a
coisa pára antes?)

B

Bruno Ruviaro

unread,
Oct 25, 2011, 6:24:05 PM10/25/11
to supercol...@googlegroups.com
Última perguntinha do dia...

Qual o jeito certo de entrar com uma lista de midi notes do tipo

[ [ 60, 50 ], [ 48, 38 ], [ 60, 50 ], [ 48, 52 ], [ 60, 50 ], [ 48, 69 ] ]

Achei que isto funcionaria, mas não deu:

LilyChordSeq( [ [ 60, 50 ], [ 48, 38 ], [ 60, 50 ], [ 48, 52 ], [ 60, 50
], [ 48, 69 ] ] ).plot;

(tentei espiar o código do ChordSeq, mas não sei se entendi... ele só
aceita Chords como argumento? Não pode ser uma lista de arrays direto?]

B

Bernardo Barros

unread,
Oct 25, 2011, 6:37:26 PM10/25/11
to supercol...@googlegroups.com
On 10/25/2011 03:24 PM, Bruno Ruviaro wrote:
> Última perguntinha do dia...
>
> Qual o jeito certo de entrar com uma lista de midi notes do tipo
>
> [ [ 60, 50 ], [ 48, 38 ], [ 60, 50 ], [ 48, 52 ], [ 60, 50 ], [ 48, 69 ] ]
>
> Achei que isto funcionaria, mas não deu:
>
> LilyChordSeq( [ [ 60, 50 ], [ 48, 38 ], [ 60, 50 ], [ 48, 52 ], [ 60, 50
> ], [ 48, 69 ] ] ).plot;
>
> (tentei espiar o código do ChordSeq, mas não sei se entendi... ele só
> aceita Chords como argumento? Não pode ser uma lista de arrays direto?]

Daria sim. LilyChordSeq é uma sequências de LilyChords, logo ele teria
que converter internamente essa Array de números para um LilyChord.


putThis.do { |i|
if(i.isKindOf(Array)) {
this.put(LilyChord(i))
};


SuperCollider não tem como checar se isso "é uma Array de Números" como
no Haskell [Number], então temos que chegar manualmente, senão algo pode
dar muito errado. =) Vou checar se há algum método de ver se todos os
elementos de uma Array são somente Números, depois coloco no github.

(Estou saindo para o Encontro! Té breve!!))


init { arg firstStuff;

chordArray = Array.new;
this.put(firstStuff);
}


put { arg putThis;

// if(this.includes(putThis).not) {

if(putThis.isKindOf(LilyChord)) {
chordArray = chordArray.add(putThis)
};

if(putThis.isKindOf(Array)) {
this.putArray(putThis)
};
//};
}


putArray { arg putThis;

putThis.do { |i|
if(i.isKindOf(LilyChord)) {
this.put(i)
};

}

}

--
Bernardo Barros

signature.asc

Bernardo Barros

unread,
Oct 26, 2011, 2:57:09 AM10/26/11
to supercol...@googlegroups.com
On 10/25/2011 03:01 PM, Bruno Ruviaro wrote:
>>
>
> Pode ser que não tenha nada a ver, mas... me parece que o output de
> Platform.user etc é o endereço resultante (folder path) SEM aspas. Será
> que o
>
> var <> templatesFolder =
>
> não está esperando um path contido ENTRE aspas?
>
> Ou será que o Platform não está sequer sendo evaluado nesse momento? (a
> coisa pára antes?)


Oi Bruno, agora está funcionando. =)

--
Bernardo Barros

signature.asc

Rael Toffolo

unread,
Oct 26, 2011, 12:57:04 PM10/26/11
to supercol...@googlegroups.com, Bernardo Barros
OPa....

Só para avisar... eu também to usando a classe hehe...
Legal saber que estão mexendo ainda no código... quando precisarem de
ajuda avisem ai...

Abração
Rael

--
Prof. Ms. Rael Bertarelli Gimenes Toffolo
Laboratório de Pesquisa e Produção Sonora - LAPPSO
Departamento de Música - DMU
Universidade Estadual de Maringá - UEM
+55 44 3261-4092

Bernardo Barros

unread,
Oct 27, 2011, 12:27:28 PM10/27/11
to Rael Toffolo, supercol...@googlegroups.com
On 10/26/2011 09:57 AM, Rael Toffolo wrote:
> OPa....
>
> Só para avisar... eu também to usando a classe hehe...
> Legal saber que estão mexendo ainda no código... quando precisarem de
> ajuda avisem ai...


Que legal,

O que vocês acham que seria útil?

Você usam Patterns? Acham interessante?

Nas minhas composições eu acho particularmente interessantes as
Compreensões de Listas para manipular ritmos.

Para alturas eu acho que para coisas mais complexas os Patterns parecem
ser mais apropriados. Eles são inspirados na propramação funcional (como
Haskell), onde pode-se trabalhar com "listas infinitas" (streams) e
funções de alto nível (passar uma função como argumento para outra
função). Para mim parece interessante para trabalhar com alturas.

Isso também facilitaria implementar a utilização de ritmos + alturas, já
que poderia basear tudo em ritmo e chamar a "próxima altura" com "next".

--
Bernardo Barros

signature.asc

Guilherme Lunhani

unread,
Oct 28, 2011, 9:43:32 PM10/28/11
to supercol...@googlegroups.com
Definir uma peça como uma função de alto-nível
me parece como algo que o Xenakis idealizava
--
--

GUILHERME

Bernardo Barros

unread,
Oct 29, 2011, 2:02:02 PM10/29/11
to supercol...@googlegroups.com
On 10/28/2011 06:43 PM, Guilherme Lunhani wrote:
> Definir uma peça como uma função de alto-nível
> me parece como algo que o Xenakis idealizava


Rael: Como você tem usado?

Guilherme: Teoricamente pode ser, não? Mas o Xenakis falou isso mesmo?

Patterns em SC e streams/listas infinitas/funções de alto nível em
Haskell têm coisas em comum, mas não são a mesma coisa. Seria bacana
comparar. Você tem dado uma olhada nessas coisas, Guilherme? Lembro que
você comentou algo sobre Haskell uns meses atrás.

Uma coisa que estou tentando fazer agora é implementar a
"indispensabilidade" de ritmos que o Clarence Barlow propôs. Acho uma
ideia muito boa, eu gostaria de generalizá-la um pouco mais para
combinar com as árvores rítmicas. Por exemplo: subdividir um valor em
uma árvore rítmica com um algoritmico inspirado na indispensabilidade.

Se alguém quiser ajudar a implementar a indispensabilidade seria bem
bacana. Eu tenho o artigo do Barlow em PDF, caso alguém queira ler e ajudar.

Abraço!!


--
Bernardo Barros

signature.asc

Rael Toffolo

unread,
Oct 29, 2011, 2:13:31 PM10/29/11
to supercol...@googlegroups.com
Olá Bernardo

Eu tenho usado como CAC mesmo... gerando notas e rítimos a partir de
arrays e cálculos matemáticos...
Seria legal implementar os rítmos como alturas também...

Pelo que vi vc comentando (apesar de eu não conhecer o Haskell) acho que
os Events no SC são realmente muito poderosos. Fiquei pensando em uma
maneira de comunicá-los diretamente com tuas classes. Estava pensando
em trabalhar um pouco nisso. Não deu muito tempo ainda que estou as
voltas de preparar algumas coisas para minha qualificação do doutorado.

ABração

Bernardo Barros

unread,
Oct 29, 2011, 2:37:21 PM10/29/11
to supercol...@googlegroups.com
On 10/29/2011 11:13 AM, Rael Toffolo wrote:
> Pelo que vi vc comentando (apesar de eu não conhecer o Haskell) acho que
> os Events no SC são realmente muito poderosos. Fiquei pensando em uma
> maneira de comunicá-los diretamente com tuas classes. Estava pensando
> em trabalhar um pouco nisso. Não deu muito tempo ainda que estou as
> voltas de preparar algumas coisas para minha qualificação do doutorado.

Olá Rael,

Eu fiz uma outra classe que transforma um Pattern em um arquivo do
FOMUS, ele funciona muito melhor para alturas. O problema dele é que o
FOMUS não implementou árvores rítmicas, que é método que eu gosto de
trabalhar. Mas para alturas e ritmos como uma lista de durações, ele
funciona bem melhor.

https://github.com/smoge/superfomus


Boa sorte no doutorado! Qual a tese do seu trabalho?


Abraço!


--
Bernardo Barros

signature.asc

Guilherme Lunhani

unread,
Oct 29, 2011, 5:11:34 PM10/29/11
to supercol...@googlegroups.com
Então... sobre essas coisas de definir uma peça como função de alto-nível
tenho trabalhado numa peça com vídeo, e ainda estou na parte de
imagem :Processing (feito no Eclipse)

mercurial:
https://hg.assembla.com/arrangedshapes

Nessa peça penso que um aglomerado de formas geométricas
pode ser definido basicamente pelo 'tipo de evolução' delas, ou seja,
poderia definir uma função de alto nível para mostrar uma sequência
de pequenas evoluções, ou em outras palavras, o processo
--
--

GUILHERME

Guilherme Lunhani

unread,
Oct 30, 2011, 6:57:46 AM10/30/11
to supercol...@googlegroups.com
Agora fiz um ultimo update, da p começar a ver o codigo em acao...
--
--

GUILHERME

padovani

unread,
Sep 22, 2012, 12:39:31 AM9/22/12
to supercol...@googlegroups.com
olá Bernardo e pessoal,

como anda a manutenção LilyCollider?
(baixei aqui mas está dando alguns erros na classe LilyDynSeq... descobri que tinha que renomear a classe Dyn pra LilyDyn, mas alguns métodos ainda dão erro)

abs!

Bernardo Barros

unread,
Sep 22, 2012, 1:28:19 AM9/22/12
to supercol...@googlegroups.com
Essa classe eu nunca usei. Eu tenho usado só as coisas relacionadas a
rítmos. Para certas manipulações que eu faço está suficiente, mas eu
entendo que não é um sistema completo. Talvez eu volte a mexer nisso
no começo do ano que vem.

Você conhece o Abjad? Parece uma ótima alternativa:

http://pypi.python.org/pypi/Abjad/2.9


No dia 21 de Setembro de 2012 21:39, padovani
<zepadova...@gmail.com> escreveu:

Guilherme Lunhani

unread,
Sep 22, 2012, 11:45:12 AM9/22/12
to supercol...@googlegroups.com
Eu to com um tempo de sobra em alguns dias;
Podem me repassar o link do repo?

ABs
[]s
--
--

GUILHERME

Bernardo Barros

unread,
Sep 22, 2012, 1:55:43 PM9/22/12
to supercol...@googlegroups.com

padovani

unread,
Sep 22, 2012, 4:15:55 PM9/22/12
to supercol...@googlegroups.com
Pois é, eu também topo ajudar nessa lib... acho que seria muito útil...
Será que você poderia dar uma ideia de quais classes estão mais "terminadas" e quais precisam de trabalho?
Porque aí eu e o Guilherme, se ele topar, poderíamos ir lixando o que precisa de aparo...

Bernardo Barros

unread,
Sep 22, 2012, 4:57:49 PM9/22/12
to supercol...@googlegroups.com
On 09/22/2012 01:15 PM, padovani wrote:
> Pois é, eu também topo ajudar nessa lib... acho que seria muito útil...
> Será que você poderia dar uma ideia de quais classes estão mais
> "terminadas" e quais precisam de trabalho?
> Porque aí eu e o Guilherme, se ele topar, poderíamos ir lixando o que
> precisa de aparo...

Legal, Zé. Muito legal.

O meu problema no momento é tempo. Esse mês já está bem comprometido,
depois de 30 de outubro eu vou ter mais tempo.

O que falta?

* Integrar as classes relacionadas aos ritmos com as classes
relacionadas às alturas.

* Criar classes top-down, para organizar sequências, ritmos, etc em uma
partitura (staff, voices, groups etc.). Isso existe, mas precisa melhorar.

* Criar uma lib para manipulação, uma biblioteca de ferramentas para
usar o arcabouço básico. Por enquanto só existe o arcabouço -- o
"framework". As minhas funções para criar os materiais não estão na lib.
Diferentemente do Abjad, que é uma enorme coleção de funções e
ferramentas. Mas para isso seria necessário organizar nossas ferramentas
de modo a que elas sejam integradas.

De vez em quando os rítmos dão alguns resultados estranhos, mas 98% dos
casos está funcionando muito bem.



signature.asc

Guilherme Lunhani

unread,
Sep 22, 2012, 5:24:35 PM9/22/12
to supercol...@googlegroups.com
Vou estudar o código; faz muito tempo que n mexo no SC ;)
Acho importante tb incluir a documentação

Abs[]s
--
--

GUILHERME

Bernardo Barros

unread,
Sep 22, 2012, 11:00:42 PM9/22/12
to supercol...@googlegroups.com
On 09/22/2012 02:24 PM, Guilherme Lunhani wrote:
> Vou estudar o código; faz muito tempo que n mexo no SC ;)
> Acho importante tb incluir a documentação

Claro. Para o fomus eu fiz, talvez ajude:

https://github.com/smoge/superfomus/blob/master/HelpSource/Classes/Fomus.schelp



signature.asc

padovani

unread,
Sep 23, 2012, 9:31:57 AM9/23/12
to supercol...@googlegroups.com, supercol...@googlegroups.com
bacana.. vou ir modificando o que me parecer necessário colocando meus códigos mostrando meu uso, porque aí podemos ver o que pode ser integrado às classes e o que pode ficar como um exemplo mais particular de uso... (como uma segunda camada de classes, por exemplo)

abraços!

Rael Bertarelli Gimenes Toffolo

unread,
Sep 24, 2012, 7:49:02 AM9/24/12
to supercol...@googlegroups.com
Caros,

Vou aproveitar a discussão para divulgar uma coisinha para vcs...

Como já divulguei na lista do sc há algum tempo, estou desenvolvendo uma classe para notação musical usando o Canvas do SC. Ainda está totalmente inicial e não tão bem organizada como a classe do Bernardo... Porque fiz isso: o Lilycollider dá resultados visuais muito melhores do que minha ideia de classe. Mas em alguns projetos que to trabalhando a chamada do lilypound via Unix comand gera um pequeno gap de compilação que me atrapalha para algumas coisa. No intuito de fazer algo, inspirado pelo Patchwork e OpenMusic, comecei a fazer o meu "treco" notador.

Portanto,vai ai o link do repositório para quem quiser dar uma olhadinha.

Grande abraço a todos!

Rael

http://sourceforge.net/projects/scutils/

E a página do Wiki para vcs darem uma olhadinha

http://sourceforge.net/p/scutils/wiki/SCScore/

2012/9/23 padovani <zepadova...@gmail.com>

Bernardo Barros

unread,
Sep 24, 2012, 10:58:01 AM9/24/12
to supercol...@googlegroups.com
On 09/24/2012 04:49 AM, Rael Bertarelli Gimenes Toffolo wrote:
> Como já divulguei na lista do sc há algum tempo, estou desenvolvendo uma
> classe para notação musical usando o Canvas do SC. Ainda está totalmente
> inicial e não tão bem organizada como a classe do Bernardo... Porque fiz
> isso: o Lilycollider dá resultados visuais muito melhores do que minha
> ideia de classe. Mas em alguns projetos que to trabalhando a chamada do
> lilypound via Unix comand gera um pequeno gap de compilação que me
> atrapalha para algumas coisa. No intuito de fazer algo, inspirado pelo
> Patchwork e OpenMusic, comecei a fazer o meu "treco" notador.

Legal Rael

Vou dar uma olhada! Dê uma olhada no CtK, talvez seja possível integrar
os projetos.

Você conhece o InScore? Se o problema for velocidade, ele é mais rápido
do que o LilyPond. Daria para criar uma interface entre SuperCollider e
InScore usando OSC. Pode ser uma ótima solução também. Há uma interface
para o PD, pode ser usada como ponto de partida.

http://inscore.sourceforge.net/

https://www.youtube.com/watch?v=p96FVMENNtI

Abraço!



signature.asc

Guilherme Lunhani

unread,
Sep 24, 2012, 11:12:00 AM9/24/12
to supercol...@googlegroups.com
Ando estudando o lily;
pensei em fazer uma versao javascript,
agora tem aquela lib webaudio do chrome; um fork.

Fiz isso em uns 15 min; assim que voltar do estagio vejo mais:
Alguma sugestao galera?

Abs
[]
--
--

GUILHERME
lilylib.js

Guilherme Lunhani

unread,
Sep 24, 2012, 6:29:09 PM9/24/12
to supercol...@googlegroups.com
Galera, o que acham mantermos contato no IRC do labmacabira?
estou por la;


Abs
[]s
--
--

GUILHERME

padovani

unread,
Sep 25, 2012, 2:21:17 PM9/25/12
to supercol...@googlegroups.com
Ok,

apresentando mais ou menos o que ando fazendo:

estou modificando a classe LilyPitch (chamei a minha de LilyNote - não
sei se o Bernardo já havia mencionado essa possibilidade de
nomenclatura?) e estou tentando fazer com que ela funcione da seguinte
maneira (seguindo mais ou menos o que já havia na própria classe)

a classe recebe até 5 argumentos de instanciação, todos opcionais:
1. nota (no mesmo formato da LilyPitch)
2. duração (idem)
3. string antecedente à nota (ex. "\\teeny")
4. string subsequente à nota (ex. "\\glissando")
5. multiplicador da duração

minha dúvida é se seria o caso de repensar os argumentos e incluir
entradas específicas para dinâmica, início ou fim de haripins,
articulacão, etc... ou se seria melhor manter a string antecedente e a
string subsequente em aberto, permitindo a concatenação de strings
diversas com outras classes....

talvez fosse interessante ter uma entrada específica pelo menos para a
inclusão ou não de ligaduras de duração ("~"), o que seria sempre o
último item da string final (acho que isso pode facilitar na escrita de
quantizadores, por exemplo).

No mais, acho que seria interessante manter entradas gerais que
permitissem ajustar os valores padrão do executável do lilypond, do path
e nome de arquivo de saída, e outras coisas do tipo..

Outra dúvida é se poderíamos ter uma entrada também para a classe
LilyNote de dois argumentos: pausa e skip... porque aí uma rotina
poderia decidir sem necessitar de cláusulas externas se irá printar uma
nota ou uma pausa ou um skip, o que pode ser bastante útil para gerar
partitura algoritmicamente.

Quanto às durações, acho interessante desenvolvermos soluções
diferentes... a estrutura em árvore já está bem montada pelo Bernardo e
eu acho que conseguiria montar um quantizador básico que seguisse uma
sequência de tempos e timesigs para ajustar os onsets e durações... (
tenho algo em lisp, mas preciso traduzir).

Bueno, é isso. To jogando na roda para pensarmos juntos...

abraços,


--
http://zepadovani.info

Bernardo Barros

unread,
Sep 25, 2012, 3:39:01 PM9/25/12
to supercol...@googlegroups.com
On 09/25/2012 11:21 AM, padovani wrote:
> apresentando mais ou menos o que ando fazendo:
>
> estou modificando a classe LilyPitch (chamei a minha de LilyNote - não
> sei se o Bernardo já havia mencionado essa possibilidade de
> nomenclatura?) e estou tentando fazer com que ela funcione da seguinte
> maneira (seguindo mais ou menos o que já havia na própria classe)
>

Legal,

Talvez LilyNote, LilyRest e LilySkip fossem subclasses de alguma
superclasse? O que elas têm em comum é que elas precisam de uma duração,
mas só LilyNote vai precisar de uma altura (LilyPitch).

Só uma ideia.


signature.asc

Guilherme Lunhani

unread,
Sep 25, 2012, 6:17:38 PM9/25/12
to supercol...@googlegroups.com
acho que a ligadura pode ser um atributo de uma nota, true ou false;

para criar uma ligadura de tempo entre duas notas,
seria necessário que este atributo fosse true nos dois, podendo gerar daí o '~'
--
--

GUILHERME

Rael Bertarelli Gimenes Toffolo

unread,
Sep 25, 2012, 7:59:20 PM9/25/12
to supercol...@googlegroups.com
Valeu pela dica Bernardo..

O InScore parece ser bem útil para o que eu tinha pensado.. Vou começar um projeto para integrar o SC com ele...
Em breve divulgo por aqui

Abraços

2012/9/25 Bernardo Barros <bernard...@gmail.com>
On 09/25/2012 11:21 AM, padovani wrote:ços
Reply all
Reply to author
Forward
0 new messages