Conceitos, histórico, arquitetura, funcionalidades, fluxo completo, procedimentos realizados, validações e direção de interface.
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.
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ão | Estado |
|---|---|
| Núcleo musical e DSP C++ | Implementado e coberto por regressões |
| Standalone JUCE Linux | Compila, abre e reproduz áudio real |
| Projetos v1/v2 e portable pack | Codec, migração, inspeção e render implementados |
| Gravação e MASTER | Implementados; validações objetivas e gravação real realizadas |
| Interface final | Em reavaliação conjunta; nenhum layout foi declarado definitivo |
| Aprovação de substituição | Depende de testes humanos finais, hardware, dois monitores e decisão de licença |
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.
Um dos conceitos centrais é o ciclo:
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.
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.
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.
| Período/versão | Evolução principal |
|---|---|
| Origem, 2009 | NAVALHA Arcade, associado a Glerm Soares; instrumento baseado em Pure Data e performance com fragmentos. |
| Reestruturação 2026 | Interface web, bridge Python, organização modular dos patches, projetos, biblioteca, tutorial e gravação. |
| v0.15–v0.16 | Layout desktop fixo: biblioteca/log à esquerda; PREPARE, waveform e PERFORM no corpo; TIME/PITCH/OUTPUT/SLICES na base. |
| v0.17.0 | Project v2 e Portable Pack v2 com SOURCE A/B independentes, slices, padrões, MEMORY, TRACE e estado performático. |
| v0.17.2–v0.17.3 | REC simplificado, identidade aprovada, histórico de takes e ciclo TAKE → SOURCE A/B. |
| v0.17.4–v0.17.5 | Identidade NAVALHA Arcade e STOP global, encerrando sequencer, players, tarefas e loops pendentes. |
| v0.17.6 | Histó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.1 | Referê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. |
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.
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.
juce;/tmp e removidos.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.
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.
| Ferramenta | Finalidade |
|---|---|
navalha_compare_wav | RMS, erro, correlação, SNR e compensação de latência. |
navalha_render_portable | Portable ZIP → PCM24 offline. |
navalha_render_pitch_fixture | Fixture para Heritage Pitch. |
navalha_analyze_master | Métricas objetivas de um WAV. |
navalha_render_master | TRACK MASTER PCM24 atômico. |
navalha_inspect_album | Validação e planejamento de manifesto. |
navalha_render_album | Batch ALBUM MASTER. |
navalha_inspect_project | Inspeção read-only de Project v1/v2. |
| Validação | Resultado |
|---|---|
| Build standalone JUCE Linux | Aprovado |
| CTest completo | 9/9 testes aprovados |
| Stress DSP combinado | 30 s recorrentes; soak virtual de 600 s em blocos 64/511, resultado idêntico |
| Sanitizers | AddressSanitizer e UndefinedBehaviorSanitizer sem achados |
| LeakSanitizer | Não contabilizado: incompatível com o supervisor ptrace atual |
| Gravação virtual | PCM24, 60 s, 2.880.000 frames, zero drops, WAV reaberto e removido |
| MASTER C++ × WebAudio | 353.708 frames; 0,176 dB peak, 0,136 LUFS e 0,0009 de diferença de correlação |
| Project v1/v2 | Fixtures, migração, idempotência e rejeição adversarial aprovadas |
| Teste gráfico real | Aplicativo abriu; SOURCE carregou; waveform e áudio funcionaram |
| Transporte/timing | PLAY/STOP, GRID/FREE/JITTER testados pelo usuário sem anomalia relatada |
| Mixer A/B | Balance, pan, width, mute e solo testados pelo usuário |
| Heritage Pitch operacional | Teste auditivo de operação relatado como normal |
| REC físico | PCM24 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.
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:
.partial;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.
ANALISE_MIGRACAO_JUCE_CPP.txtnavalha_app_project_v2_v0.28.1.zipdocs/DEVELOPMENT_LOG.mddocs/NAVALHA_ARCADE_v0.17.4.mddocs/FIXED_LAYOUT_v0.15.9.mddocs/STANDARD_LAYOUT_v0.16.0.mddocs/LAYOUT_PERFORMER_v0.19.0.mdjuce/README.mdjuce/docs/PARIDADE_V0281.mdjuce/docs/MASTER_OBJECTIVE_COMPARISON.mdjuce/docs/FINAL_ACCEPTANCE_CHECKLIST.mdDocumento 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.