ditto iFCB, unless you have the UNO chip in your FCB (I do), otherwise this is the best solution. Programming an FCB via the front panel is *painful*.
The UNO chip isn't a must-have, but I wanted "stomp box mode" to be the top row of buttons.
I use the FCB as a replacement for 3 sustain and 3 expression pedals (obviously there are only 2 expression pedals on the FCB), so this is another reason why I wanted the top and bottom rows of pedals to be switched on the FCB. Minor thing, but the chip works fine for my purposes.
still, thumbs up for iFCB - I really wish they supported the UNO chip. As for programming a UNO-equipped FCB from a Mac. I never found a working solution for that and have to have an old Windows notebook just to program the FCB, *although* had I thought about CCTMusic's point, perhaps I wouldn't have needed the UNO chip. Hmmm...
I'm not sure what TREATMENT's approach is, but mine was to setup every patch in the FCB the same in terms of controllers and such, as whatever it sends I can *bend* that in MS to whatever I want it to be. There was some tricky stuff in MS though, in that MS automatically forwards *standard* MIDI CC#s to the channel strips, with multiple controllers I was getting MIDI CC# messages going thru to channel strips even when I didn't want that to happen, so... I changed the FCB to send non-standard messages (not 11, not 64...) and rerouted/repurposed those within MainStage itself and then all works *EXACTLY* as I want it to.
Others probably solved all of this differently - so do what's right for you.
Logic v9.1.8 (64-bit), MainStage v2.2.2 (64-bit), OSX v10.8.2
MacPro 8 core 24GB RAM, 2x 23" Cinema Display
MacMini i7, 16GB RAM
retina MacBookPro, 16 GB RAM
MacBook Pro, 8 GB RAM, MOTU 828, GlyphTech ext drive
MacBook Pro, 6 GB RAM