Conversation
- 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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.