Skip to content

Comments

Add MIDI Assignments module with UI mapping for buttons and potentiom…#22

Open
seiler-emerson wants to merge 1 commit intooxesoft:masterfrom
seiler-emerson:mappable_MIDI_controls_and_display
Open

Add MIDI Assignments module with UI mapping for buttons and potentiom…#22
seiler-emerson wants to merge 1 commit intooxesoft:masterfrom
seiler-emerson:mappable_MIDI_controls_and_display

Conversation

@seiler-emerson
Copy link
Contributor

Olá Daniel, tudo bom?
Fiz algumas implementações, referente a botões e controles midi para o projeto:

Módulo unificado de Atribuições MIDI que suporta botões atribuíveis e potenciômetros (somente CC), com armazenamento persistente e configuração da interface do usuário no dispositivo.

Pontos principais:

  • Adicionado módulo de Atribuições MIDI com indicadores de recursos independentes para botões e potenciômetros.

  • Implementado layout de EEPROM fixo com versionamento para persistir mapeamentos com segurança.

  • Adicionado suporte para potenciômetros analógicos atribuíveis.

  • Adicionado suporte para botões atribuíveis.

  • Atribuições padrão:

    • Botões: CH1, CC 20+, basicamente o primeiro botão inicia em 21 e os seguintes apenas incrementam
    • Potenciômetros: CH1, CC 30+, faixa de 0 a 127, , basicamente o primeiro potenciometro inicia em 31 e os seguintes apenas incrementam
  • Adicionada interface de usuário OLED para edição no dispositivo usando o encoder e o botão Voltar.

  • A interface de usuário suporta menu de Mapeamento MIDI, detecção dinâmica de novos botoes e potenciometros, alem de navegação por Retorno.

  • Sistema de menus para:

    • Edição de CH, CC e type (push/toggle) dos botões.
    • Edição de CH, CC e range dos potenciometros.
    • Opção Retorno como último item, sem numeração
    • Destaque dos itens selecionados com bloco de contraste
  • Isso permite o mapeamento completo de controles MIDI (CC) de forma independente, sem a necessidade de software externo.


Na sequência vou melhorar minha protoboard e arrumar alguns potenciometros. Você pode ver um exemplo neste video curto: https://www.youtube.com/watch?v=4T8W8HvfvdQ
Aproveitando a oportunidade testei o pitchbend e mod, parece funcionar bem, mas estou com flutuações por não ter o capacitor.

…eters

Unified MIDI Assignment module supporting assignable buttons and potentiometers (CC only), with persistent storage and on-device user interface configuration.

Key points:
- Added MIDI Assignment module with independent feature indicators for buttons and potentiometers.
- Implemented fixed EEPROM layout with versioning to securely persist mappings.
- Added support for assignable analog potentiometers.
- Added support for assignable buttons.
- Default assignments:
    - Buttons: CH1, CC 20+
    - Potentiometers: CH1, CC 30+, range 0 to 127
- Added OLED user interface for on-device editing using the encoder and the Back button.
- The user interface supports MIDI Mapping menu, dynamic detection of new buttons and potentiometers, and navigation via Return.
- Menu system for:
    - Editing CH, CC and button type (push/toggle).
    - Editing of CH, CC, and potentiometer range.
    - Return option as the last item, without numbering.
    - Highlighting of selected items with a contrast block.
    - This allows for complete mapping of MIDI controls (CC) independently, without the need for external software.
@oxesoft
Copy link
Owner

oxesoft commented Feb 18, 2026

Olá, Emerson! Ficou muito legal o seu projeto. Antes de integrarmos o código na linha de desenvolvimento principal, queria te pedir para fazer umas adequações. Criei o conceito de "extensions" para evitar, principalmente, que os arquivos comuns fiquem inchados e desorganizados, confundindo a maioria das pessoas que não vai usar as mesmas. Dessa forma as extenções ficam auto-contidas. Segue algumas oportunidades de melhoria:

  • adicionar alguma instrução de quais módulos instalar (como fiz com o DIO.h);
  • subir o código com o módulo desligado por padrão;
  • prefixar o midi_assignments.cpp com ui_ (o módulo em si não é UI mas só faz sentido junto da UI do ponto de vista de usabilidade);
  • procurar usar interrupts no handleButton() em vez do digitalRead(), evitando "gastar" ciclos desnecessariamente.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants