tg44 / MidiSplitter

Its a midi file splitter, splits a multitrack multichannel midi files to a 1channel/track 1 note/channel in the same time format midi.
6 stars 0 forks source link

Preserve Pitch Bend data #3

Open DigitallyRemastered opened 10 years ago

DigitallyRemastered commented 10 years ago

Hey there tg44, Your UI works pretty well and looks nice, however at this point I think I still rather use the old version. When the UI doesn't work, I don't get a "too many channels" error and I'm really not sure what's gone wrong.

Anyhow, when (if you're still up for it) might we see pitch bends kept in the channels?

tg44 commented 10 years ago

The UI writes in the tabs how many channel will needed for the conversion. I dont remember but I think If it too much it does nothing, but you coud uncheck some chennels (e.g. 10), and the problem coud solve itself.

The pitchbends are tricky If you want to keep them just uncheck the chennels whats contains them. I never see a midi what is useing pitchbends (I know the theory but its always not enought), that is the main reason I'm not implement that yet. I'm check it today but I cant test it.

tg44 commented 10 years ago

I pushed a new version, it coud bend the pitchs, and handle the errors more userfriendly. Pls write me if its working or not :)

DigitallyRemastered commented 10 years ago

Hey tg44, I used it on a new song. It didn't bend the notes for me :( but I like the screen for saying when too many channels have been used up :D

tg44 commented 10 years ago

Can you upload to me a song with blend in it? I coudn't test it and thats the root of the problem.

DigitallyRemastered commented 10 years ago

sure! I've been writing up this MIDI myself, it's "Fuck You" by Ceelo Green.

http://www.mediafire.com/download/ck9r4797tbi7okb/fuckyou.mid

The bends are on the Vocals track set to channel 3. It first shows at ~7.5 seconds into the song.

tg44 commented 10 years ago

Its writing out blend data now, try it and say if sth still not perfect.

DigitallyRemastered commented 10 years ago

Yeah, there's definitely pitch bend data now, but it seems to be scaled wrong compared to the original midi. It sounds as if it is being bent half as many cents as it should, e.g. what is supposed to be a whole bend sounds like a half bend. Almost there!

tg44 commented 10 years ago

I'm sad now -.-

When the algo meet a pich message, try to search the started (and not ended) note in the same channel, and simply give the whole message to that start-pitchs-end structure. When I wrote out I do the same just in reverse sort, write the start note, write the pichs, write the end. So the pitch datas are not modified, just read out and write back.

This means not the logic is the problems source, I think there is some metamessage what says the scale on the track or the chennel (like the thempo message). If it is true, its a huge problem, and I cant fix it as fast as I tought at the beginning.

DigitallyRemastered commented 10 years ago

I'm not sure I understand all of that.

All I know is that pitch messages are composed of 3 bytes, the first byte tells you which channel is being bent, the MSB says how much bending in a course scale, and the LSB saying how much bending on a small scale. I'm sure you are, but just to make sure, are you familiar with this site? http://www.midi.org/techspecs/midimessages.php It's loaded with good stuff.

you can find on the page "Pitch Bend Sensitivity" in table 3a: registered parameter numbers. That may help...

On Sat, Mar 29, 2014 at 2:15 AM, Gergő Törcsvári notifications@github.comwrote:

I'm sad now -.-

When the algo meet a pich message, try to search the started (and not ended) note in the same channel, and simply give the whole message to that start-pitchs-end structure. When I wrote out I do the same just in reverse sort, write the start note, write the pichs, write the end. So the pitch datas are not modified, just read out and write back.

This means not the logic is the problems source, I think there is some metamessage what says the scale on the track or the chennel (like the thempo message). If it is true, its a huge problem, and I cant fix it as fast as I tought at the beginning.

— Reply to this email directly or view it on GitHubhttps://github.com/tg44/MidiSplitter/issues/3#issuecomment-38988044 .

tg44 commented 10 years ago

That was what I said, there is an another type of message that I can't handle.I read a lot from midi.org, but that table is huge and full off irrelevant information for me, and I skiped that row out...

tg44 commented 10 years ago

Your midi uses intresting messages e.g. "47 00101111 2F LSB for Control 15 (Undefined) " and "81 01010001 51 General Purpose Controller 6 "

If you read the table it mention 3 option to set register parameters.

I made a writeout: http://pastebin.com/cEuGdufi

I see lot of problems there... (first col is the tick, if it is a meta msg there is a hexa and decimal value, and the data as string, if no I trying to parse it, its mostly readable...) First of all I have no idea where I coud carry the command datas and what outputchannels needs to get them... There are pitchs whats do nothing (e.g. track3 start seting parameters and pitching, but we haven't got on-note before...).

Because of the command messages form It coud do a lot of mess to figure out what channels need and what channels will mess up with those controls.

I found a minor bug too, it coud be possible to help you a bit, but I think I coudn't resolve your problem in the foreseeable future...

Sammy1Am commented 10 years ago

To clarify a bit as to what might be going on:

There is no standard magnitude assigned to pitch-bend messages. A value between 0 and 16384 (or -8192 to +8192) is passed, but the synthesizer ultimately decided how much or little to bend the note. I had not previously noticed the "Pitch Bend Sensitivity" messages in Table 3a, which might have something to do with that.

@sandman27and11 , are you testing the converted MIDI in the same program as you're listening to the original in? If MidiSplitter is just passing the messages through, you get the same amount of pitch as long as you're using the same program to play back both MIDIs.

DigitallyRemastered commented 10 years ago

I just compared the original and the processed versions again in the same program one-after-another to be sure.

Yeah, using Anvil Studio, the pitch seems to be either halved or quartered in the processed version, but comes across as intended in the original.