Desafio
Crie um teclado GUI com o mínimo de caracteres possível.
Exemplo
Como essa foi uma tarefa em um dos meus cursos, não consigo mostrar o código fonte. No entanto, aqui está uma captura de tela do meu teclado.
Neste exemplo, minhas teclas eram do tipo JButton
e usei um Midi Synthesizer para produzir o som (com os valores padrão do envelope ADSR).
Regras
- Você tem permissão para usar bibliotecas externas padrão.
- Seja criativo com o seu som. Você pode usar 8 bits, uma cítara, etc.
- Por uma questão de simplicidade, você pode ter cinco chaves; preto e branco, de C a E (as cinco primeiras teclas do meu teclado).
- Mais importante ... mostre seu trabalho!
AVISO : Dependendo do idioma em que você escolher trabalhar, essa pode ser uma tarefa bastante grande.
Esta é a minha primeira pergunta sobre o SE Code Golf. Se algo não estiver claro, solicite mais detalhes.
EDIT : A data de vencimento para este desafio será 22/09/12. Se você postar uma resposta após essa data, examinarei-a independentemente (e possivelmente a marque com +1).
Respostas:
Mathematica
319 259255Editar: As teclas agora pressionam (como botões) quando clicadas.
Isso tocará as notas do piano de cauda {"C", "C #", "D", "D #", "E"}, onde "C" é o meio C.
z[n_]
toca a nota.O teclado pode ser estendido para 18 teclas usando menos que o dobro dos caracteres:
fonte
w = {67, 300}
obter o seu resultado; alguma idéia do porquê da diferença? Além disso, posso editar esse código para reduzi-lo, se eu puder?w = {67,300}
funciona bem na versão 9, portanto, se você quiser alterá-lo ou, nesse caso, encurtar qualquer código, vá em frente. O ajuste do tamanho do botão foi um sucesso ou um fracasso. Coisas estranhas aconteceram por razões que não posso explicar. (Por exemplo, a adição de mais botões afeta as proporções dos botões originais.) #Página da Web (840/796 caracteres)
>>> Comece a jogar (o Internet Explorer não é suportado por vários motivos; o Google Chrome e o Opera funcionam melhor.)
Eu provavelmente poderia tornar isso um pouco mais curto, mas é um bom começo. A pontuação mais baixa é depois de substituir todas as ocorrências de
pelo caractere e remover a palavra-chavenew
, a última alteração quebrando a compatibilidade do Google Chrome.Salve esse código como um arquivo de texto com um nome terminado em .htm ou .html e abra-o no Chrome ou Opera (o Safari também pode funcionar) ou abra a página JSBin da solução para começar a reprodução. Reutilizei o cabeçalho do arquivo WAV da minha solução no problema de golfe com código Twinkle Twinkle Little Star .
Uma característica importante é que o som diminui com o passar do tempo. Para observar esse comportamento, tente manter uma tecla pressionada por alguns segundos e ouvir o que acontece.
Aqui está uma versão mais legível do código:
fonte
Groovy: 577 (703 com espaços em branco)
As 5 primeiras notas. Outros podem ser adicionados facilmente, é um pouco dinâmico.
Maldito balanço. Provavelmente com uma lib de swing seria melhor.
Reproduz através do JFugue.
No github: https://github.com/wpiasecki/glissando/blob/master/src/br/glissando/Piano.groovy
No groovy 2.0.2
fonte
R - 491 caracteres
Estou um pouco atrasado, mas acabei de ver este post ontem.
Funciona em um Mac, usa playRWave e pacotes
tuneR
esplancs
.Ungolfed:
fonte