robot36-encoder

Crates.iorobot36-encoder
lib.rsrobot36-encoder
version0.2.1
sourcesrc
created_at2019-05-13 00:08:28.783058
updated_at2022-08-05 13:29:36.859928
descriptionLibrary to convert images into audio using the robot 36 encoding
homepage
repositoryhttps://github.com/killertux/robot36-encoder
max_upload_size
id133898
size38,191
Bruno Clemente (killertux)

documentation

README

Robot36-encoder

This is a simple encoder of images into audio samples by using the Robot 36 encoding. It is based on the C implementation of Ahmet. You can use his decoder to decode this image.

It works as a library so you can use in your rust project. You encode a Robot36Image into an iterator of i16 representing each sample of the audio. You can then use this sample to write to an audio file or directly into the audio output. There is an optinal feature image, that can be enabled to add a conversion function from DynamicImage into the Robot36Image.

Bear in mind that breaking changes may and probably will happen in next versions!

Example using Hound

use robot36_encoder::{Encoder, Robot36Image};
use std::env;

/** Simple exmaple.
 * encode-image /path/to/image-input.png /path/to/audio-output.wav
*/
fn main() {
    let args: Vec<String> = env::args().collect();
    let image = image::open(args[1].to_string()).unwrap();
    let encoder = Encoder::new(
        Robot36Image::from_image(image.resize(320, 240, image::imageops::FilterType::Lanczos3))
            .unwrap(),
        48000,
    );
    let samples = encoder.encode();
    let spec = hound::WavSpec {
        channels: 1,
        sample_rate: 48000,
        bits_per_sample: 16,
        sample_format: hound::SampleFormat::Int,
    };
    let mut writer = hound::WavWriter::create(args[2].to_string(), spec).unwrap();
    for sample in samples {
        writer.write_sample(sample).unwrap();
    }
}
Commit count: 10

cargo fmt