"Has anyone of you ever tried ?"
Yes - In my opinion, If you want a real Theremin, dont waste your time with this approach. I did not use a PIC for my original Theremin designs, but did a lot of development using PSoC.. Using a processor is worthwhile AFTER a more-or-less conventional Theremin 'front-end' has done most of the work .. but using the processor to do the 'front end' (capacitance sensing etc) is a minefield.. particularly if using slow MCU's like 8 bit PICs or PSoCs.. The new PIC32 IS up to the job, but still requires enough external circuitry to make its cost and complexity not worth the effort
1.) You will need a capacitance sensor circuit of some kind - but to get useful signal, you will discover that you need to build a 'conventional' heterodyning Theremin anyway.. After this, you can feed the difference signal to a slow processor for conversion to MIDI or other protocol (I2C to drive DAC etc).
2.) For audio output, I have found that staying with analogue is far better.. The only REALLY useful thing I have found to use a processor for is Auto-calibration.. Where the processor can correct for changes, and also provide linearity correction - but even here, there are analogue techniques which do the job better.
There are "direct digital" approaches [PSoC CapSense for example] (this is where I started, and wasted a lot of time) - but these lack resolution unless large integration times (>10ms) are involved, and have limited sensing fields.
There are "Theremin" controllers based on this technology, but they have about 30cm linear playing fields, 60cm max.
Unless you are trying to do something special (like sensing a vector field as I am doing with
Epsilon (http://www.epsilonsynth.com/home)) there is little point in employing a processor..
Just for the record.. Epsilon is now using a PIC32 and MPLAB is being used for development.. but the project is going slowly - I am concentrating on taking modules developed for Epsilon and packaging these as a Theremin Developers kit. C++ is not ideal as a lot of 'machine level' programming and interrupt handling is required,and C++ constructs, whilst great for higher level programming, add an unnaceptable burden to limited resources of a small MCU.. You cannot apply normal "good" programming practices - for example, parameter passing causes extra instructions which can be eliminated by using global variables - but global variables can be more easily corrupted so are avoided in "good" programming.. The 'scope' of variables is an area C++ is quite strict about. For anything less than PIC32 or DSPIC, a mix of C and Assembler is required, with all ISR's written in assembler.