What OpenSignals and some APIs implement are the transfer functions (the ones listed on the other thread we've shared) that convert the digital codes from the ADC to the real units.
Still, the most feasible way for you to have (on a computer) an approximation to what would be the original analog value is to interpolate from the digital points collected with the device: http://en.wikipedia.org/wiki/Interpolation
This is not particular to BITalino; if you think of it, analog values exist for the smallest fraction of time you can think of, therefore being virtually impossible to record a true analog signal on a device with limited storage capabilities such as a computer or mobile phone.
What BITalino and devices alike do (even for audio, video, etc.), is sample the signals and quantise them to create discrete series of digital values. In the case of BITalino you can sample signals at up to 1000Hz (1ms time division) and 10-bit resolution (1023 digital values).
A device capable of sampling at higher rates and with higher resolution will give you more points on discrete series, but not the analog signal. From the discrete series of digital values what one can do is map each value to the corresponding physical unit (e.g. 0 maps to -1.65mV and 1023 maps to 1.65mV on EMG data).
This mapping results from the characteristics of the analog signal conditioning front-end on the sensor, in particular the offset, gain, and operating voltage, as you can see from the transfer functions.
Please accept our apologies in case you find our explanation to be too elementary, but the resulting text is suitable for users with different degrees of expertise. Do contact us for any further question you may have.
The BITalino Team