melody-bay 0.1.0

Kira-compatible generated synthesis sound sources.
Documentation
fn read_u8(bytes: &[u8], offset: &mut usize) -> Result<u8, ImportError> {
    let value = *bytes
        .get(*offset)
        .ok_or(ImportError::InvalidFormat("unexpected end of data"))?;
    *offset += 1;
    Ok(value)
}

fn read_var_len(bytes: &[u8], offset: &mut usize) -> Result<u64, ImportError> {
    let mut value = 0u64;
    for _ in 0..4 {
        let byte = read_u8(bytes, offset)?;
        value = (value << 7) | u64::from(byte & 0x7f);
        if byte & 0x80 == 0 {
            return Ok(value);
        }
    }
    Err(ImportError::MalformedTiming(
        "invalid variable length value",
    ))
}

fn be_u16(bytes: &[u8], offset: usize) -> Result<u16, ImportError> {
    let slice = bytes
        .get(offset..offset + 2)
        .ok_or(ImportError::InvalidFormat("unexpected end of data"))?;
    Ok(u16::from_be_bytes([slice[0], slice[1]]))
}

fn be_u32(bytes: &[u8], offset: usize) -> Result<u32, ImportError> {
    let slice = bytes
        .get(offset..offset + 4)
        .ok_or(ImportError::InvalidFormat("unexpected end of data"))?;
    Ok(u32::from_be_bytes([slice[0], slice[1], slice[2], slice[3]]))
}

fn le_u16(bytes: &[u8], offset: usize) -> Result<u16, ImportError> {
    let slice = bytes
        .get(offset..offset + 2)
        .ok_or(ImportError::InvalidFormat("unexpected end of data"))?;
    Ok(u16::from_le_bytes([slice[0], slice[1]]))
}

fn le_u32(bytes: &[u8], offset: usize) -> Result<u32, ImportError> {
    let slice = bytes
        .get(offset..offset + 4)
        .ok_or(ImportError::InvalidFormat("unexpected end of data"))?;
    Ok(u32::from_le_bytes([slice[0], slice[1], slice[2], slice[3]]))
}