feat: Add comprehensive implementation example for Kurzweil SP76II with velocity sensitivity curves#18
Conversation
|
Hi Daniel, I hope you're having a blessed week. Just a reminder to take a look at this PR when you have some time. I'm very excited about the possibility of adding this Kurzweil implementation example to the project. I'm available to make any changes or provide more information if needed. Thank you for your time and consideration! |
|
Hi, Emerson! First, I really appreciate your submision. Actions like yours are very important. For that reason, I let to work on this in a moment that I have total focus, what wasn't possible yet. Anyways, as you put yourself available to make changes, I'll put some comments now. :-) |
|
Hi Daniel, thanks for the feedback! |
|
Congratulations on the PR, @seiler-emerson. The implementation and modular structure look excellent. The addition of velocity curves adds significant value, especially for those seeking a more realistic key response, The documentation is also very clear, making it much easier for anyone wanting to use this as a base for other keyboards. Great contribution! |
|
Olá, Emerson! Em bom português, enfim, parei para fazer a refatoração que o código merece. Após suas adições, se fez necessário criar o conceito de "models", onde cada modelo de teclado contém apenas o que é referente ao mesmo, como número de teclas, seu padrão de pinos e a devida documentação. |
|
Criei alguns testes unitários juntamente com um mockup do Arduino que dão segurança após refatorações com indisponibilidade do hardware. |
|
Estou trabalhando na implementação dos potenciômetros. |
|
Olá Daniel. Obrigado pelo retorno. |
|
Além de estar fazendo testes unitários que garantam o correto funcionamento, também pretendo comprar o material necessário para validar tudo na prática. Tenho um M-Audio Keystation 88 cuja placa controladora já está nas últimas (corrosão que causa comportamentos aleatórios). É o momento certo de trocar por um Arduino Mega. 🙂 |
|
O Keystation é o candidato perfeito para essa nova fase do projeto. Inclusive, há plugins muito interessantes hoje em dia para testar, como o Numa Player 2. Sobre os testes, eu não tenho mais o teclado do projeto nem o Arduino Mega comigo, mas vou pegá-los emprestados para realizar as validações que você pediu. Além disso, tenho as teclas de um Axiom Pro e um conjunto Fatar TP40 (88 teclas). Meu plano para o TP40 é usar um STM32 para testar o Midibox, pois já tenho as peças aqui. Para o Axiom, vou esperar um momento mais oportuno para comprar o Arduino Mega (com 16u2), pois os preços estão um pouco elevados e, como estou em fase de recolocação profissional, estou priorizando o controle de gastos. |
|
Fiz a implementação inicial dos potenciômetros. |
|
Como as funcionalidades estão agora minimamente cobertas por testes unitários considero que está bom o suficiente para fazer o merge na linha principal. Caso encontremos bugs, sigamos o fluxo de novos pull requests. |
|
Fiz um teste preliminar, sem os potenciômetros, está funcionando. Entretanto, a resposta às curvas não ficou tão suave quanto antes. Vou investigar melhor o que está causando isso. |
|
Obrigado pela aprovação do PR 🙏🏼 |
|
Talvez possamos regerar as curvas. Vou tentar plotar elas para investigar. |
|
Emerson, tente o código atualizado. Atenção ao valor máximo da velocidade, que deve ficar na faixa de 20 a 30 milisegundos para um bom resultado. |
|
Obrigado Daniel, estou aguardando meu arduino chegar, está em transporte. Em breve lhe retorno. |
Hi there!
First of all, thank you for this amazing project! It was the foundation for my own MIDI controller and a great source of learning.
I've just finished a implementation for my Kurzweil SP76II keyboard and wanted to contribute it back to the community. To keep things clean and non-invasive, I've placed all my work inside a dedicated folder (kurzweil_sp76ii).
This contribution includes:
A refactored, modular version of the scanner code.
Implementation of 4 selectable velocity sensitivity curves.
A detailed, step-by-step README.md file inside the folder, explaining the entire process for this keyboard.
The only change to the root of the project is a small addition to the main README.md, adding a new "Community Implementations" section that points to this new implementation example. I believe this can be a valuable resource for other users, just like Leandro Meucchi's PDF was.
Thank you for your time and consideration. I'm looking forward to your feedback!
Best regards,
Emerson Seiler