corrigindo upload
This commit is contained in:
1 parent
d2a68fa744
commit
1c37cc4b80
13 files changed
+6848492
-979754
No files matched your search
@@ -1,4 +1,15 @@
|
||||
# mmpCreator - Documentação Técnica
|
||||
# mmpCreator & MMPSearch - Documentação Técnica
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ Arquitetura do Sistema
|
||||
|
||||
O sistema é um ecossistema completo para submissão, processamento e colaboração em projetos musicais (LMMS), estruturado nos seguintes pilares:
|
||||
|
||||
1. **Banco de Dados e Autenticação (Flask / SQLite):** Gestão segura de usuários (Bcrypt, Flask-Login), controle de propriedade de projetos e samples, além de um painel de administração (`Flask-Admin`).
|
||||
2. **Motor de Renderização Headless (Python):** Processamento assíncrono via biblioteca `multiprocessing`. Utiliza o binário do LMMS em modo `offscreen` para extrair dados do XML (`.mmp` / `.mmpz`) e exportar o áudio gerado nativamente no servidor.
|
||||
3. **MMPSearch (Catálogo Front-end):** Biblioteca estática gerada via Jekyll a partir de arquivos JSON/YAML, focada em leveza, indexação e busca de projetos com renderização via Web Audio API.
|
||||
4. **MMPCreator (Colaboração em Tempo Real):** Sequenciador interativo hospedado em Node.js. Utiliza WebSockets para sincronizar edições simultâneas (áudio e MIDI) entre múltiplos usuários em salas virtuais.
|
||||
|
||||
---
|
||||
|
||||
@@ -6,9 +17,7 @@
|
||||
|
||||
O site está sendo desenvolvido em um ambiente virtual Python (`venv`). Para executá-lo corretamente, ative o ambiente com o comando:
|
||||
|
||||
```bash
|
||||
source venv/bin/activate
|
||||
```
|
||||
`source venv/bin/activate`
|
||||
|
||||
Isso garante que todas as dependências do projeto sejam utilizadas corretamente.
|
||||
|
||||
@@ -28,66 +37,49 @@ Dessa forma, os arquivos de manifesto serão gerados, contendo as informações
|
||||
|
||||
---
|
||||
|
||||
## 👁️ Serviço de Monitoramento (Watchdog)
|
||||
## 📤 Servidor de Upload, Samples e Build (Flask)
|
||||
|
||||
Um serviço systemd foi criado para monitorar alterações na pasta `src/samples`:
|
||||
|
||||
- **Serviço:** `/etc/systemd/system/mmpCreator-upload-server.service`
|
||||
- **Nome do serviço:** `mmpCreator-upload-server.service`
|
||||
- **Frequência:** A cada 5 segundos
|
||||
- **Tecnologia utilizada: ** Python
|
||||
|
||||
### Funcionalidade:
|
||||
|
||||
Sempre que houver mudanças na pasta de samples, o serviço irá:
|
||||
|
||||
1. Detectar alterações via `watchdog`.
|
||||
2. Executar um novo build do site.
|
||||
3. Atualizar automaticamente o conteúdo do site em tempo real.
|
||||
|
||||
> **Nota:** O build atual está sendo feito apenas na parte de testes. Verificar e ajustar o caminho correto do build.
|
||||
|
||||
---
|
||||
|
||||
## 📤 Servidor de Upload de Samples
|
||||
|
||||
O servidor `upload_server.py` é responsável por receber arquivos de áudio (samples) para a plataforma. Ele é construído com:
|
||||
O servidor `upload_server.py` atua como a API central do sistema. Ele recebe arquivos, gerencia a sessão dos usuários (Login/Registro) e automatiza a reconstrução da plataforma.
|
||||
|
||||
- **Framework:** Flask
|
||||
- **Monitoramento:** Biblioteca `watchdog`
|
||||
- **Banco de Dados:** SQLite (com SQLAlchemy)
|
||||
- **Automação de Build:** Uso de Threads em segundo plano (Background Tasks) acionadas via rotas HTTP.
|
||||
|
||||
### Funcionamento:
|
||||
|
||||
1. Após qualquer modificação nas pastas de samples:
|
||||
- O script atualiza os arquivos `samples-manifest.json` e `mmp-manifest.json`.
|
||||
- Os caminhos dos arquivos são ajustados para garantir exibição e execução corretas.
|
||||
Sempre que um novo upload (Projeto ou Sample) é processado via API:
|
||||
1. O arquivo é sanitizado e validado.
|
||||
2. O sistema verifica a dependência de samples externos no XML.
|
||||
3. Os manifestos (`samples-manifest.json`, metadados de projetos) são atualizados em tempo real no servidor.
|
||||
4. Uma thread secundária segura (com Lock) dispara o comando `bundle exec jekyll build`, reconstruindo o frontend estático do MMPSearch para refletir a submissão imediatamente.
|
||||
|
||||
### Acesso:
|
||||
### Acesso da API:
|
||||
|
||||
- `http://127.0.0.1:5000`
|
||||
- `http://127.0.0.1:33002`
|
||||
|
||||
> ⚠️ **Importante:** Avaliar a segurança do servidor antes de validar como ferramenta oficial do projeto. Atualmente está sendo usado apenas para testes.
|
||||
> ⚠️ **Importante:** A estabilidade da reconstrução em produção depende do caminho absoluto do binário Ruby e do pacote Bundle configurados no script (`upload_server.py`).
|
||||
|
||||
---
|
||||
|
||||
## 💻 Backend para controle das salas online (Colaboração)
|
||||
|
||||
Um serviço systemd foi criado para hospedar o backend de um servidor em nodeJS responsável por gerenciar as salas e a colaboração online:
|
||||
Um serviço systemd foi criado para hospedar o backend de um servidor em nodeJS responsável por gerenciar as salas e a colaboração online do MMPCreator:
|
||||
|
||||
- **Serviço:** `/etc/systemd/system/backend-MMPCreator.service`
|
||||
- **Nome do serviço:** `backend-MMPCreator.service`
|
||||
- **Frequência:** Tempo integral
|
||||
- **Tecnologia utilizada: ** NodeJS
|
||||
- **Tecnologia utilizada:** NodeJS (Socket.io)
|
||||
|
||||
### Funcionalidade:
|
||||
|
||||
- Seu intuíto é deixar o backend online em tempo integral, possibilitando a utilização da plataforma em qualquer momento.
|
||||
- Para isso foi necessário inserir meu usuário no grupo de "ssl-cert" para acesso ao certificado
|
||||
- Essa abordagem foi escolhida, pois a "não" utilização do apache traz algumas variáveis a mais para a implementação de um proxy reverso para a comunicação via wss e https nas salas.
|
||||
- Para isso foi necessário inserir meu usuário no grupo de "ssl-cert" para acesso aos certificados (Let's Encrypt).
|
||||
- Essa abordagem foi escolhida, pois a "não" utilização do apache traz algumas variáveis a mais para a implementação de um proxy reverso para a comunicação segura via `wss://` e `https://` nas salas de colaboração.
|
||||
|
||||
### Acesso:
|
||||
|
||||
- `http://127.0.0.1:33001`
|
||||
|
||||
---
|
||||
|
||||
## ✅ Funcionalidades Já Implementadas
|
||||
@@ -107,6 +99,8 @@ Um serviço systemd foi criado para hospedar o backend de um servidor em nodeJS
|
||||
- [x] Salas online e colaboração em tempo real
|
||||
- [x] Botões de modo global e local para controle do editor de samples (controla play/pause/stop, loop e janela de loop)
|
||||
- [x] Exibição de notificações em alterações nos projetos em tempo real
|
||||
- [x] Gestão de usuários (Login, Registro, Perfis e painel Admin)
|
||||
- [x] Identificação automática de samples externos faltantes no upload de projetos.
|
||||
|
||||
---
|
||||
|
||||
@@ -114,16 +108,16 @@ Um serviço systemd foi criado para hospedar o backend de um servidor em nodeJS
|
||||
|
||||
### 🛠️ Funcionalidades
|
||||
|
||||
- [ x ] Validar projetos MMP antes de aceitar uploads:
|
||||
- [ x ] Verificar se os samples são nativos
|
||||
- [x] Validar projetos MMP antes de aceitar uploads:
|
||||
- [x] Verificar se os samples são nativos
|
||||
- [ ] Corrigir caminhos dos samples (evitar problemas de execução)
|
||||
- [ x ] Para downloads dos zip de projetos;
|
||||
- [ x ] Para enviar projetos para a plataforma;
|
||||
- [x] Para downloads dos zip de projetos;
|
||||
- [x] Para enviar projetos para a plataforma;
|
||||
- [ ] Reconhecer os caminhos atualizados no MMPCreator;
|
||||
- [ ] Fazer com que os caminhos atualizados permaneçam após cada build.
|
||||
- [ x ] Permitir envio de samples gravados com microfone:
|
||||
- [x] Permitir envio de samples gravados com microfone:
|
||||
- [ ] Executar e recortar antes de salvar no servidor
|
||||
- [ x ] Gravar músicas diretamente na plataforma, mesmo sem mixagem
|
||||
- [x] Gravar músicas diretamente na plataforma, mesmo sem mixagem
|
||||
- [ ] Ativar/desativar samples em patterns
|
||||
- [ ] Remover botões inúteis no controle de patterns
|
||||
- [ ] Melhorar documentação do código
|
||||
@@ -150,4 +144,4 @@ The intuitive is to be able to collect information from the files by indexing it
|
||||
|
||||
It is part of the master's research in Computer Science at the Federal University of São João del Rei, focused on independent underground music production and the use of open source technologies.
|
||||
|
||||
The mainstream only exists because the underground created the scene.
|
||||
The mainstream only exists because the underground created the scene.
|
||||
Reference in new issue
Block a user