wasabi icon indicating copy to clipboard operation
wasabi copied to clipboard

UI Remake

Open MyBlackMIDIScore opened this issue 1 year ago • 3 comments

You are going to hate me for this

MyBlackMIDIScore avatar Sep 30 '24 21:09 MyBlackMIDIScore

I do

Kaydax avatar Sep 30 '24 21:09 Kaydax

I do

Thanks. And I am not even half done :)

MyBlackMIDIScore avatar Sep 30 '24 21:09 MyBlackMIDIScore

Bookmarks

Winit stuff

(Basically updated to 0.30 which requires a struct for the application instead of an event loop closure)

Vulkano stuff

(Updated to 0.34)

Settings/Config

  • mod.rs (Remade the layout and made it immune to invalid and nonexistent values using #[serde(default)])
  • enums.rs (I put all the settings related enums and their implementations there)
  • migrations (Moved v0 and v1 migrations to this folder)

Audio/Synthesizer

  • mod.rs (Implement trait for supported synthesizers and hold it inside a struct using Box<dyn ...> to be used within the app. One concern is the performance hit from using a Box)
  • xsynth.rs
  • midiout.rs (Added support for MIDI Out devices using the midir crate. Devices are being looked up using their registered name)
  • kdmapi.rs (Forked your crate for this so I could use Results instead of panics and to implement the LoadCustomSoundFontsList method to load Wasabi's SF list)
  • empty.rs (Synth that doesn't do anything, I use this for unloading the previous synth before loading a new one to avoid KDMAPI errors, and I also gave it as an option if someone doesn't want audio)

GUI Highlights

  • window.rs
    • (L154, L165: I am using crossbeam to select and load MIDIs so the main UI does not freeze while doing so)
    • (L361: File picker method)
    • (L385: MIDI loader method)
  • errors.rs (Error types for Wasabi. Also implemented a UI message system for it to show errors in windows)
  • fps.rs (Kind of remade this for FPS limiting)

MIDI

  • mod.rs (L131: Loading colors from image palette + randomizing)
  • timer.rs (Keep the start delay value in the struct since it can now be set from the settings)

Misc

  • state.rs (Mostly to highlight that the synth is stored there for easier passing around)
  • utils.rs
  • build.yml (Changed filenames for the built-in updater to work properly & added ARM Windows build)

Other changes not listed here are either long egui code or changes in other files to reflect any method changes mentioned above)

MyBlackMIDIScore avatar Oct 10 '24 15:10 MyBlackMIDIScore

@arduano Made most of the changes requested. I'll wait for clarifications on the other comments before I fix the rest

MyBlackMIDIScore avatar Oct 14 '24 17:10 MyBlackMIDIScore

@arduano Will fix that and merge. I also created issues about the rest we discussed that needs to be fixed and added everything in a milestone for 1.0.0. Let me know if this is ok or if there is something else we need to look at.

MyBlackMIDIScore avatar Oct 16 '24 06:10 MyBlackMIDIScore

Nothing off the top of my head

arduano avatar Oct 16 '24 06:10 arduano