OpenNBS / OpenNoteBlockStudio

An open-source Minecraft music maker.
https://opennbs.org/
MIT License
728 stars 50 forks source link

Adding max numbers of notes per tick to Minecraft compatibility check #441

Open EnigmA-008 opened 3 months ago

EnigmA-008 commented 3 months ago

Is your feature request related to a problem? Please describe. I build the songs I make in Minecraft Survival. When I'm arranging songs (by importing midi and cleaning it up) it often happens that i end up with more than 4/8/12/16 notes per tick. If I plan for a song to have two layers (= maximum 8 notes per tick) I have to go through the entire song and find the tick that has more than 8 notes.

How I currently do this: In the "Schematic export" screen I can see the dimensions of the schematic (10 high for two layers). To find the tick that has more than 8 notes i have to count or highlight the notes in every tick (and have the "selected notes" on the bottom of the screen) or cut out a part of the song, check the dimensions in "Schematic export", adapt the remaining section, repeat - a very tedious process.

Describe the enhancement you'd like Please add another check to the "Minecraft Compatibility" window that checks if there are more than 4, 8, 12, 16, 20, ... blocks per tick and has an option to highlight the blocks that do not match that requirement.

Additional context Please enjoy my paint drawing skills: image

Bentroen commented 3 months ago

Hi, thanks for your suggestion! (The Paint layout really helps visualize it too).

While reducing note count isn't exactly necessary to achieve Minecraft compatibility, I agree it could be useful to keep under control, especially if building a a song manually.

Version 4.0 will be a complete rewrite of the program that will make it extensible with plugins. Perhaps this could be implemented as a plugin with that system, since that's exactly the kind of purpose it'll work for.

One feedback on your mockup layout is that the "Select invalid blocks" could only select blocks arbitrarily, since it wouldn't know what to prioritize. For instance, if we were to check along the song top-to-bottom, "allowing" the first n notes and deeming all other notes in the tick as "invalid", deleting its resulting selection wouldn't necessarily make the song sound good.

For your purposes, this might not be an issue though! (You're probably only looking for a way to highlight the affected ticks - in that case, with the plugin system, we could make some sort of permanent outline/overlay around the affected blocks so you could work with them more effectively, similar to the existing outline around out-of-range notes).