Skip to content

Claude/review documentation 013wt to6 m95 z4 pw mh5u3 cu uh#6

Merged
sebasdv merged 4 commits intomainfrom
claude/review-documentation-013wtTo6M95Z4PwMH5u3CUUh
Nov 25, 2025
Merged

Claude/review documentation 013wt to6 m95 z4 pw mh5u3 cu uh#6
sebasdv merged 4 commits intomainfrom
claude/review-documentation-013wtTo6M95Z4PwMH5u3CUUh

Conversation

@sebasdv
Copy link
Copy Markdown
Owner

@sebasdv sebasdv commented Nov 25, 2025

No description provided.

- Resetear lastTickTime al cambiar BPM durante reproducción
- Esto evita saltos o delays en el timing cuando se ajusta el tempo
- Aplicar mismo fix al efecto 0xF (Set Speed/Tempo)
- Mejorar consistencia en setSpeed()

Ahora los cambios de BPM se reflejan inmediatamente en la reproducción.
- Resetear currentPatternIndex a 0 al cargar canción
- Actualizar cursor del editor al primer pattern
- Llamar a updatePatternInfo() y updateOrderDisplay()
- Agregar mensaje de error con alert() para mejor UX

El sistema Save/Load ya estaba implementado. Solo se mejoraron
los displays para trabajar correctamente con patterns múltiples.

Ctrl+S: Guardar canción (.wtk)
Ctrl+O: Cargar canción (.wtk o .json)
**Effects.js:**
- Crear clase EffectProcessor con estado persistente por canal
- Implementar métodos trigger() y processTick()
- Efectos implementados:
  * 0x0: Arpeggio (cicla entre 3 notas)
  * 0x1: Pitch slide up (incremento continuo de frecuencia)
  * 0x2: Pitch slide down (decremento continuo de frecuencia)
  * 0x3: Tone Portamento (slide hacia nota objetivo)
  * 0x4: Vibrato (modulación sinusoidal de pitch)
  * 0xC: Set Volume (cambio inmediato de volumen)

**AudioEngine.js:**
- Agregar setChannelFrequency() para modificar frecuencia en tiempo real
- Agregar setChannelVolume() para modificar volumen en tiempo real
- Estos métodos permiten que los efectos modifiquen el audio activo

**Sequencer.js:**
- Integrar EffectProcessor en el constructor
- Agregar array activeEffects[] para tracking de efectos por canal
- Modificar tick() para procesar efectos continuos en cada tick
- Modificar processRow() para llamar a effectProcessor.trigger()
- Mantener efecto 0xF (Set Speed/Tempo) como efecto global

Los efectos ahora funcionan como en trackers clásicos (MOD/XM/IT).
**PatternEditor.js:**
- Agregar variables para selección y clipboard en constructor
- Implementar startSelection(), updateSelection(), cancelSelection()
- Implementar getSelectionRect() para obtener rectángulo normalizado
- Implementar copySelection() para copiar celdas al clipboard
- Implementar cutSelection() para cortar y borrar celdas
- Implementar pasteSelection() para pegar desde clipboard
- Agregar renderSelection() para highlight visual
- Modificar renderCursor() para no mostrar highlight si hay selección

**main.js:**
- Agregar atajos Ctrl+C/X/V para copy/cut/paste
- Agregar Shift+Flechas para seleccionar bloques
- Agregar Escape para cancelar selección
- Modificar keyPressed() para actualizar selección con Shift
- Cancelar selección automáticamente al mover sin Shift

**Funcionalidades:**
- Selección de bloques rectangulares con Shift+Flechas
- Copy (Ctrl+C): Copia selección al clipboard
- Cut (Ctrl+X): Copia y borra selección
- Paste (Ctrl+V): Pega desde cursor actual
- Highlight visual azul para selección activa
- Mensajes de consola para feedback
@sebasdv sebasdv merged commit f351aa9 into main Nov 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants