TTimer could probably be used for SysEx, but I don't know if it can be used for real-time data like recording from MIDI.
I've read somewhere (probably here on the forum), that TTimer isn't very reliable, and it can "skip a beat" if the system is under heavy load, e.g. if you set it on one second, it may trigger in one second, but it can happen it triggers a second latter.
Yesterday, I saw a post here on the forum mentioning asynchronous calls, and these are cross-platform. I should give it a try, but I can't promise I'll have time for this in the next couple of months.
I've used PortMidi on Linux and OSX. If you take a look at my GitHub projects, I've made an interim unit that uses PortMidi internally, but it has the same calls as the midi.pas for Windows. This way, I didn't need to change the code of the main app.
I am considering to move the whole MIDI In and Out to PortMidi on all the platforms. This wasn't an option for me earlier, because I couldn't find 64bit DLL of PortMidi for Windows anywhere on the internet, but someone here convinced me to compile it myself and I have my 64-bit PortMidi.dll now. Aaaand that is the point where I've stalled with codding at all, a couple of months ago.
As for Linux - a have a dual boot on my laptop and I am using it just for compiling. OSX is another story - you can set it up as a virtual machine, but Apple will not be happy about it. The only legal way is to buy a Mac.