Uma interface web ultra-responsiva, de baixa latência e rica em recursos para controle remoto total da mesa digital Yamaha 01V96. Projetada para técnicos de som e músicos que buscam mobilidade, agilidade e automação avançada.
Important
Aviso de Migração: O core do servidor foi migrado para a linguagem Rust (server_rust), que agora é o foco principal do desenvolvimento visando performance máxima, estabilidade e baixíssima latência. O servidor legado em Node.js continua funcional, porém possui menos features e em breve será considerado obsoleto. O frontendcontinua em Vanilla JS.
- Versatilidade Total: Layouts otimizados para Desktop, Mobile Portrait (Vertical) e Mobile Landscape (Horizontal).
- Aparência Premium: Interface inspirada em hardwares topo de linha, com modo escuro, micro-animações e feedback visual em tempo real.
- Controle de Auxiliares: Transforme sua interface mobile em um mixer de monitoração completo.
- Modo Dual: Alterne entre o envio de um canal para todos os auxiliares ou o modo "Mix Master", onde você controla todos os envios de entrada para um único barramento usando faders verticais.
- Presets por Ambiente: O sistema detecta automaticamente o host/IP e carrega o preset de macros específico daquela igreja ou bar.
- Sincronização em Nuvem: Alterações feitas em um dispositivo são automaticamente salvas e enviadas para o GitHub (via integração Git automática), garantindo que suas macros estejam sempre seguras e atualizadas.
- Integração Lumikit: Controle sistemas de iluminação Lumikit diretamente da interface da mesa.
- Meters de Áudio: Visualização fluida dos níveis de entrada e saída (Master) via SysEx.
- Dynamics & EQ: Interface visual para ajuste de Gate, Compressores e Equalizador Paramétrico de 4 bandas com gráfico iterativo.
- Acesso Rápido: Gerencie conexões MIDI e abra a interface no navegador diretamente da bandeja do sistema Windows.
- Auto-Connect & Auto-Reload: Identificação automática da mesa Yamaha via USB e facilidade para reiniciar o servidor em segundo plano.
- Mini Server Tray: O servidor remoto de MIDI também possui sua própria aplicação de bandeja minimalista, permitindo reiniciar ou encerrar o serviço sem necessidade de terminal ativo.
- Conexão remota a mesa: Agora você pode rodar o mini-servidor
remote_midi_serverdo computador local onde a mesa está conectada fisicamente e o servidor principal rodar em outro computador, na mesma rede, ou até mesmo em uma VM. - Arquitetura Client-Server: Separação física entre o hardware da mesa e o servidor principal de aplicação. O mini-servidor
remote_midi_serverage como gateway de rede TCP (porta4200) e despacha pacotes SysEx e MIDI brutos. - Reconexão Robusta & Heartbeat: Mecanismo ativo de batimento cardíaco (Heartbeat) a cada 3 segundos com timeout para detecção imediata de quedas de rede e auto-recuperação sem criar conexões órfãs.
- Redundância: Suporte para definição de um array de IPs/Hosts (
remote_midi_networks) noconfig.jsonpara tentativa de conexão fallback sequencial.
- Backend Principal (Rust): Desenvolvido em Rust (
server_rust) utilizandotokiopara E/S assíncrona,axumpara servir páginas esocket.io-parserpara comunicação via WebSockets. - Remote MIDI Bridge (Rust): Mini-servidor portátil (
remote_midi_server) e crate comummidi_commonpara gerenciamento de pacotes MIDI/SysEx em rede TCP de alto desempenho. - Backend Legado (Node.js): Servidor Node.js com Express e Socket.io (opcional).
- MIDI Bridge Física:
midir(em Rust) eeasymidi(em Node.js) para interface direta com o driver USB da Yamaha. - Frontend: Vanilla JS (ES6+), CSS3 Moderno (Glassmorphism), HTML5 Semantic.
- Automação: Integração Git via subprocesso para o Ninja Sync.
O servidor em Rust oferece performance superior, baixíssima latência e é o foco principal do desenvolvimento atual. O projeto é estruturado em um Cargo Workspace unificado na raiz.
Pré-requisitos:
- Ambiente Rust instalado (necessário para compilar/rodar via Cargo).
- Driver MIDI da Yamaha instalado e a mesa conectada via USB.
- Git configurado (para as funções de Auto-Sync/Ninja Sync).
Você pode iniciar os servidores diretamente através dos atalhos na raiz do projeto (não requer terminal aberto):
- Servidor Principal (Local): Dê um duplo clique no atalho
server_rust.lnk. - Servidor MIDI Remoto: Dê um duplo clique no atalho
remote_midi_server.lnk.
Como o projeto utiliza um Workspace, você pode executar os comandos diretamente na raiz do projeto:
-
Inicie o servidor principal:
cargo run
(Ou especifique o pacote:
cargo run -p server_rust) -
Inicie o servidor de rede MIDI física (opcional): Se a mesa estiver conectada fisicamente em outro PC na mesma rede, execute no root:
cargo run -p remote_midi_server
Para compilar a versão final otimizada dos servidores:
- Via Script (Fácil): Execute o arquivo
cargo build release.batna raiz. - Via Terminal: Execute o comando abaixo no root do projeto:
cargo build --release
Os executáveis finais (server_rust.exe e remote_midi_server.exe) serão gerados em target/release/ e estarão prontos para serem iniciados pelos atalhos do root.
Para que o operador de áudio consiga usar o Microfone do seu próprio Celular/Tablet/PC para alimentar o gráfico do RTA (Real-Time Analyzer) direto na tela do Equalizador, os navegadores modernos exigem que o site seja acessado de forma totalmente segura (HTTPS). Sem o HTTPS, o navegador bloqueia a caixinha que pede permissão para acessar o microfone.
Para resolver isso de forma mágica, sem precisar abrir porta no roteador da igreja ou pagar por domínios, nós integramos a mesa ao Tailscale. Abaixo está o passo a passo detalhado, feito para que qualquer técnico consiga fazer:
Passo 1: Instalar o Tailscale no computador da mesa de som
- Acesse o site oficial tailscale.com e crie uma conta gratuita.
- Baixe o instalador para o Windows e instale como qualquer outro programa (basta ir clicando em "Next" ou "Avançar").
- Após instalar, procure pelo ícone do Tailscale escondido perto do relógio do Windows, no canto inferior direito da tela.
- Clique com o botão direito nesse ícone e escolha "Log in" para entrar com a conta que você acabou de criar.
Passo 2: Ativar o HTTPS no Painel do Tailscale (Apenas na primeira vez)
- Pelo computador, acesse sua conta no site do Tailscale pelo navegador.
- No menu que fica do lado esquerdo da tela, procure e clique na aba chamada DNS.
- Role a página para baixo até ver uma opção chamada MagicDNS e clique no botão para Ativar (Enable).
- Quase na mesma tela, um pouco mais abaixo, procure pela área HTTPS Certificates e clique também em Enable HTTPS. (Isso diz para a VPN que ela tem permissão de criar aquele cadeado verde de segurança para nós).
Passo 3: Abrir o Servidor da Mesa de Som
- Inicie o nosso servidor normalmente (clicando duas vezes no atalho ou rodando o terminal).
- O servidor é muito inteligente e vai perceber sozinho que o Tailscale está lá. Ele vai solicitar e configurar tudo sozinho nos bastidores.
- Fique de olho na tela preta (terminal), lá vai aparecer uma mensagem de sucesso, parecida com isso:
✅ [TAILSCALE] Tudo pronto! O Microfone esta liberado pelo link: https://... - A Mágica: O operador pode continuar acessando pelo endereço local normal da rede (exemplo:
http://192.168.0.X:3000). O nosso sistema vai entender a situação e a página vai "piscar" rapidamente, redirecionando o celular sozinho para o link seguro (https) do Tailscale! O celular vai pedir a permissão de usar o microfone e estará pronto para o uso.
O servidor legado em Node.js continua funcional para testes básicos, mas possui menos recursos e não recebe novas atualizações. Seus arquivos de código e configuração foram compactados para manter a raiz limpa.
Pré-requisitos:
- Node.js instalado.
- Driver MIDI da Yamaha instalado e a mesa conectada via USB.
- Git configurado (para as funções de Auto-Sync/Ninja Sync).
Passos para Execução:
- Extraia os arquivos do servidor legado:
Extraia todo o conteúdo do arquivo
_legacy_node_server.zipdiretamente na raiz do projeto (isso restaurará o arquivoserver.js, a pastasrc/, opackage.jsone opackage-lock.json). - Instale as dependências na raiz do projeto:
npm install
- Inicie o servidor legado:
npm start
- Refatoração do motor de Faders Mobile.
- Sistema de Multi-Presets com detecção de Host.
- Modo "Sends on Faders" para Mixes.
- Ninja Sync (Auto-Git push/pull).
- MIDI Bridge over Network: Bridge de rede TCP ultra-rápida (com heartbeat, reconnect dinâmico e tray autônomo).
- Implementação de Meters GPU-Accelerated (Curtain Rendering).
- Suporte a múltiplos usuários com controle de permissão (Admin/Musician).
- Fazer o meter do master funcionar.
- Sistema de cenas de nomes customizados.
- Atribuição de nome ao servidor/mesa.
- Patch de INSERTS nos canais.
- Tela de EFEITOS.
Qualquer contribuição que você fizer será muito apreciada.
Distribuído sob a licença MIT. Veja LICENSE para mais informações.
O módulo de integração DMX deste projeto utiliza o motor de tradução ArtNet para DMX baseado no projeto open-source ArtNetDMX de nt2ds. O executável incluído foi adaptado para suportar o fluxo de auto-recuperação e reset forçado de hardware FTDI integrados à interface da Yamaha 01V96.
O servidor Rust utiliza o codec Opus para compressão de áudio no sistema de monitoramento. Como a implementação pura em Rust — opus-rs v0.1.23 de jinti — utiliza instruções AVX/AVX2 que causam STATUS_ILLEGAL_INSTRUCTION em CPUs sem suporte (Celeron, Pentium, VMs), nós vendorizamos um fork em server_rust/vendor/opus-rs/.
O que foi alterado no fork:
- Todas as 26 chamadas a
is_x86_feature_detected!("avx"|"avx2"|"avx2,fma")foram prefixadas comfalse &&, forçando o caminho escalar (sem SIMD). As funções com#[target_feature]continuam compilando como código morto, mas nunca são executadas em tempo real. Cargo.tomlsimplificado (apenas a lib, sem testes/exemplos/benches).
Por que vendorizado: garantia de que qualquer máquina que clonar o projeto terá o fork disponível imediatamente, sem depender de registry externo ou de suporte AVX na CPU.
Licença: O código original do opus-rs é distribuído sob BSD-3-Clause (mantida no fork).
Desenvolvido por Rodrigo (Theadrill) usando Antigravity
Fazendo sua velha 01v96 soar como 'nova' 😉