plugin v1.0.1
Deploy / Deploy (push) Successful in 1m12s
Details
Deploy / Deploy (push) Successful in 1m12s
Details
This commit is contained in:
parent
9173e696c3
commit
8c0cffbc50
|
|
@ -243,6 +243,25 @@ body.sidebar-hidden .sample-browser { width: 0; min-width: 0; border-right: none
|
||||||
repeating-linear-gradient(to right, #3a3e44 0, #3a3e44 1px, transparent 1px, transparent 100%);
|
repeating-linear-gradient(to right, #3a3e44 0, #3a3e44 1px, transparent 1px, transparent 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Estilo para o Canvas de Onda ao Vivo dentro da Track Info */
|
||||||
|
#live-waveform-canvas {
|
||||||
|
width: 100%; /* Ocupa a largura do painel lateral */
|
||||||
|
height: 40px; /* Altura fixa definida no JS */
|
||||||
|
background-color: #222; /* Fundo escuro para contraste */
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-top: 8px; /* Espaço entre os knobs e o canvas */
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
box-shadow: inset 0 0 5px rgba(0,0,0,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ajuste no container track-info para acomodar o novo elemento */
|
||||||
|
.audio-track-lane .track-info {
|
||||||
|
/* Garante que o conteúdo flua verticalmente */
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start; /* Alinha tudo ao topo */
|
||||||
|
gap: 5px;
|
||||||
|
}
|
||||||
/* Régua */
|
/* Régua */
|
||||||
.ruler-wrapper { display: flex; flex-shrink: 0; background-color: #383c42; border-bottom: 1px solid var(--border-color); }
|
.ruler-wrapper { display: flex; flex-shrink: 0; background-color: #383c42; border-bottom: 1px solid var(--border-color); }
|
||||||
.ruler-spacer { width: var(--track-info-width); flex-shrink: 0; border-right: 2px solid var(--border-color); }
|
.ruler-spacer { width: var(--track-info-width); flex-shrink: 0; border-right: 2px solid var(--border-color); }
|
||||||
|
|
|
||||||
|
|
@ -371,7 +371,18 @@ export function updateClipPan(clipId, pan) {
|
||||||
|
|
||||||
export function addAudioTrackLane() {
|
export function addAudioTrackLane() {
|
||||||
const newTrackName = `Pista de Áudio ${audioState.tracks.length + 1}`;
|
const newTrackName = `Pista de Áudio ${audioState.tracks.length + 1}`;
|
||||||
audioState.tracks.push({ id: Date.now(), name: newTrackName });
|
|
||||||
|
// 1. Cria o objeto da pista
|
||||||
|
const newTrack = { id: Date.now(), name: newTrackName };
|
||||||
|
|
||||||
|
// 2. Adiciona ao estado
|
||||||
|
audioState.tracks.push(newTrack);
|
||||||
|
|
||||||
|
// 3. ATUALIZAÇÃO CRÍTICA: Renderiza a UI imediatamente para a pista aparecer
|
||||||
|
renderAudioEditor();
|
||||||
|
|
||||||
|
// 4. ATUALIZAÇÃO CRÍTICA: Retorna a pista para que o recording.js possa usar o ID
|
||||||
|
return newTrack;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function removeAudioClip(clipId) {
|
export function removeAudioClip(clipId) {
|
||||||
|
|
|
||||||
|
|
@ -109,6 +109,23 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||||
const zoomInBtn = document.getElementById("zoom-in-btn");
|
const zoomInBtn = document.getElementById("zoom-in-btn");
|
||||||
const zoomOutBtn = document.getElementById("zoom-out-btn");
|
const zoomOutBtn = document.getElementById("zoom-out-btn");
|
||||||
const deleteClipBtn = document.getElementById("delete-clip");
|
const deleteClipBtn = document.getElementById("delete-clip");
|
||||||
|
// Configuração do botão de Gravação
|
||||||
|
const recordBtn = document.getElementById('record-btn');
|
||||||
|
|
||||||
|
if (recordBtn) {
|
||||||
|
recordBtn.addEventListener('click', async () => {
|
||||||
|
// PASSO CRÍTICO: O navegador exige isso antes de gravar
|
||||||
|
if (Tone.context.state !== 'running') {
|
||||||
|
await Tone.start();
|
||||||
|
console.log("Audio Context iniciado via clique.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Chama a função que você criou no recording.js
|
||||||
|
toggleRecording();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.error("Botão de gravação (#record-btn) não encontrado no DOM.");
|
||||||
|
}
|
||||||
|
|
||||||
//envia pattern pro editor de áudio
|
//envia pattern pro editor de áudio
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,12 +102,8 @@ async function _startRecording() {
|
||||||
if (!success) return;
|
if (!success) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// --- MUDANÇA: Lógica movida para cá ---
|
const newTrack = addAudioTrackLane(); // Agora isso vai funcionar!
|
||||||
// 1. Cria a pista de áudio *antes* de gravar
|
currentRecordingTrackId = newTrack.id;
|
||||||
addAudioTrackLane(); //
|
|
||||||
|
|
||||||
// 2. Pega o ID da pista recém-criada
|
|
||||||
const newTrack = appState.audio.tracks[appState.audio.tracks.length - 1]; //
|
|
||||||
if (!newTrack) {
|
if (!newTrack) {
|
||||||
console.error("Falha ao criar a nova pista de áudio no estado.");
|
console.error("Falha ao criar a nova pista de áudio no estado.");
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue