MSP int to float mapping

Apr 4, 2009 at 6:23pm

MSP int to float mapping

Hi all,

I’m trying to build a patch that will randomly flip bits of single samples in a sound file. As I haven’t found a way of changing bits directly, I’m trying to convert sample values from peek~ to their binary states, do the process, then convert back. jasch’s bitlist external is taking care of this conversion.

However, I am getting confused as to the method a, say, 16-bit int representing a sample from a sound file is mapped on to MSP’s -1. to 1. scale. This int’s range is -32768 to 32767 (due to it using the two’s compliment system), so, if the zeroes map directly on to each other, surely the bottom half of the cycle has more resolution that the top half?

How does Max handle this?

Adam Jansch

#43205
Apr 5, 2009 at 6:24am

if the one number which is “too much” is used as 0 and -0, or if the highest value is simply not used does not really matter.

the normal case is that the highest number isnt used.

also, max will handle the conversion from a LONG range to an MSP signal just as you programmed it – its you who decides what happen with a 0 and also with the -32768.

there are surely better ways to do what you want, but for now i´d say use a range of -32767 32768 and not -32768 32767, then leave the highest value unused. even if there would be a technical standard you could just ignore it.

btw, since all audio in max (and most other programs) is 32 bit floating point, there is no 100% perfect copnversion from an imaginary “16 bit int” value to the signal layer anyway.

of course a 16-bit precidse value will “fit” into a 24-bit precision system, that stops working as soon as you use wrong numbers.

#154933
Apr 5, 2009 at 2:22pm

There are lots of arguments on various dsp-related lists about the ‘right’ way to handle the difference between floating point symmetry and fixed point/integer asymmetry.

Before we worry too much about that, have you looked at bitxor~?

#154934
Apr 5, 2009 at 3:05pm

Thanks for the replies,

I have taken a look at bitxor~ and in mode 1 it looks to do what I am after, many thanks Peter. I was just about to get my hands dirty in Javascript having found Patrick Delges’ post regarding his sfmarkers~ script (http://www.cycling74.com/forums/index.php?t=msg&goto=47742&rid=0&srch=ssnd#msg_47742).

Adam

#154935

You must be logged in to reply to this topic.