Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Features #1

Open
44 of 52 tasks
dannye opened this issue May 20, 2022 · 6 comments
Open
44 of 52 tasks

Features #1

dannye opened this issue May 20, 2022 · 6 comments

Comments

@dannye
Copy link
Owner

dannye commented May 20, 2022

  • Song Viewer
    • File parsing
      • Support modern pokecrystal macro syntax
      • Bonus: Handle TCG-compatibility macros used by pokered-crysaudio
      • Validate song header
      • Detect invalid macros/arguments
      • Detect nested loops/calls
    • Render notes for all channels
      • Visualize settings changes with colored flags
      • Visualize loops and calls with wrapper boxes
      • Visualize unreferenced labels
      • Visualize tempo changes
    • Customizable timeline
      • Multiple zoom levels
      • Key labels
      • Note labels
      • Configurable Measure ruler
      • Adjustable grid line spacing
      • Theme picker
      • Full screen

  • Song Player
    • Real-time playback with reasonably accurate tempo, volume, vibrato, etc.
    • Process custom channel 3 wave_samples.asm
    • Process custom channel 4 drumkits.asm
    • Start/resume from any point
    • Loop infinitely
    • Detect when subsequent iterations of the main loop are not exactly identical to the first
    • Mute individual channels during playback
    • Stereo/Mono output
    • Bookmarks
    • Support remaining miscellaneous commands: pitch_sweep, duty_cycle_pattern, pitch_offset

  • Song Editor
    • New Song dialog with customizable options
    • Channel selector (only the selected channel may be edited)
    • Multi-note selection
    • Rectangle select
    • Basic note operations (move, resize, put, delete)
    • Edit note properties (speed, volume, vibrato, etc.)
    • Pencil Mode (draw and erase notes)
    • Format Painter (copy note properties from one note to another)
    • Undo/Redo
    • Resize song
    • Make and unmake loops and calls
      • Loops: Reduce, Extend, Unroll, Create
      • Calls: Delete, Unpack, Create, Insert
    • Transfer selection of notes from one channel to another
    • Add/Remove channels

  • Extras
    • Channel 3 wave editor
    • Channel 4 drumkit editor
    • General sound effect editor
    • MIDI device input/MIDI file import
@nehochupechatat
Copy link

What do you think of implementing a General MIDI export?
With instrumentation similar to Joao Buaes' MIDIs

@dannye
Copy link
Owner Author

dannye commented Nov 8, 2023

What do you think of implementing a General MIDI export?

It isn't really useful and doesn't really serve the purpose of this editor. The primary goal of this editor is to directly edit/export *.asm song files for immediate use in a pokecrystal-based project. So that you can press "Save" in Crystal Tracker and immediately run make on your project and instantly have a new ROM file with your new song modifications included.

MIDI editors exist for creating MIDI files.

@nehochupechatat
Copy link

Ah, I understand. What about implementing a "traditional tracker" view? I.e OpenMPT, Furnace, etc
Some musicians prefer to work that way + your tracker is already based off OpenMPT

@dannye
Copy link
Owner Author

dannye commented Nov 8, 2023

There are several problems with trying to imagine this working with a traditional tracker view. The Pokemon song data format is not well suited for it.

Most fundamentally is that in Pokemon, the song channels are completely independent from each other. One channel can loop a small pattern many times while another channel plays a long sequence of all unique notes. It's also possible for a channel's entire body to be much shorter than another channel's body (ie, the short channel may fully repeat many times in the time that it takes the longer channel to play once). In fact, the channels are so independent that there is no requirement that all the channels loop back to the start at the same point in time -- or that they even loop back to the same point at the beginning.

So the concept of a "row" can't really apply here in the way that it would need to for a traditional tracker view to be effective.

@dannye dannye pinned this issue Feb 9, 2024
@duckiedev
Copy link

Would it be possible to add an option under the View menu that can be toggled on and off to display the note + octave as shown in the mock-up below?
image

@dannye
Copy link
Owner Author

dannye commented Sep 1, 2024

@duckiedev It would be possible but my preference is to keep the list of toggles pretty modest, and I prefer the current behavior of just pitches over pitches+octaves.

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

No branches or pull requests

3 participants