【发布时间】:2020-06-15 04:39:31
【问题描述】:
我是 Rust 的新手,我根据秘密酱算法生成的序列拼接了一个播放声音的程序。
但是,我没有听到使用整数序列作为测试数据播放的声音。
我不知道数字序列中哪些值是有效的,哪些值是可听见的,哪些值是可怕的,因为播放它们会失去我的听力。
我也在为 Rust 的结果包装器概念而苦苦挣扎;在我的代码中,我使用了三种不同的方法来解开其中一些可能不合适的方法。
这是我的代码:
fn main() {
use std::process::exit;
if let Err(e) = run() {
println!("Failed to run basic example: {}", e);
exit(1);
}
}
extern crate alto;
use alto::{Alto, AltoResult, Mono, Source};
fn run() -> AltoResult<()> {
use std::sync::Arc;
let alto = Alto::load_default()?;
for s in alto.enumerate_outputs() {
println!("Found device: {}", s.to_str().unwrap());
}
let device = alto.open(None)?; // Opens the default audio device
let context = device.new_context(None)?; // Creates a default context
// Configure listener
context.set_position([1.0, 4.0, 5.0])?;
context.set_velocity([2.5, 0.0, 0.0])?;
context.set_orientation(([0.0, 0.0, 1.0], [0.0, 1.0, 0.0]))?;
let mut _source = context.new_static_source()?;
// Now you can load your samples and store them in a buffer with
// `context.new_buffer(samples, frequency)`;
let data: Vec<_> = (10..200u32).map(|i| i as i16).collect();
let buffer = context.new_buffer::<Mono<i16>, _>(data, 44_100);
let buf = Arc::new(buffer.unwrap());
let good_result = _source.set_buffer(buf);
assert!(good_result.is_ok() && !good_result.is_err());
_source.play();
Ok(())
}
期望的结果:从整数序列(而不是音频文件)播放一些声音。 我也想知道如何附加到 Vec(vector)。
【问题讨论】: