klesun-productions / klesun-productions.github.io Goto Github PK
View Code? Open in Web Editor NEWMIDI song editor in a web page + soundfont player... and 100500 other misc web apps on my server
Home Page: https://klesun.github.io/
MIDI song editor in a web page + soundfont player... and 100500 other misc web apps on my server
Home Page: https://klesun.github.io/
Got song, wanna upload it to ichigos, but i have it only in .mid.js format
First of all i'd like to be able to filter:
// following when got denormalized info from midi in db
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
Cuz it causes artifacts. For example you can try some song with really soft instruments..
random_good_stuff/time_out_4_vspyshka/menu.mid
It will probably improve sounding.
The thing is, we actually need to stop playing with fade, but what time to use for fade i dunno. And soundfont does.
Tact size
Channel Volume
Note Volume
Maybe More...
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
Such misc. info as loopStart, loopTimes could be placed as json to a MIDI text event like:
"klesunConfig: {"loopStart": 0.75, "loopTimes": 2}
"
probably make the slider common for all synths, like speed multiplier
Try for example "Clannad - Dango Daikazoku (1).mid" with sine wave and high volume
Probably should use 16 instances or so; set volume 0 when sounding finishes and put the oscillator into a freeAsInFreeSpeechOscillatorList
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.
I suppose it's already likely something, a man could use to get pleasure from, but every my innovation deals serious damage to workability of old features.
try Europe, some notes kinda have delay 'bout 20 milliseconds or so. a solution would be to delay whole playback by some OSCILLATOR_INIT_TIME.
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
Это грустно
Может сделать что-то типа "запрос на перерисовывание" с абсолютным временем и типа ты такой тред сам себе перерисовываешь и видишь: "о, да тут один товарищ запросил перерисовку, и его время уже наступило - перерисую-ка я и его, для чего ещё нужны друзья?"
touhoumidi.altervista.org/th11_subterranean_animism/hartmannsyoukaigirl.mid
it may sound really scary!
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)
Because Chrome has one setTimeout() per second limitation.
Probably try workers? http://stackoverflow.com/questions/5927284/how-can-i-make-setinterval-also-work-when-a-tab-is-inactive-in-chrome/5927432#12522580
Some songs are really short, take touhou/th6/th06_05.mid
And some songs are really hard to find occasionally , take touhou/th11_subterranean_animism/yugi.mid
, which is misspelled on top of all
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()"
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
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.
Yes, i hate it, but hack--Liminality - Unforgettable.mid
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.
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.
It's so sad...
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...
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...
How about that: Presets are not changeable by default, but the control will have a method "assignPresetConsumer()" or "hangPresetChangeHandler()", after applying of which presets become changeable.
?
For example, when wave is triangle, first two octaves are not hearable at all! See "InuYasha - I Am - Hitomi.mid"
Use the google authentication info, Luke.
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.
Enough!
touhou/th11_subterranean_animism/solarsectofmysticwisdom.mid
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
Like each 500/1000 chord or so (maybe even less, if it won't freeze the playback). Please, do it transparently - just when setFocus Index is 501 it should magically become 501-1000 chords instead of 0-500. We probably should preload following chunk in "display: none" state.
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.
touhou/06_eosd/6b Remilia Scarlet's Theme - Septette for the Dead Princess.mid
Church Organ (19)
and String Ensemble (48)
do not have 97 semitone.
subj
subj
.content-block-table
And maybe add the audio file
Sometimes sounds cool!
It continues brokenly play even though tab was switched.
Also would be good to scroll only in such case, when chord is not visible.
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/
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.