|
Deploy / Deploy (push) Has been cancelled
Details
|
||
|---|---|---|
| .bundle | ||
| .gitea/workflows | ||
| _data | ||
| _includes | ||
| _layouts | ||
| _posts | ||
| assets | ||
| pages | ||
| scripts | ||
| venv | ||
| .gitignore | ||
| Gemfile | ||
| Gemfile.lock | ||
| _config.yml | ||
| creation.html | ||
| index.md | ||
| manual.md | ||
| readme.md | ||
readme.md
mmpCreator & MMPSearch - Documentação Técnica
ALICE MMPSearch é um repositório criado com o propósito de servir como uma Biblioteca de Projetos e Beats do LMMS, utilizando Jekyll. O intuito é coletar informações dos arquivos indexando-os e permitindo buscas com os mais diversos filtros.
Este projeto faz parte da pesquisa de mestrado em Ciência da Computação na Universidade Federal de São João del-Rei (UFSJ), focada na produção musical independente underground e no uso de tecnologias de código aberto.
The mainstream only exists because the underground created the scene.
🏗️ Arquitetura e Engenharia de Dados
O sistema é um ecossistema completo para mineração, submissão, processamento e colaboração em projetos musicais (LMMS), estruturado nos seguintes pilares:
1. Web Crawler (Mineração de Dados)
O script crawler.py atua como um bot de mineração para popular a base de dados da plataforma baixando projetos diretamente do repositório oficial (LMMS Sharing Platform - lmms.io/lsp/).
- Segurança e Estabilidade: O crawler é multiprocessado (limitado a 4 workers) e possui um sistema de throttle que pausa a execução caso a memória RAM livre do servidor caia abaixo de 500MB.
- Sanitização e Auditoria: Os arquivos baixados têm seus nomes sanitizados (slugify) e o processo gera um arquivo de auditoria (
audit_crawler.csv) registrando tamanho, velocidade e status de cada download.
2. Pipeline ETL e Motor de Renderização
A conversão dos arquivos nativos em artefatos web é orquestrada pelo script pipeline_etl.sh, que executa três etapas sequenciais:
- Extração e Renderização (
handler/main.py): O script utiliza a bibliotecamultiprocessinge processa os projetos em lotes. Ele invoca o binário do LMMS em modooffscreen(Headless) para exportar o áudio gerado nativamente em.ogge converte a estrutura do.mmpem dicionários de dados (JSON/YAML). - Análise de Áudio (
classificacao/analise_audio.py): Processamento das características sonoras. - Classificação Mestre (
classificacao/classificacao_mestre.py): Organização final e indexação para o frontend.
3. MMPSearch (Catálogo Estático Frontend)
Biblioteca gerada via Jekyll a partir dos arquivos JSON/YAML exportados pelo Pipeline ETL, focada em leveza, indexação e busca de projetos, com renderização de áudio via Web Audio API.
4. MMPCreator (Colaboração em Tempo Real)
Sequenciador interativo. Utiliza WebSockets para sincronizar edições simultâneas (áudio e MIDI) entre múltiplos usuários em salas virtuais.
⚙️ Serviços de Hospedagem (Produção)
A infraestrutura em produção é orquestrada por gerenciadores de serviço do Linux (systemd), garantindo que a API e o servidor de WebSockets estejam sempre no ar.
Servidor de Upload, Autenticação e Build (Flask/Gunicorn)
Serviço responsável por receber arquivos, gerenciar a sessão dos usuários (SQLite, Bcrypt, Flask-Login) e automatizar o build do site via threads em segundo plano.
- Serviço:
/etc/systemd/system/upload_mmpSearch.service - Tecnologia: Gunicorn servindo a aplicação Flask (
upload_server:app). - Configuração: Roda com o usuário
www-data. Utiliza 3 workers e possui um timeout estendido de 300 segundos, o que é vital para não derrubar a conexão durante renderizações pesadas de áudio. - Acesso da API:
http://0.0.0.0:33002
Backend de Colaboração (NodeJS)
Hospeda a lógica de WebSockets responsável por gerenciar as salas e a colaboração online do editor MMPCreator em tempo real.
- Serviço:
/etc/systemd/system/backend-MMPCreator.service - Tecnologia: NodeJS (
server.js). - Configuração de Segurança: Roda sob o usuário
www-datae possui acesso direto aos certificados Let's Encrypt via variáveis de ambiente (SSL_FULLCHAINeSSL_PRIVKEY). Essa abordagem elimina a necessidade do Apache atuar como proxy reverso, facilitando a comunicação direta e segura viawss://ehttps://. - Comportamento: Configurado com
Restart=alwayspara garantir alta disponibilidade.
🛠️ Área de Desenvolvimento (Execução Manual)
Para testes ou execuções manuais, o site está sendo desenvolvido em um ambiente virtual Python (venv).
-
Ative o ambiente:
source venv/bin/activate -
Para inicializar a biblioteca de samples do MMPCreator:
cd scripts/creations && python generateManifest.py -
Para forçar a indexação e execução manual do pipeline ETL:
cd scripts && ./pipeline_etl.sh
✅ Funcionalidades Já Implementadas
- Web Crawler automatizado com auditoria de hardware.
- Processamento de arquivos LMMS de forma headless (renderização de áudio em servidor sem interface gráfica).
- Gestão de usuários (Login, Registro, Perfis e painel Admin).
- Identificação automática de samples externos faltantes no upload de projetos.
- Criar, salvar (externamente) e carregar projetos (do PC ou do servidor).
- Utilizar metrônomo, criar e excluir patterns.
- Alternar entre patterns em tempo real.
- Controle de volume e pan por pattern, por instrumento e global.
- Alterar quantidade/formato de compassos e BPM.
- Salas online e colaboração em tempo real (MMPCreator).
- Botões de modo global e local para controle do editor de samples.
- Exibição de notificações de alterações em tempo real.
📋 TODO (Próximos Passos)
- Validar projetos MMP antes de aceitar uploads:
- Verificar se os samples são nativos
- Corrigir caminhos dos samples (evitar problemas de execução)
- Para downloads dos zip de projetos;
- Para enviar projetos para a plataforma;
- Reconhecer os caminhos atualizados no MMPCreator;
- Fazer com que os caminhos atualizados permaneçam após cada build.
- Permitir envio de samples gravados com microfone:
- Executar e recortar antes de salvar no servidor
- 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
- Permitir alteração dos nomes das patterns (novos e existentes projetos)
- Corrigir sistema de notas do projeto (Incluir rastros da plataforma e metadados de autor).
- Criar atalhos de teclado (Barra de espaço para play/pause,
+e-para patterns). - Permitir alteração de nome de samples (⚠️ pode gerar duplicatas).
- Verificar duplicidade de samples e projetos por nome.
- Resetar valores de botões via scroll do mouse.
- Ao salvar projeto: Escolher nome e permitir escolha entre download ou salvar no servidor.