Giter Site home page Giter Site logo

klesun-productions / klesun-productions.github.io Goto Github PK

View Code? Open in Web Editor NEW
9.0 9.0 4.0 4.67 MB

MIDI song editor in a web page + soundfont player... and 100500 other misc web apps on my server

Home Page: https://klesun.github.io/

JavaScript 11.06% Python 20.74% HTML 15.41% CSS 2.28% TypeScript 50.00% Shell 0.52%
midi music-composition sheet-music soundfont website

klesun-productions.github.io's People

Contributors

dogzy123 avatar klesun avatar klesun-misc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

klesun-productions.github.io's Issues

Add a "Filter" section above song list

First of all i'd like to be able to filter:

  • Tohou songs
  • My songs
  • Ichigos songs
  • By score

// following when got denormalized info from midi in db

  • By tempo (initial idea is to separate peacefull music from hardcore)
  • By duration
  • By whether there are other instruments than piano in it

Do some integration with git

I don't wanna lose a single note from every state of a song and i don't wanna do git commit after each save and i'd like to be able to easily navigate through them

MIDI.js repository is a phony!

The real MIDI.js is http://www.midijs.net - they don't force me to import 20 scripts to play a midi file

I suspect that the git MIDI.js is just a wrapper (a buggy monstrously leaking wrapper) for the simple one. Stop using MIDI.js of the git

Analyze every song and fetch sequence info

This primarily is for 10+ minute songs, like: [Europe, Clannad Etude, Robot Taisen, etc...]
The info probably should be stored in some table and somehow graphically shown during playback.

For a start just exact comparison will be good. If needed, can do with some approximation in case some songs (like Banjo Kazoie) will have some small noise.

Google login token expires in hour

I don't like the magic we use to login at the moment and i see no way how to re-ask a token with the approach. So i'd suggest instead of 3 lines in html header to use the code from /tests/google_api_test.html

Картинка стала дёрганой из-за того что мы стираем старые ноты и рисуем новые не в одном потоке

Это грустно

Может сделать что-то типа "запрос на перерисовывание" с абсолютным временем и типа ты такой тред сам себе перерисовываешь и видишь: "о, да тут один товарищ запросил перерисовку, и его время уже наступило - перерисую-ка я и его, для чего ещё нужны друзья?"

Sheet Music for random midi files

It does not have to be precise, just write some simple midi -> shmidusic adapter that will maintain order of notes and join notes pressed at one time into a single chord (oh and yes - tact lines should be drawn properly too)

midiCollection is restorable - no need to store it on Dropbox

  • same applies for the heavy midiCollection_smf
  • midiCollection_smf_bckp should be removed at all
  • same applies to "a_opuses_json - Copy" probably
  • the only important thing - some handwritten info, like scores, will lie in a db file in the git project root. it may go to git since it's tiny... likely

Hear 0_a7_League of Legends - Warriors.mid

As you may hear, when event times are relatively short, playback becomes very messed up (the 5th second, when soloist start singing - in Van Basco it's OK, in shmidusic.lv - not =( ).

I suppose we should handle timing just like in midiana - storing start time and calculating waiting time not by "nextChordTime - curChordTime" but with "nextChordTime - NOW()"

Make ability to enter notes with keyboard

Prompt to choose which layout does user have (some have "|" aftrer left shift; some have "|" next to backspace, some have "|" next to enter...)

Of course, explaining image with the whit-black colored keys in the bottom of the screen and ability to switch between "notes from keyboard"/"no notes from keyboard" modes

Implement channel volume curves

I'd suggest to make a separate view and define point positions by a fraction value. Like 3/2 - violin 20% -> 4/2 - violin 60%

The view should be updated by chord focus change and vice-versa - the chord at the position should be highlighted where you hover (or just click for a start)

Even though i wrote "curves" in the subj, for a start just straight lines between dots will be ok enough.

Do playback with workers

It's very sad that updating numbers in inputs or scrolling sheet music makes playback lag. Plus, i suppose, moving to workers will allow us to play even when tab is off.

when playing on midi device notes are unexpectedly closed

play with x2 speed:
opus23_angelsmerti_sloznoyeNa4alo_ubasazvesdnajaboleznj.mid.js

somewhere in the end basses have same note rhythmically repeated several times what is broken with the player. probably new note on is for some reason thrown before old note off. Probably we should store all scheduled actions and when time comes, perform not only the scheduled action, but also the actions that should have already been performed.

Loops are broken

touhou/th16_spin_offs/06TheGreatFairyWars.mid

Scroll to the end and you'll see, it returns to the loop point, but waits couple of seconds for some reason before continuing playing...

Maybe add a general info graph under time slider?

Draw midi messages, tune % 12.
It could be the first step to move from Java to here... could draw them on 7 note staff - drawing ebony darker... or sharps brighter, flats darker, (and thinner) we probably will have signature in midi file...

Pre-load samples before it's time to play them

I suggest having some sort of "analysedSong" in the synth, which will, not in very fast tempo, runt through, loading new samples if required.

On each "consumeConfig()" it should be re-analyzed for the changed channels. Probably good idea to make a Set of notes before first iteration to not waste time on duplicates.

Implement UnfairRandom class

What i want: all touhou songs, except EoSD, should have priority decreased 5 times
Same would be good to apply to all songs of Monkey Island except the main theme.

And so on for all cases when we got the original midi pack that consists of 20+ mixed both good and not-so-good songs

UnfairRandom implementation should be changed

What it does now: taking a random song and throws bones dependent on the song weight. If bones fit - playing, else taking next song and doing same. I'm pretty sure probabilities are not what you think they are and moreover, if, say, we have only one song with weight 0.0001, it will take eternity to get it.

What shall be done: sum every single song weight and assign the sum to it. Then get random from 0 to largest sum and find with binary search, what stamp did it got to.

MIDI.js has disastrous thread leak

Should investigate and write a bug report for them (maybe even a fix).

If wait for the end of the default shmidusic on my main page and repeat playback couple of times (on my acer with 1gb it's three times) you'll discover that Firefox apparently takes (50 - x where x -> 0)% of CPU and music starts sounding really bad (like if someone moved audio jack).

The issue is also obaudiously heard on the MIDI.js web site main page: http://mudcu.be/midi-js/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.