pitches == 0100so you have0100 & 0000 = 00100 & 0001 = 00100 & 0010 = 00100 & 0011 = 00100 & 0100 = 40100 & 0101 = 40100 & 0110 = 40100 & 0111 = 4What was the desired output?
IIRC bitwise operators work only on integers, but the result of ** is always a float.(2**2).dumpFloat 4.0 40100000 000000004So you should do (2**i).asInteger or, more efficient, (1 << i) which is a bitwise shift.8.do({ |i| (1 << i).postln });1248163264128