msampaio / flauta-solo

Estudo do repertório de flauta solo
BSD 3-Clause "New" or "Revised" License
2 stars 0 forks source link

Elaborar calculadora musical #112

Closed msampaio closed 10 years ago

msampaio commented 10 years ago

Instruções gerais

A tarefa consiste em elaborar uma calculadora musical com as operações básicas da Teoria Pós-Tonal em Python. A calculadora deverá incluir funções para:

  1. calcular a retrogradação de conjuntos de notas
  2. calcular a transposição de conjuntos de notas
  3. calcular a inversão de conjuntos de notas
  4. calcular o vetor intervalar de conjuntos de notas

Cada uma dessas operações deverá ser calculada por uma função como retrogradar([0, 2, 1]). Essas funções deverão aceitar listas de inteiros como valores de entrada e de saída.

Todas as dúvidas referentes à tarefa deverão ser tiradas por aqui.

drakoor commented 10 years ago

Professor, postei já o arquivo como diogo 05, fiz algumas experiências com formação de triades maiores e possiveis mas quanto ao vetor intervalar não consigui realiza-lo ainda pois apesar das fontes que procurei não consegui entende-lo como fuinciona, ainda estou tentando.

Em 27 de outubro de 2013 07:19, Marcos da Silva Sampaio < notifications@github.com> escreveu:

Instruções gerais

  • Verificar o prazo de entrega da tarefa (milestone)
  • Verificar manual de procedimentoshttp://genosmus.com/pesquisa/flauta-solo/manual/
  • A página da pesquisa http://genosmus.com/pesquisa/flauta-solo/contém outras informações adicionais
  • Toda a discussão acerca desta tarefa deverá ser feita usando os comentários da tarefa. O GitHub organiza a discussão e deixa registrada. É fácil encontrar depois.

Instruções específicas

A tarefa consiste em elaborar uma calculadora musical com as operações básicas da Teoria Pós-Tonal em Python. A calculadora deverá incluir funções para:

  1. calcular a retrogradação de conjuntos de notas
  2. calcular a transposição de conjuntos de notas
  3. calcular a inversão de conjuntos de notas
  4. calcular o vetor intervalar de conjuntos de notas

Cada uma dessas operações deverá ser calculada por uma função como retrogradar([0, 2, 1]). Essas funções deverão aceitar listas de inteiros como valores de entrada e de saída.

Todas as dúvidas referentes à tarefa deverão ser tiradas por aqui.

— Reply to this email directly or view it on GitHubhttps://github.com/GenosResearchGroup/FlautaSolo/issues/112 .

msampaio commented 10 years ago

@drakoor, você precisa trabalhar de um modo mais "pythônico". Veja este documento e vamos fazer uma aula de Python de 10 minutos. É necessário organizar o estilo do seu código antes de seguir em frente.

drakoor commented 10 years ago

professor estou buscando outras fontes para entender como deve ser o lay-out da linguagem de programação pois estou tendo dificuldades de distinguir cálculos das funções, e fazer o programa rodar corretamente.

Em 4 de novembro de 2013 11:34, Marcos da Silva Sampaio < notifications@github.com> escreveu:

@drakoor https://github.com/drakoor, você precisa trabalhar de um modo mais "pythônico". Veja este documentohttp://python.net/%7Egoodger/projects/pycon/2007/idiomatic/handout.htmle vamos fazer uma aula de Python de 10 minutos. É necessário organizar o estilo do seu código antes de seguir em frente.

— Reply to this email directly or view it on GitHubhttps://github.com/GenosResearchGroup/FlautaSolo/issues/112#issuecomment-27715322 .

msampaio commented 10 years ago

@drakoor, veja como organizo o código Python nestes arquivos:

https://github.com/msampaio/MusiContour/blob/master/contour/auxiliary.py https://github.com/msampaio/MusiContour/blob/master/contour/diagonal.py https://github.com/GenosResearchGroup/FlautaSolo/blob/master/analysis/core.py

drakoor commented 10 years ago

Professor, veja ai o novo arquivo diogo05 modifiquei o arquivo q já existia, ele não possui as alterações que o senhor me mostrou no genos pq esse arquivo o senhor não postou ainda no copy, mas gostaria q desse uma olhada na organização desse arquivo que acabei de postar para saber se estou seguindo no caminho correto.

2013/11/8 Marcos da Silva Sampaio notifications@github.com

@drakoor https://github.com/drakoor, veja como organizo o código Python nestes arquivos:

https://github.com/msampaio/MusiContour/blob/master/contour/auxiliary.py https://github.com/msampaio/MusiContour/blob/master/contour/diagonal.py

https://github.com/GenosResearchGroup/FlautaSolo/blob/master/analysis/core.py

— Reply to this email directly or view it on GitHubhttps://github.com/GenosResearchGroup/FlautaSolo/issues/112#issuecomment-28058882 .

msampaio commented 10 years ago

@drakoor, você está no caminho certo. Por alguma razão o Copy não sincronizou a alteração que fiz na máquina do Genos. Eu inseri uma docstring em sua função triades_maiores. Veja como fiz. Há uma descrição do objetivo da função e um exemplo de como funciona. Para treinar, recomendo que documente todas as suas funções, ainda que sejam óbvias demais. Essa documentação é uma das principais atividades do seu plano de trabalho.

msampaio commented 10 years ago

@drakoor, qual o estado desta tarefa? Observei que a última atualização do arquivo ocorreu há 2 semanas.

drakoor commented 10 years ago

há algo mais a calcular?? pensei q os únicos problemas eram a falta de referência das formulas a respeito de suas funções. Agora estou tentando me familiarizar com as declarações de estruturas, pois apesar de ter feito algumas funções com elas ainda não me sinto seguro em manuseá-las.

2013/11/24 Marcos da Silva Sampaio notifications@github.com

@drakoor https://github.com/drakoor, qual o estado desta tarefa? Observei que a última atualização do arquivo ocorreu há 2 semanas.

— Reply to this email directly or view it on GitHubhttps://github.com/GenosResearchGroup/FlautaSolo/issues/112#issuecomment-29155704 .

msampaio commented 10 years ago

@drakoor, observe na descrição desta tarefa que há quatro funções para programar. Ainda na descrição há um exemplo de como a função deve ser chamada.

drakoor commented 10 years ago

Professor estou tendo problemas, o codigo editado no genos não está rodando, por isso criei um outro arquivo chamado experimento2, já postei ele no copy mas não estou conseguindo realizar algumas funções. O idlex a tela preta não consegui utilisa-la porém surge uma outra janela semelhante ao idle mas com a numeração de linhas.

Em 27 de novembro de 2013 04:58, Marcos da Silva Sampaio < notifications@github.com> escreveu:

@drakoor https://github.com/drakoor, observe na descrição desta tarefa que há quatro funções para programar. Ainda na descrição há um exemplo de como a função deve ser chamada.

— Reply to this email directly or view it on GitHubhttps://github.com/GenosResearchGroup/FlautaSolo/issues/112#issuecomment-29382350 .

msampaio commented 10 years ago

Sobre o idlex, você olhou o arquivo README e os arquivos demo?

Observe o seu código logo abaixo. Você está usando docstrings como comentários. Docstrings servem para documentar uma função. Você não usou para documentar a única função do arquivo, mod12. Se quer criar comentários locais, use #.

def mod12(notas):
    return notas %12
"""Amostragem de notas, onde cada nota da escala é um numero correspondente neste
   conjunto"""
notas = range(12)
print 'notas:', notas

"""Criação de conjunto de notas derivado do primeiro conjunto"""
conjunto = [2, 4, 7, 8, 11]
print 'conjunto:', conjunto

retrogradar = conjunto.reverse()
print retrogradar

"""Esta formula faz invercao """
inversas = input('Nota: ')
eixo = input('Eixo da inversao: ')
i = 2 * eixo - inversas
print 'inversoes de notas:', i

Por que você não seguiu o modelo do arquivo que criamos na última quinta-feira? Por exemplo, havíamos definido uma função para retrogradação, mas ao invés de usá-la você usou isso no seu código:

retrogradar = conjunto.reverse()
print retrogradar

Conforme falei na quinta-feira, recomendo que defina uma função para cada ação. Por exemplo, ao invés de:

i = 2 * eixo - inversas

Faça algo como:

def inverter_nota(nota, eixo):
    """Retorna a inversão da nota sobre um eixo dado.
    >>> inverter_nota(2, 5)
    8
    """

    return 2 * eixo - nota
drakoor commented 10 years ago

Ai professor o print que o senhor pediu, este outro arquivo eu fiz para testar a formula que o senhor tinha me passado da inversão, já que o arquivo editado no genos não está rodando de jeito nenhum. Quando abro o idlex fica assim: como a primeira imagem E quando peço para roda-lo apertando F5 fica como na segunda imagem.

Em 3 de dezembro de 2013 13:44, Marcos da Silva Sampaio < notifications@github.com> escreveu:

Sobre o idlex, você olhou o arquivo README e os arquivos demo?

Observe o seu código logo abaixo. Você está usando docstrings como comentários. Docstrings servem para documentar uma função. Você não usou para documentar a única função do arquivo, mod12. Se quer criar comentários locais, use #.

def mod12(notas): return notas %12 """Amostragem de notas, onde cada nota da escala é um numero correspondente neste conjunto""" notas = range(12) print 'notas:', notas

"""Criação de conjunto de notas derivado do primeiro conjunto""" conjunto = [2, 4, 7, 8, 11] print 'conjunto:', conjunto

retrogradar = conjunto.reverse() print retrogradar

"""Esta formula faz invercao """ inversas = input('Nota: ') eixo = input('Eixo da inversao: ') i = 2 * eixo - inversas print 'inversoes de notas:', i

Por que você não seguiu o modelo do arquivo que criamos na última quinta-feira? Por exemplo, havíamos definido uma função para retrogradação, mas ao invés de usá-la você usou isso no seu código:

retrogradar = conjunto.reverse() print retrogradar

Conforme falei na quinta-feira, recomendo que defina uma função para cada ação. Por exemplo, ao invés de:

i = 2 * eixo - inversas

Faça algo como:

def inverter_nota(nota, eixo): """Retorna a inversão da nota sobre um eixo dado.

inverter_nota(2, 5) 8 """

return 2 * eixo - nota

— Reply to this email directly or view it on GitHubhttps://github.com/GenosResearchGroup/FlautaSolo/issues/112#issuecomment-29754601 .

msampaio commented 10 years ago

@drakoor, vamos usar esta tarefa para tirar as dúvidas específicas da calculadora musical. Responda o email que enviei sobre o idlex com os screenshots que você fez, pois as imagens não chegaram por aqui.

drakoor commented 10 years ago

Aqui as imagens professor.

Em 4 de dezembro de 2013 05:20, Marcos da Silva Sampaio < notifications@github.com> escreveu:

@drakoor https://github.com/drakoor, vamos usar esta tarefa para tirar as dúvidas específicas da calculadora musical. Responda o email que enviei sobre o idlex com os screenshots que você fez, pois as imagens não chegaram por aqui.

— Reply to this email directly or view it on GitHubhttps://github.com/GenosResearchGroup/FlautaSolo/issues/112#issuecomment-29803677 .

msampaio commented 10 years ago

@drakoor, acho que nao fui claro na outra mensagem. Vamos usar esta conversa no GitHub para tratar apenas da calculadora musical. Procure o email que enviei para voce e Alisson com o link do idlex e envie as imagens em resposta por la.

drakoor commented 10 years ago

Professor acho que eu que não fui muito claro, quando eu instalei o idlex não tive nenhum problema não surgiu nenhuma mensagem de erro, nem mesmo quando eu abri o arquivo da calculadora o fato é que o arquivo da calculadora não está rodando nem mesmo sem o idlex por essa razão fiz aquele arquivo experiência 2 para poder testar as informações que o senhor me passou a respeito da calculadora

drakoor commented 10 years ago

professor tirei um print da tela com o programa que eu baixei para utilizar o Ipython, ele se chama canopy. Eu pedi para importar o diogo05 e o resultado foi esse.

msampaio commented 10 years ago

@drakoor, agora que resolveu o problema com o interpretador Python no Windows, qual o estado da calculadora? Recomendo que crie um subdiretório 'diogo' na pasta Code, no Copy e renomeie o seu arquivo 'diogo05' para 'calculadora'. Vamos finalizar logo essa tarefa.

drakoor commented 10 years ago

professor já fiz a pasta com meu nome em código, mas estou tendo dificuldades na hora de invocar as funções, a mensagem que surge é q as funções não foram definidas. Como na imagem em anexo.

Em 15 de dezembro de 2013 04:00, Marcos da Silva Sampaio < notifications@github.com> escreveu:

@drakoor https://github.com/drakoor, agora que resolveu o problema com o interpretador Python no Windows, qual o estado da calculadora? Recomendo que crie um subdiretório 'diogo' na pasta Code, no Copy e renomeie o seu arquivo 'diogo05' para 'calculadora'. Vamos finalizar logo essa tarefa.

— Reply to this email directly or view it on GitHubhttps://github.com/GenosResearchGroup/FlautaSolo/issues/112#issuecomment-30603098 .

msampaio commented 10 years ago

Ao invés de copiar a imagem, copie o texto e cole aqui. O github nao anexa mensagens enviadas por email.

On Tuesday, December 17, 2013, Diogo Cerqueira wrote:

professor já fiz a pasta com meu nome em código, mas estou tendo dificuldades na hora de invocar as funções, a mensagem que surge é q as funções não foram definidas. Como na imagem em anexo.

Em 15 de dezembro de 2013 04:00, Marcos da Silva Sampaio < notifications@github.com <javascript:_e({}, 'cvml', 'notifications@github.com');>> escreveu:

@drakoor https://github.com/drakoor, agora que resolveu o problema com o interpretador Python no Windows, qual o estado da calculadora? Recomendo que crie um subdiretório 'diogo' na pasta Code, no Copy e renomeie o seu arquivo 'diogo05' para 'calculadora'. Vamos finalizar logo essa tarefa.

— Reply to this email directly or view it on GitHub< https://github.com/GenosResearchGroup/FlautaSolo/issues/112#issuecomment-30603098>

.

— Reply to this email directly or view it on GitHubhttps://github.com/GenosResearchGroup/FlautaSolo/issues/112#issuecomment-30810067 .

Sent from my Mobile

drakoor commented 10 years ago

Professor a mensagem que aparece quando tento testar uma função é essa:

retrogradar([5, 3, 8])

NameError Traceback (most recent call last)

in () ----> 1 retrogradar([5, 3, 8]) NameError: name 'retrogradar' is not defined Como assim não está definida??? Ela está lá no código, por conta disso nem estou usando esse interpretador para testar as funções, estou fazendo pelo modo como o senhor me mostrou no IDLE
msampaio commented 10 years ago

@drakoor, você precisa importar o módulo calculadora e em seguida rodar as funções do módulo:

import calculadora
calculadora.retrogradar([5, 3, 8])

Para maiores informações procure por módulos e pacotes no Python.

drakoor commented 10 years ago

Postei o arquivo novo. Com as funções retrogradar, transpor e inverter.

msampaio commented 10 years ago

Ótimo. Veja como calcular o vetor intervalar no tutorial e tese de Bordini.

  1. http://www.clem.ufba.br/bordini/tutor/teoria/teor.htm
  2. https://repositorio.ufba.br/ri/handle/ri/9124
drakoor commented 10 years ago

Professor não há uma fonte mais detalhada a respeito, o conteúdo é muito vago e resumido. Consegui entender como um conjunto de notas [7, 1, 11, 5] possui um conjunto de intervalos 6, 2, 6. Mas como este resulta em um vetor intervalar 020202 ?

2014/1/7 Marcos da Silva Sampaio notifications@github.com

Ótimo. Veja como calcular o vetor intervalar no tutorial e tese de Bordini.

  1. http://www.clem.ufba.br/bordini/tutor/teoria/teor.htm
  2. https://repositorio.ufba.br/ri/handle/ri/9124

— Reply to this email directly or view it on GitHubhttps://github.com/GenosResearchGroup/FlautaSolo/issues/112#issuecomment-31788264 .

msampaio commented 10 years ago

@drakoor, pensei melhor e resolvi deixar o cálculo de vetor intervalar para outra tarefa. Eu observei que há um passo intermediário para calcular. Apenas para você saber, o vetor intervalar contém 6 números. Cada um representa o número de intervalos dentro de um dado conjunto. Por exemplo, o conjunto de notas [0, 2, 4] tem um vetor 020100. Não há intervalos de segunda menor, terça menor, quarta justa nem quarta aumentada (os valores 0). Há 2 intervalos de segunda maior (entre 0-2 e 2-4) e um intervalo de terça maior (entre 0-4). Cada classe de conjunto tem um vetor específico. Ele seria equivalente, em música tonal, a dizer que um acorde é maior, menor, aumentado, etc.