← Navalha 2
Navalha 2
RELATÓRIO GERAL

Navalha 2
Migração paralela para JUCE/C++

Conceitos, histórico, arquitetura, funcionalidades, fluxo completo, procedimentos realizados, validações e direção de interface.

Referência funcional: Navalha 2 v0.28.1

Referência técnica: workspace NAVALHA2 e navalha_app_project_v2_v0.28.1.zip

Data do relatório: 30 de julho de 2026

Estado estimado da transposição: 98,5%, sem substituir o runtime original

Sumário executivo

O Navalha 2 é um instrumento de performance e composição baseado em seleção, corte e recombinação de materiais sonoros. Seu fluxo enfatiza a relação entre preparação do áudio e decisão performática: carregar fontes, definir regiões, criar slices, organizar padrões, transformar o material, tocar, gravar e devolver a gravação ao próprio instrumento.

A versão v0.28.1 distribui responsabilidades entre interface HTML/CSS/JavaScript, bridge Python, patches Pure Data e WebAudio. A migração paralela busca concentrar áudio, tempo musical, gravação, projeto e render offline em um núcleo C++ determinístico, mantendo a aplicação atual como referência até que a paridade esteja demonstrada.

Princípio de segurança: durante toda a migração, as pastas app, bridge e core foram preservadas. O desenvolvimento ocorreu dentro de juce, com builds limitados a dois jobs, temporários removidos e auditorias periódicas de espaço em disco.
DimensãoEstado
Núcleo musical e DSP C++Implementado e coberto por regressões
Standalone JUCE LinuxCompila, abre e reproduz áudio real
Projetos v1/v2 e portable packCodec, migração, inspeção e render implementados
Gravação e MASTERImplementados; validações objetivas e gravação real realizadas
Interface finalEm reavaliação conjunta; nenhum layout foi declarado definitivo
Aprovação de substituiçãoDepende de testes humanos finais, hardware, dois monitores e decisão de licença

1. Conceito do instrumento

1.1 Material sonoro como matéria de performance

O Navalha não trata o áudio apenas como uma faixa linear. Cada fonte pode ser delimitada por uma região e repartida em unidades performáveis. Essas unidades podem ser selecionadas, alternadas entre SOURCE A e SOURCE B, reordenadas, protegidas em MEMORY e submetidas a transformações controladas.

1.2 Continuidade entre criação e registro

Um dos conceitos centrais é o ciclo:

performar → gravar → recarregar → cortar → recombinar → performar novamente

A gravação não é somente uma saída final. Ela pode tornar-se novo material, criando uma prática iterativa de composição e resample.

1.3 Agência humana e assistência

O Assisted Performer foi projetado como coparticipante limitado. O humano mantém autoridade sobre PLAY, STOP e REC. A automação toma decisões delimitadas por frase, seed, faixa de BPM, vocabulário permitido e intensidade, podendo atuar sobre padrões, região, cortes, pitch, fragmentos e mix. MEMORY, KEEP, RESTORE e locks preservam espaços de decisão humana.

1.4 Identidade Arcade

A identidade aprovada combina superfícies quase pretas, amarelo para ação e seleção, aço para controles neutros e vermelho reservado à gravação e erros. O mascote original, o wordmark pixelado branco/amarelo e os ícones aprovados permanecem ativos. A paleta documentada usa, entre outras, as cores #080a0a, #101313, #171b1b, #ffd84a, #fff08a, #78828a e #e01820.

2. Histórico resumido

Período/versãoEvolução principal
Origem, 2009NAVALHA Arcade, associado a Glerm Soares; instrumento baseado em Pure Data e performance com fragmentos.
Reestruturação 2026Interface web, bridge Python, organização modular dos patches, projetos, biblioteca, tutorial e gravação.
v0.15–v0.16Layout desktop fixo: biblioteca/log à esquerda; PREPARE, waveform e PERFORM no corpo; TIME/PITCH/OUTPUT/SLICES na base.
v0.17.0Project v2 e Portable Pack v2 com SOURCE A/B independentes, slices, padrões, MEMORY, TRACE e estado performático.
v0.17.2–v0.17.3REC simplificado, identidade aprovada, histórico de takes e ciclo TAKE → SOURCE A/B.
v0.17.4–v0.17.5Identidade NAVALHA Arcade e STOP global, encerrando sequencer, players, tarefas e loops pendentes.
v0.17.6Histórico persistente de gravações e reconstrução segura dos takes.
v0.18+Assisted Performer, autonomia delimitada, FORM, TRACE, mixer, vozes e direção de álbum/masterização.
v0.28.1Referência funcional mais recente, preservada no ZIP canônico indicado pelo usuário.
Migração JUCE/C++Implementação paralela de motor, ferramentas, standalone e validações, sem apagar o sistema anterior.

3. Arquitetura de referência v0.28.1

HTML/CSS/JavaScript ├─ interface, waveform, navegação e automação ├─ WebAudio complementar/MASTER └─ HTTP e eventos ↓ Bridge Python ├─ arquivos, cache, projetos, metadados e histórico └─ UDP/FUDI ↓ Pure Data Vanilla └─ playback, slices, sequencer, pitch, mixer, vozes e REC

Essa arquitetura tornou possível evoluir rapidamente, mas possui vários pontos de sincronização: navegador, servidor local, bridge, porta UDP, patches e dispositivo de áudio. A migração não é uma tradução mecânica; ela exige reproduzir regras musicais, temporais e sonoras.

4. Arquitetura JUCE/C++ proposta

Interface JUCE nativa ↓ comandos SPSC sem locks SessionModel + AudioEngine C++ ├─ sequencer sample-accurate ├─ players/slices A e B ├─ gestos, FORM, TRACE e Assisted ├─ mixer, Heritage Pitch e MASTER ├─ telemetria atômica └─ FIFO pós-MASTER ↓ dispositivo de áudio + writer WAV em thread separada O mesmo núcleo atende render offline, testes e ferramentas CLI.

O callback não acessa disco, não processa JSON, não espera locks e não faz alocações por amostra. Estruturas de capacidade fixa, buffers imutáveis, comandos enfileirados e telemetria atômica protegem o caminho realtime.

5. Funcionalidades transpostas

5.1 Fontes, regiões e slices

5.2 Sequencer e performance

5.3 FORM, TRACE e Assisted

5.4 Caminho de áudio

SOURCE A/B players → SOURCE MIX → Heritage Pitch → MASTER → recorder/output

5.5 Projeto, portable e gravação

5.6 TRACK MASTER e ALBUM MASTER

6. Fluxo completo do usuário

  1. Preparar: abrir SOURCE A e/ou B, observar waveform, escolher região, dividir ou criar cortes.
  2. Programar: selecionar pattern e preencher oito passos com slices A/B ou GAP.
  3. Performar: escolher GRID/FREE/JITTER, ajustar BPM, disparar gestos, pitch, TRACE e transformações.
  4. Dirigir: opcionalmente usar FORM e Assisted dentro de limites definidos pelo músico.
  5. Misturar: ajustar level, pan, width, balance, mute/solo, vozes e MASTER.
  6. Gravar: escolher formato, iniciar REC pós-MASTER, acompanhar frames/drops e finalizar.
  7. Persistir: salvar Project v2 leve ou Portable Pack com áudio associado.
  8. Reprocessar: carregar um take como nova fonte e reiniciar o ciclo de corte e recombinação.
  9. Finalizar: analisar/renderizar TRACK MASTER e organizar ALBUM MASTER quando aplicável.

7. Procedimentos realizados na migração

7.1 Preservação e estratégia

7.2 Construção incremental

A transposição começou pelas estruturas sem dependência gráfica: slices, padrões, sequencer, mixer, players e render offline. Em seguida foram integrados AudioEngine, filas realtime, gravação, projetos, portable packs, MASTER, FORM, TRACE, Assisted e, por último, o shell JUCE nativo.

7.3 Compatibilidade

Foram implementados codecs JSON próprios com limites de tamanho e profundidade, migração v1, modelo v2, referências de áudio, portable ZIP e ferramentas read-only. O inspetor de projetos prova que a serialização canônica v2 é idempotente e rejeita arquivos truncados ou versões futuras não suportadas.

7.4 Ferramentas criadas

FerramentaFinalidade
navalha_compare_wavRMS, erro, correlação, SNR e compensação de latência.
navalha_render_portablePortable ZIP → PCM24 offline.
navalha_render_pitch_fixtureFixture para Heritage Pitch.
navalha_analyze_masterMétricas objetivas de um WAV.
navalha_render_masterTRACK MASTER PCM24 atômico.
navalha_inspect_albumValidação e planejamento de manifesto.
navalha_render_albumBatch ALBUM MASTER.
navalha_inspect_projectInspeção read-only de Project v1/v2.

8. Validações executadas

ValidaçãoResultado
Build standalone JUCE LinuxAprovado
CTest completo9/9 testes aprovados
Stress DSP combinado30 s recorrentes; soak virtual de 600 s em blocos 64/511, resultado idêntico
SanitizersAddressSanitizer e UndefinedBehaviorSanitizer sem achados
LeakSanitizerNão contabilizado: incompatível com o supervisor ptrace atual
Gravação virtualPCM24, 60 s, 2.880.000 frames, zero drops, WAV reaberto e removido
MASTER C++ × WebAudio353.708 frames; 0,176 dB peak, 0,136 LUFS e 0,0009 de diferença de correlação
Project v1/v2Fixtures, migração, idempotência e rejeição adversarial aprovadas
Teste gráfico realAplicativo abriu; SOURCE carregou; waveform e áudio funcionaram
Transporte/timingPLAY/STOP, GRID/FREE/JITTER testados pelo usuário sem anomalia relatada
Mixer A/BBalance, pan, width, mute e solo testados pelo usuário
Heritage Pitch operacionalTeste auditivo de operação relatado como normal
REC físicoPCM24 estéreo, 44,1 kHz, 61,2 s, 2.698.752 frames

A gravação real analisada atingiu 0 dBFS repetidamente. O arquivo estava estruturalmente correto, mas indicou necessidade de novo passe com mais headroom. Isso não invalida o writer; permanece uma questão de ganho, monitoramento e decisão de proteção/limiter no fluxo performático.

9. Interface e layout

O layout ainda não é definitivo. A v0.28.1 é a referência funcional; a v0.17.5 é uma referência particularmente clara de hierarquia: biblioteca e log à esquerda, waveform grande, PREPARE, PERFORM, gestos e quatro cartões inferiores. O mockup mais recente mantém essa superfície principal e desloca MIX, FORM, ASSISTED e MASTER para navegação complementar.

Diretrizes acordadas:

10. Segurança, armazenamento e integridade

11. Pendências e critérios de substituição

  1. concluir a reavaliação conjunta do layout;
  2. comparação auditiva formal A/B do Heritage Pitch contra Pure Data;
  3. comparação auditiva cega do MASTER contra WebAudio;
  4. gravação física prolongada sem xruns e com headroom adequado;
  5. abrir, salvar e reabrir projetos reais do usuário v1/v2;
  6. teste real em dois monitores com uma única autoridade de áudio/estado;
  7. decisão registrada sobre AGPLv3/licença comercial e distribuição JUCE;
  8. empacotamento e instalação final para os sistemas alvo.
A estimativa de 98,5% representa implementação técnica aproximada, não autorização para substituir a v0.28.1. A referência atual deve continuar disponível até que os critérios humanos, operacionais e jurídicos sejam concluídos.

12. Próxima etapa recomendada

Produzir duas ou três variações de layout de baixa ambiguidade, avaliá-las com o usuário em 1920×1080 e somente então consolidar a interface JUCE. Em paralelo, executar os testes auditivos formais e usar um projeto real do usuário para encerrar a validação de persistência.

13. Referências do workspace

Documento vivo. Deve ser atualizado após cada decisão conjunta de layout e após os testes finais de hardware, persistência e audição.