corrigindo upload

This commit is contained in:
JotaChina committed 2026-04-04 12:42:42 -03:00
1 parent d2a68fa744
commit 1c37cc4b80
13 files changed
+6848492 -979754

No files matched your search

+11 -6
View File
@@ -1,3 +1,8 @@
---
### `manual.md`
```markdown
Documentação Técnica: Arquitetura e Implementação do MMPSearch & MMPCreator
1. Visão Geral da Arquitetura
O sistema foi projetado para resolver o desafio de catalogar, processar e permitir a colaboração em projetos musicais (formato LMMS) na web. A solução adota uma Arquitetura Híbrida Dinâmica-Estática:
@@ -24,14 +29,14 @@ A funcionalidade mais crítica para a dissertação é a capacidade de gerar áu
Ambiente Offscreen: O script configura a variável de ambiente QT_QPA_PLATFORM="offscreen". Isso engana o LMMS (que é uma aplicação gráfica Qt), permitindo que ele rode via linha de comando dentro do servidor Linux.
Renderização CLI: O áudio é gerado invocando o comando: lmms -r <input.mmp> -o <output.wav> -f wav.
Renderização CLI: O áudio é gerado invocando o comando: lmms -r <input.mmp> -o <output.ogg> -f ogg. (O formato OGG foi escolhido como padrão do pipeline assíncrono para otimizar transferência e armazenamento web).
Paralelismo: Utiliza-se a biblioteca multiprocessing para criar um pool de workers, permitindo que múltiplos projetos sejam renderizados simultaneamente, otimizando o uso da CPU.
4. Geração de Manifestos e Dados Estáticos
Para desacoplar o banco de dados da interface pública, o sistema utiliza o script generate_manifest.py.
Indexação: O script varre os diretórios de mídia (samples, mmp, wav) e gera arquivos JSON e YAML.
Indexação: O script varre os diretórios de mídia (samples, mmp, wav/ogg) e gera arquivos JSON e YAML.
Integração com Jekyll: Estes arquivos YAML são salvos diretamente na pasta _data do Jekyll, servindo como fonte de verdade para a geração das páginas HTML estáticas.
@@ -61,12 +66,12 @@ HEALTHY: O caminho no XML bate com o servidor.
RECOVERED: O caminho original (ex: C:/Users/...) não existe, mas o sistema encontrou o arquivo pelo nome e remapeou o link automaticamente.
BROKEN: Arquivo inexistente; o sistema marca para alerta.
BROKEN: Arquivo inexistente, o sistema marca para alerta.
7. Frontend: Visualização e Sequenciador
A interface (projetos.html) demonstra como dados complexos podem ser visualizados sem JavaScript pesado.
Sequenciador CSS: A grade de bateria (Step Sequencer) é renderizada usando lógica de template Liquid e CSS puro. O template itera sobre o array de steps ({% for step in patterns %}) e aplica classes de cor condicionalmente.
Sequenciador CSS: A grade de bateria (Step Sequencer) é renderizada usando lógica de template Liquid e CSS puro. O template itera sobre o array de steps ({% raw %}{% for step in patterns %}{% endraw %}) e aplica classes de cor condicionalmente.
Interatividade Híbrida:
@@ -107,8 +112,8 @@ Upload: Usuário envia .mmpz via API Flask (Porta 33002).
Trigger: Flask salva o arquivo e dispara a thread de processamento.
Processamento: Python descompacta o projeto, renderiza o .wav (Headless LMMS) e extrai o .json.
Processamento: Python descompacta o projeto, renderiza o .ogg (Headless LMMS) e extrai o .json.
Build: Python invoca bundle exec jekyll build para regenerar o HTML.
Serviço: Nginx serve o novo HTML estático; Node.js aguarda conexões para edição colaborativa.
Serviço: Serve o novo HTML estático, Node.js aguarda conexões para edição colaborativa.