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

Will you consider optimize this progrgam for Black MIDIs in the future? #365

Open
happymimimix opened this issue Jun 9, 2024 · 2 comments

Comments

@happymimimix
Copy link

I mean, use signal to make something like this:
image

Currently, the efficiency of your midi editor is already an outstanding level for normal midi editors.

This could possibly become the future of Black MIDI if you can optimize it even further and implement some flipping and stretching tools.

@ryohey
Copy link
Owner

ryohey commented Jun 9, 2024

@happymimimix Thank you for requesting. Since I don't know much about Black MIDI and I can't implement them all at once, could you please create a different issue for each feature and describe them in detail?

@happymimimix
Copy link
Author

@happymimimix Thank you for requesting. Since I don't know much about Black MIDI and I can't implement them all at once, could you please create a different issue for each feature and describe them in detail?

The most critical feature that Black MIDI needs is the performance. It's all about how fast can a program process large amount of midi data.
So, first make sure your program can handle at least 30 million notes without much lagging.
Then we can start to implement other functionalities that would help people create note arts easier.

To make a good black midi, the program must at least be capable of stretching notes. Alter the length of the selected section. This is the second most important feature besides performance.
Then to make some more complex note art, a flipping function is required. It must be capable of flipping the selection upside down, also known as a vertical flip, and reverse the playback order of the selected events, also known as a horizontal flip.

With the above three most critical features needed for black midi production implemented, we can then announce that Signal is ready for black midi production!

Going beyond just "ready", below is what Signal would need to reach the next level:
First, Signal need to have a scale highlight and chords highlight which will make the melody part much easier to make.
Then a magical tool known as claw machine is needed for make some even more stunning note arts. A claw machine is just a more advanced note stretching function. But instead of making the whole thing 2x the original length, it would make the beginning 2x then slowly decrease the stretching amount as it progress eventually going to 0.5x when it reaches the end of the selection. The amount of stretching at the end of the selection is always 1/the amount of stretching at the start. So the total length would not change but the beginning plays slower and the end plays faster. This thing is super useful when making curves.

With the above feature implemented, Signal can then be announced to be fascinating for black midi!

To achieve the best black midi editor of all times, below is what Signal need to have:
First, a note counter that lets the user know how many notes they have in this song. And this note counter updates as soon as an edit is being made to the piece. This would be incredibly useful when people wants to make a black midi with planned note count. Such as Pi the song with exactly 3,141,592 notes. Means in total you need to press the piano keys 3,141,592 times in the span of just 03:14 to play this song.

At last, bring over whatever tools you would expect in a paint app to Signal with a feature that allows the user to import an image and convert it into midi note arts.
Add a line tool, a brush tool, a circle tool, a rectangle tool, a triangle tool, a polygon tool, eraser tool, just like what a paint app would have.
Then, Signal will be the best black midi editor of all times!

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

2 participants