errantember: (Little Cowboy Scott)
I'M READY TO GO ON STAGE!!!*
Read more... )
errantember: (Little Cowboy Scott)
After nearly a month of intermittently looking at the problem, I finally have come to the conclusion that MIDIStroke doesn't differentiate between the three different types of MIDI signals at *all*. The idea that it did was what sent me off on this wild goose chase to begin with, since it would be kind of stupid if a program treated playing note #5 the same as changing to instrument #5 or the pedal passing point 5 our of 128, but, evidently, MIDIStroke is stupid.
Read more... )
errantember: (Little Cowboy Scott)
When we last left Our Hero, he was here. I had finished tracing out the functionality of the first MIDI subroutine in MIDIStroke, only to find that all it did was convert incoming MIDI signals into a list of pre-defined numbers, presumably for use Elsewhere in the Program.

After a successful Christmas and first-turkey roasting (thanks to the New Best Recipe, which I should be a salesman for, and my Mom, who'd I'd rather not sell) it's time to find out, exactly, where Elsewhere in the Program is, and precisely what it is they *do* there.
Read more... )
errantember: (Little Cowboy Scott)
So I've finished processing the first MIDI subroutine in MIDIStroke. The good news is that this is definitely the subroutine that takes the raw MIDI data and translates it into something more palatable by the rest of the program.
Read more... )

I did it!

Dec. 11th, 2008 02:00 am
errantember: (Little Cowboy Scott)
I *finally* found the location of the *actual* MIDI message inside MIDIStroke! It's at 0xF007FD6E! Of course! I was already pretty excited when I discovered the part of it moved into r2 looked like the preamble for a note-on, but after changing the MIDI transmission channel and hitting the key with different levels of force, which changes the velocity number at the end of the note, I'm 100% sure I've got it!

The path from this info to finding out what needs to be in the box to make my pedalboard work should be *short*. I'm *very* pleased with myself!

Go me!

Eventually I will post a link to a little presentation that explains all of this in more laymen understandable terms, at which point it won't be *nearly* as rad.
errantember: (Little Cowboy Scott)
This is where things get interesting!

00003e90	bne+	cr7,0x3eb4     		*** CNon,UNon,UNoff,UPC,UCC  our first decision!
errantember: (Little Cowboy Scott)
By stepping through the MIDIStroke program after having sent one each of the three different MIDI signals I'm interested in, I was able to create a map of the path through the program that each different kind of messages travels. By then overlapping these maps, I was able to see which parts of the program are used for each kind of message exclusively, and which ones are used by more than one. So now I have it narrowed down to about 20 or 30 lines of code where I *know* the program is figuring out which kind of message it's getting and responding accordingly.

Now I just have to figure out what's actually going on in those lines of code. On a processor I've never worked with before. At 2:20 AM.

...

Time for bed!
errantember: (Little Cowboy Scott)
I continued my adventures to figure out MIDIStroke tonight.

Read more... )
errantember: (Default)
Or, if you don't have the source, go to the assembler. :)

I made a bit more progress in using the GNU Debugger to run around inside MIDIStroke, and also made some progress in disassembling the entire program using otool. It does look like it might be possible to actually figure out the encoding scheme for program changes and control changes using this method, thought it won't be easy. For those generally unfamiliar with this sort of thing, what I'm doing is taking a complete program and looking at it's guts to try to figure out something about how it works. When you create a program, you have something called "source code", which is a sort-of englishy-language description of how you want the program to run. The computer can't read this, though, so it has to be translated into machine language, which is called assembler. Generally, when you're using an existing program you didn't write, you only get the assembler to look at, which is very much akin to trying to figure out how a car works without having the design diagrams or any manuals.
Read more... )

Profile

errantember: (Default)
errantember

December 2015

S M T W T F S
  12 345
6 789101112
13141516171819
20212223242526
2728293031  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 17th, 2025 10:39 pm
Powered by Dreamwidth Studios