Enviar arquivos para "/"
This commit is contained in:
commit
419706e0bb
|
@ -0,0 +1,60 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="pt-br">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>DAW com Controle de Volume</title>
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
|
||||
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<aside class="sample-browser">
|
||||
<div class="browser-header">Navegador de Samples</div>
|
||||
<div class="browser-content" id="browser-content"></div>
|
||||
</aside>
|
||||
|
||||
<button id="sidebar-toggle"><i class="fa-solid fa-caret-left"></i></button>
|
||||
|
||||
<header class="global-toolbar">
|
||||
<div class="control-group"><i class="fa-solid fa-file"></i><i class="fa-solid fa-folder-open"></i><i class="fa-solid fa-save"></i></div>
|
||||
<div class="divider"></div>
|
||||
<div class="control-group">
|
||||
<i class="fa-solid fa-backward-step" id="rewind-btn" title="Voltar ao Início"></i>
|
||||
<i class="fa-solid fa-play" title="Play/Pause Global (Futuro)"></i>
|
||||
<i class="fa-solid fa-stop" title="Stop Global (Futuro)"></i>
|
||||
<i class="fa-solid fa-circle-dot" title="Gravar"></i>
|
||||
</div>
|
||||
<div class="divider"></div>
|
||||
<div class="info-display-group">
|
||||
<div class="info-display"><div class="interactive-input-container"><button class="adjust-btn" data-target="bpm" data-step="-1">-</button><input type="text" class="value-input" id="bpm-input" value="140" data-min="20" data-max="400"><button class="adjust-btn" data-target="bpm" data-step="1">+</button></div><div class="label">ANDAMENTO/BPM</div></div>
|
||||
<div class="info-display"><div class="interactive-input-container"><div class="compasso-group"><button class="adjust-btn" data-target="compasso-a" data-step="-1">-</button><input type="text" class="value-input compasso-input" id="compasso-a-input" value="4" data-min="1" data-max="16"><button class="adjust-btn" data-target="compasso-a" data-step="1">+</button></div><span class="compasso-separator">/</span><div class="compasso-group"><button class="adjust-btn" data-target="compasso-b" data-step="-1">-</button><input type="text" class="value-input compasso-input" id="compasso-b-input" value="4" data-min="1" data-max="16"><button class="adjust-btn" data-target="compasso-b" data-step="1">+</button></div></div><div class="label">COMPASSO</div></div>
|
||||
<div class="info-display"><div class="interactive-input-container" style="font-size: 0.7rem; color: var(--text-dark);">0:00:00</div><div class="label">MIN:SEC:MSEC</div></div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<button id="metronome-btn" title="Metrônomo On/Off">Metrônomo</button>
|
||||
</div>
|
||||
<div class="spacer"></div>
|
||||
</header>
|
||||
|
||||
<main class="main-content">
|
||||
<div class="beat-editor">
|
||||
<div class="editor-header">Mostrar/esconder Editor de Bases<div class="window-controls"><i class="fa-solid fa-minus"></i><i class="fa-regular fa-square"></i><i class="fa-solid fa-xmark"></i></div></div>
|
||||
<div class="editor-toolbar">
|
||||
<div class="playback-controls">
|
||||
<i class="fa-solid fa-play" id="play-btn" title="Play/Pause"></i>
|
||||
<i class="fa-solid fa-stop" id="stop-btn" title="Stop"></i>
|
||||
</div>
|
||||
<div class="pattern-selector"><span>Beat/Bassline 0</span></div>
|
||||
<div class="tool-icons"><i class="fa-solid fa-table-cells"></i><i class="fa-solid fa-bars-staggered"></i><i class="fa-solid fa-wave-square enabled"></i><i class="fa-solid fa-plus"></i></div>
|
||||
<div class="zoom-controls"><i class="fa-solid fa-minus" id="remove-instrument-btn"></i><i class="fa-solid fa-plus" id="add-instrument-btn"></i></div>
|
||||
</div>
|
||||
<div id="track-container"></div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script src="js/main.js" defer></script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,54 @@
|
|||
import os
|
||||
import json
|
||||
# TODO tornar um cron, sempre que adicionar um instrumento na pasta samples, ele deve fazer o manifest de novo
|
||||
# --- Configurações ---
|
||||
# O nome da pasta que contém os seus samples.
|
||||
SAMPLES_DIR = 'samples'
|
||||
# O nome do arquivo JSON que será gerado.
|
||||
OUTPUT_FILE = 'samples-manifest.json'
|
||||
|
||||
def scan_directory(path):
|
||||
"""
|
||||
Função recursiva que escaneia um diretório e constrói uma
|
||||
estrutura de dicionário (árvore) representando as pastas e arquivos.
|
||||
"""
|
||||
tree = {}
|
||||
try:
|
||||
# Lista todos os itens (arquivos e pastas) no caminho atual
|
||||
for item in os.listdir(path):
|
||||
full_path = os.path.join(path, item)
|
||||
|
||||
# Se o item for um diretório, chama a função novamente para ele
|
||||
if os.path.isdir(full_path):
|
||||
tree[item] = scan_directory(full_path)
|
||||
# Se for um arquivo, adiciona no formato que nosso app precisa
|
||||
else:
|
||||
tree[item] = {"_isFile": True}
|
||||
except FileNotFoundError:
|
||||
print(f"ERRO: O diretório '{path}' não foi encontrado.")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"Ocorreu um erro inesperado: {e}")
|
||||
return None
|
||||
|
||||
return tree
|
||||
|
||||
# --- Execução Principal do Script ---
|
||||
if __name__ == "__main__":
|
||||
print(f"Iniciando escaneamento da pasta '{SAMPLES_DIR}'...")
|
||||
|
||||
# Verifica se a pasta 'samples' realmente existe
|
||||
if not os.path.isdir(SAMPLES_DIR):
|
||||
print(f"ERRO: A pasta '{SAMPLES_DIR}' não foi encontrada.")
|
||||
print("Por favor, crie a pasta e adicione seus arquivos de áudio, ou verifique se o script está no lugar certo.")
|
||||
else:
|
||||
# Gera a estrutura da árvore de diretórios
|
||||
directory_tree = scan_directory(SAMPLES_DIR)
|
||||
|
||||
if directory_tree is not None:
|
||||
# Abre o arquivo de saída para escrita
|
||||
with open(OUTPUT_FILE, 'w', encoding='utf-8') as f:
|
||||
# Converte o dicionário Python para uma string JSON formatada e salva no arquivo
|
||||
json.dump(directory_tree, f, indent=2, ensure_ascii=False)
|
||||
|
||||
print(f"Arquivo '{OUTPUT_FILE}' gerado com sucesso!")
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue