I am not talking assembler :-)
Shift/multiply is not assembly language as you can shift as easily in C as in assembler: 0xFF<<8 is a 255 shifted 8 places to left and then ends up being 0xFF00 or multiplied by 256...
Since the DAC has more bits than 8 you need to convert.
NXP used a 10 bits DAC but reserved the lower 6 bits for future updates.
With more bits you get more (finer) steps and adding bits is adding smaller steps (at the bottom end, not at the top).
To send 8 bits to the DAC you need to multiply to get a 16 bit result of which the top 10 bits are used. If you do not shift/multiply your 8 bits are reduced to only 2 bits if you write them to the DAC.
I do not know if it is possible to write just the top byte of the DAC
So this is what is being done in the code already
http://mbed.org/handbook/USBAudio
but I don't want to multiply, I just want to send 8bits or just 10 bits so is it 0xFF<<4 but I can't work out where samux is multiplying in his code which makes no sense to me the way he has chosen to code it anyway, does not make good mathematical sense to me, in fact it seems like confusing coding to me, but not that I know much about coding yet.
I want to receive a 8 bit resolution from the pc, the way you describe things in maths to make sense to me would be if I want to send bits to the computer, I don't understand if I am receiving 16 bits from a computer why would I need to multiply, I would need to divide right??
we are talking about the usb protical here, do you know the usb protocol, it just we have been talking for ages about this and it makes me think that you don't know that much about usb and you are talking of your experience with other protocols???
I want to write 8 bits raw to the dac no convert