【光雅集】3

本贴最后更新于 1347 天前,其中的信息可能已经时移世易

audio 时频绘图

yum -y install freetype-devel libxml2-devel expat-devel

[root@localhost mysoul]# ls
Cargo.lock  Cargo.toml  src  target  test

[root@localhost mysoul]# cat Cargo.toml 
[package]
name = "mysoul"
version = "0.1.0"
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
png = "0.16.8"
minimp3 = "0.5.1"
audio-visualizer = "0.2.2"

[root@localhost mysoul]# cat src/main.rs 
use minimp3::{Decoder as Mp3Decoder, Frame as Mp3Frame, Error as Mp3Error};
use audio_visualizer::ChannelInterleavement;
use audio_visualizer::Channels;
use audio_visualizer::waveform::staticc::png_file::waveform_static_png_visualize;
use std::path::PathBuf;
use std::fs::File;
use std::collections::BTreeMap;
use audio_visualizer::spectrum::staticc::png_file::spectrum_static_png_visualize;

fn main() {
    let mut path = PathBuf::new();
    path.push("test/samples");
    path.push("mysoul.mp3");
    let mut decoder = Mp3Decoder::new(File::open(path).unwrap());

    let mut lrlr_mp3_samples = vec![];
    loop {
        match decoder.next_frame() {
            Ok(Mp3Frame { data: samples_of_frame, .. }) => {
                for sample in samples_of_frame {
                    lrlr_mp3_samples.push(sample);
                }
            }
            Err(Mp3Error::Eof) => break,
            Err(e) => panic!("{:?}", e),
        }
    }

    waveform_static_png_visualize(
        &lrlr_mp3_samples,
        Channels::Stereo(ChannelInterleavement::LRLR),
        "test/out",
        "mysoul_waveform.png"
    );

    let mut spec = BTreeMap::new();

    spectrum_static_png_visualize(
        &spec,
        "test/out",
        "mysoul_spectrum.png",
        &[]
    );
}

[root@localhost mysoul]# ls test
out  samples

左右声道可见

rightmysoulwaveform.png

leftmysoulwaveform.png

频率不可见

mysoulspectrum.png

使用 spek 可见

mysoul.png

对比频率图表

以 A4=440Hz 为准

Note Frequency (Hz) Wavelength (cm)
C0 16.35 2109.89
C^#^0 /D^b^ 0 17.32 1991.47
D0 18.35 1879.69
D^#^0 /E^b^ 0 19.45 1774.20
E0 20.60 1674.62
F0 21.83 1580.63
F^#^0 /G^b^ 0 23.12 1491.91
G0 24.50 1408.18
G^#^0 /A^b^ 0 25.96 1329.14
A0 27.50 1254.55
A^#^0 /B^b^ 0 29.14 1184.13
B0 30.87 1117.67
C1 32.70 1054.94
C^#^1 /D^b^ 1 34.65 995.73
D1 36.71 939.85
D^#^1 /E^b^ 1 38.89 887.10
E1 41.20 837.31
F1 43.65 790.31
F^#^1 /G^b^ 1 46.25 745.96
G1 49.00 704.09
G^#^1 /A^b^ 1 51.91 664.57
A1 55.00 627.27
A^#^1 /B^b^ 1 58.27 592.07
B1 61.74 558.84
C2 65.41 527.47
C^#^2 /D^b^ 2 69.30 497.87
D2 73.42 469.92
D^#^2 /E^b^ 2 77.78 443.55
E2 82.41 418.65
F2 87.31 395.16
F^#^2 /G^b^ 2 92.50 372.98
G2 98.00 352.04
G^#^2 /A^b^ 2 103.83 332.29
A2 110.00 313.64
A^#^2 /B^b^ 2 116.54 296.03
B2 123.47 279.42
C3 130.81 263.74
C^#^3 /D^b^ 3 138.59 248.93
D3 146.83 234.96
D^#^3 /E^b^ 3 155.56 221.77
E3 164.81 209.33
F3 174.61 197.58
F^#^3 /G^b^ 3 185.00 186.49
G3 196.00 176.02
G^#^3 /A^b^ 3 207.65 166.14
A3 220.00 156.82
A^#^3 /B^b^ 3 233.08 148.02
B3 246.94 139.71
C4 261.63 131.87
C^#^4 /D^b^ 4 277.18 124.47
D4 293.66 117.48
D^#^4 /E^b^ 4 311.13 110.89
E4 329.63 104.66
F4 349.23 98.79
F^#^4 /G^b^ 4 369.99 93.24
G4 392.00 88.01
G^#^4 /A^b^ 4 415.30 83.07
A4 440.00 78.41
A^#^4 /B^b^ 4 466.16 74.01
B4 493.88 69.85
C5 523.25 65.93
C^#^5 /D^b^ 5 554.37 62.23
D5 587.33 58.74
D^#^5 /E^b^ 5 622.25 55.44
E5 659.25 52.33
F5 698.46 49.39
F^#^5 /G^b^ 5 739.99 46.62
G5 783.99 44.01
G^#^5 /A^b^ 5 830.61 41.54
A5 880.00 39.20
A^#^5 /B^b^ 5 932.33 37.00
B5 987.77 34.93
C6 1046.50 32.97
C^#^6 /D^b^ 6 1108.73 31.12
D6 1174.66 29.37
D^#^6 /E^b^ 6 1244.51 27.72
E6 1318.51 26.17
F6 1396.91 24.70
F^#^6 /G^b^ 6 1479.98 23.31
G6 1567.98 22.00
G^#^6 /A^b^ 6 1661.22 20.77
A6 1760.00 19.60
A^#^6 /B^b^ 6 1864.66 18.50
B6 1975.53 17.46
C7 2093.00 16.48
C^#^7 /D^b^ 7 2217.46 15.56
D7 2349.32 14.69
D^#^7 /E^b^ 7 2489.02 13.86
E7 2637.02 13.08
F7 2793.83 12.35
F^#^7 /G^b^ 7 2959.96 11.66
G7 3135.96 11.00
G^#^7 /A^b^ 7 3322.44 10.38
A7 3520.00 9.80
A^#^7 /B^b^ 7 3729.31 9.25
B7 3951.07 8.73
C8 4186.01 8.24
C^#^8 /D^b^ 8 4434.92 7.78
D8 4698.63 7.34
D^#^8 /E^b^ 8 4978.03 6.93
E8 5274.04 6.54
F8 5587.65 6.17
F^#^8 /G^b^ 8 5919.91 5.83
G8 6271.93 5.50
G^#^8 /A^b^ 8 6644.88 5.19
A8 7040.00 4.90
A^#^8 /B^b^ 8 7458.62 4.63
B8 7902.13 4.37

🙋
如何表格中上色?

  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    177 引用 • 816 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    77 引用 • 430 回帖
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖 • 4 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 407 回帖 • 490 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 465 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 139 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 637 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 3 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 528 关注
  • 导航

    各种网址链接、内容导航。

    42 引用 • 175 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖 • 1 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 632 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 2 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    313 引用 • 547 回帖
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 63 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖 • 1 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖 • 1 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1706 回帖
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 316 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    170 引用 • 414 回帖 • 387 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 626 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 3 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 60 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    53 引用 • 40 回帖 • 1 关注
  • 反馈

    Communication channel for makers and users.

    123 引用 • 913 回帖 • 250 关注