diff --git a/readme.md b/readme.md index 9e9bc11..06741b2 100644 --- a/readme.md +++ b/readme.md @@ -1,69 +1,100 @@ -# ----------------------- // -------------------------- +# mmpCreator - Documentação Técnica -# Área de Desenvolvimento -O site está sendo desenvolvido em um venv, para executá-lo de forma correta, é necessário acessar através do comando: +--- + +## 🛠️ Área de Desenvolvimento + +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 -Isso ativará o ambiente de desenvolvimento. +``` -# ----------------------- // -------------------------- +Isso garante que todas as dependências do projeto sejam utilizadas corretamente. -# Serviço Watchdog para verificar alterações nas pastas de samples -Foi criado um serviço (/etc/systemd/system/mmpCreator-upload-server.service) com nome "mmpCreator-upload-server.service" para verificar alterações na pasta src/samples se há alguma mudança. Caso tenha, ele fará um novo build do site para que seja atualizado em tempo real todas as alterações. (tempo de 5 em 5 segundos) -A atualização no site é feita a partir de build do site feito pelo script. +--- -# TO DO -- Verificar caminho do build, pois está sendo feito apenas na parte de testes +## 👁️ Serviço de Monitoramento (Watchdog) -# ----------------------- // -------------------------- +Um serviço systemd foi criado para monitorar alterações na pasta `src/samples`: -# Servidor de Upload de samples -O servidor "upload_server.py" é responsável por receber o upload dos arquivos de áudio (samples) para a plataforma. -É um servidor Flask, utilizando a biblioteca watchdog do Python para monitorar as modificações nas pastas de samples. -Após qualquer alteração identificada, o script fará a atualização dos caminhos de arquivos de áudio através dos json (samples-manifest.json e mmp-manifest.json) para que todos os arquivos tenham sua exibição correta, assim como sua execução. +- **Serviço:** `/etc/systemd/system/mmpCreator-upload-server.service` +- **Nome do serviço:** `mmpCreator-upload-server.service` +- **Frequência:** A cada 5 segundos -http://127.0.0.1:5000 -É necessário verificar o quão seguro isso é, para que seja validado como ferramenta oficial ou não do projeto. -Inicialmente, está em produção para fazer testes. +### Funcionalidade: -# ----------------------- // -------------------------- +Sempre que houver mudanças na pasta de samples, o serviço irá: -# TODO -- Verificar projeto MMP antes de aceitar o upload - - Verificar se são samples nativos; - - Corrigir caminhos dos samples para que não haja problemas durante o download e execução na plataforma. -- Envio de samples gravados com o microfone do dispositivo - - Possibilitar a execução e recorte do sample antes de salvá-lo de fato no servidor (evitar muito lixo salvo) - - Possibilita a gravação de músicas na plataforma, mesmo que sejam sem mixagem. -- Ativar e desativar samples nas patterns, para executar apenas samples específicos ou alternar entre ativo e inativo -- Retirar botões inúteis do controle de patterns -- Deixar o código mais bem documentado, facilitando o entendimento de externos ao desenvolvimento -- Possibilitar a alteração dos nomes das patterns (tanto em novos projetos, quanto em projetos que foram baixados/carregados) -- Corrigir a parte de notas do projeto, deixando rastros da plataforma MMPCreator, informações de autor e etc -- Adicionar atalhos, espaço pra play/pause, + e - para alternar entre as patterns, etc -- Possibilitar a alteração do nome do sample (?) (não sei se é tão válido, porque pode gerar inúmeros samples repetidos) -- Verificar se já há algum sample com o mesmo nome, para não ficar duplicando samples -- Verificar se já há algum projeto com o mesmo nome, para não ficar duplicando projetos -- Resetar valores dos botões utilizando o scroll do mouse -- Na hora de salvar projeto, verificar se quer baixar o projeto (possibilitando escolher o nome) ou salvar no servidor +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. -# O que já é possível fazer -- Criar projeto; -- Carregar projeto do PC ou do Servidor; -- Salvar projeto de forma externa (no servidor ainda não tá salvando); -- Editar projetos já existentes (não alterando o original); -- Usar o metrônomo; -- Criar patterns; -- Excluir patterns; -- Alternar entre as patterns em tempo real; -- Aumentar/diminuir volume das patterns; -- Alterar pan das patterns; -- Aumentar/diminuir volume dos instrumentos; -- Alterar pan dos instrumentos; -- Aumentar/diminuir volume global; -- Alterar pan global; -- Alterar a quantidade de compassos da música; -- Alterar o formato do compasso da música; -- Alterar o BPM; -- Ver o tempo de duração da pattern através do timmer. +--- + +## 📤 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: + +- **Framework:** Flask +- **Monitoramento:** Biblioteca `watchdog` + +### 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. + +### Acesso: + +- `http://127.0.0.1:5000` + +> ⚠️ **Importante:** Avaliar a segurança do servidor antes de validar como ferramenta oficial do projeto. Atualmente está sendo usado apenas para testes. + +--- + +## ✅ Funcionalidades Já Implementadas + +- [x] Criar projetos +- [x] Carregar projetos (do PC ou do servidor) +- [x] Salvar projetos (externamente) +- [x] Editar projetos existentes (sem alterar o original) +- [x] Utilizar metrônomo +- [x] Criar e excluir patterns +- [x] Alternar entre patterns em tempo real +- [x] Controle de volume e pan por pattern e por instrumento +- [x] Controle de volume e pan global +- [x] Alterar quantidade e formato de compassos +- [x] Alterar BPM +- [x] Exibir duração da pattern via timer + +--- + +## 📋 TODO (Próximos Passos) + +### 🛠️ Funcionalidades + +- [ ] Validar projetos MMP antes de aceitar uploads: + - [ ] Verificar se os samples são nativos + - [ ] Corrigir caminhos dos samples (evitar problemas de execução) +- [ ] 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 MMPCreator + - [ ] Informações de autor e metadados +- [ ] Criar atalhos de teclado: + - [ ] Barra de espaço para play/pause + - [ ] `+` e `-` para alternar entre 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: + - [ ] Permitir escolha entre download ou salvar no servidor + - [ ] Escolher nome do projeto