Need answers/direction - Midi processing

I'm trying to pull off something with Midi files and don't understand how. Just really need to know how to go about it, willing to paypal someone for some direction/answers... If in fact JUCE can play midi files/tracks. I don't so much need code as direction.

There's nothing to just "play a whole midi file".

Everything is juce is block-based because that's how most serious audio work is done - if you have an audio callback you can send small blocks of midi to the output devices, but generally in a serious app you wouldn't want a function that just dumps a whole midi file to the output because you probably need more control over stopping/starting playback.

I do want to play a midi file, and have a piano roll that shows the notes moving along (not all of them, just the upcoming ones). How do I generally structure a juce app to do this? 

Impossible to give a useful answer to such a broad question!

You'd probably want to use a high-res timer to actually play the notes - that's what we do in things like tracktion. But you'd need to build a model of what you're playing, create transport controls for it, a UI etc.

I don't want to determine when to play the notes, I want "JUCE" (synthesiser? to play them) 

It is more than one question, though:

1) How is a midi file played in JUCE? 
2) How do I determine the current time position (being played)
3) How to use current time to obtain relevant notes for graphing? 

I expect the first two are trivial questions, the last one being more interesting.

There are classes to control a midi i/o devices, to parse midi files and let you iterate the events in them, to create synthesisers, to use high res timers for sending notes at a precise time etc etc. It's up to you to tie all those parts together to play the file in whatever way is appropriate for your app. If you're looking for a magic function called "playMidiFile" then you're going to be disappointed.