@SuppressWarnings("WeakerAccess")
    public synchronized void setDeviceNumber(byte number) {
        if (isSendingStatus()) {
            throw new IllegalStateException("Can't change device number while sending status packets.");
        }
        if (number == 0 && isRunning()) {
            selfAssignDeviceNumber();
        } else {
            announcementBytes[DEVICE_NUMBER_OFFSET] = number;
        }
    }
@ SuppressWarnings ( "WeakerAccess" ) public synchronized void setDeviceNumber ( byte number ) { if ( isSendingStatus ( ) ) { throw new IllegalStateException ( "Can't change device number while sending status packets." ) ; } if ( number == 0 && isRunning ( ) ) { selfAssignDeviceNumber ( ) ; } else { announcementBytes [ DEVICE_NUMBER_OFFSET ] = number ; } }
<p>Set the device number to be used when sending presence announcements on the network to pose as a virtual CDJ.
If this is set to zero before {@link #start()} is called, the {@code VirtualCdj} will watch the network to
look for an unused device number, and assign itself that number during startup. If you
explicitly assign a non-zero value, it will use that device number instead. Setting the value to zero while
already up and running reassigns it to an unused value immediately. If {@link #getUseStandardPlayerNumber()}
returns {@code true}, self-assignment will try to find a value in the range 1 to 4. Otherwise (or if those
values are all used by other players), it will try to find a value in the range 5 to 15.</p>

<p>The device number defaults to 0, enabling self-assignment, and will be reset to that each time the
{@code VirtualCdj} is stopped.</p>

@param number the virtual player number
@throws IllegalStateException if we are currently sending status updates