V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zonghua
V2EX  ›  程序员

想了解一下怎么用程序实现音频生成?可以调节音频,波形,以至 PWM。

  •  
  •   zonghua · 2015-07-11 14:34:29 +08:00 · 5639 次点击
    这是一个创建于 3424 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前从没了解过相关音视频的编码,不知道怎么样才能生成目标信号。
    PWM

    像这样的

    信号发生器 Signal Generator http://www.mumayi.com/android-69111.html
    app

    生成音频

    音频输出有立体声双通道

    这是一个很有创意的想法

    markdown怎么退出段落

    27 条回复    2015-07-13 09:59:51 +08:00
    zhengnanlee
        1
    zhengnanlee  
       2015-07-11 14:57:42 +08:00 via Android   ❤️ 1
    信号是可以通过傅里叶变换分解成一系列不同频率不同振幅的正弦波的。当然这有一定的条件,dirichlet条件。同样的,合成一个信号,可以把不同频率相加即可。这里涉及到采样,是对应样点的幅值相加。用程序生成音频就可以用上述思路实现了
    zonghua
        2
    zonghua  
    OP
       2015-07-11 15:02:55 +08:00
    @zhengnanlee 你说的是后续定制的波形的步骤,首先我想怎么生成音频信号?比如用Java或者C#。
    zhengnanlee
        3
    zhengnanlee  
       2015-07-11 15:44:48 +08:00 via Android
    @zonghua 应该是有现成的库。如果没有的话,找一个中央c的音频文件,加速二倍就是高了2个8度
    em70
        4
    em70  
       2015-07-11 15:49:45 +08:00
    要完全掌控模拟发声得先学习大量信号学基础才行吧,你需求是什么,如果是朗读有TTS,如果是音乐有各种模拟乐器库
    zonghua
        5
    zonghua  
    OP
       2015-07-11 15:53:37 +08:00
    @em70 好吧,看来我的需求是“怎么产生特定频率的正弦波”
    hardware
        6
    hardware  
       2015-07-11 16:01:31 +08:00
    安卓自带的api就可以生成音频啊
    raptor
        7
    raptor  
       2015-07-11 16:14:30 +08:00   ❤️ 1
    给你看个我在1996年写的程序:
    http://mental.we8log.com/mental/entry/25/my_weblog
    通过PWM方式让pc speaker播放wav文件。
    zonghua
        8
    zonghua  
    OP
       2015-07-11 16:19:05 +08:00
    @hardware 呜,我没有安卓手机,只有WP。。想知道java或者C#基本的类库里面有没有。

    @raptor 好早,96年我还不会走呢。
    qiayue
        9
    qiayue  
       2015-07-11 16:19:58 +08:00
    关键字 hijack
    yangff
        10
    yangff  
       2015-07-11 16:50:14 +08:00
    DynamicSoundEffectInstance
    zonghua
        11
    zonghua  
    OP
       2015-07-11 16:52:15 +08:00
    @yangff 对哦,游戏是最需要音效的

    @qiayue 那是一个应用程序吧?
    ibigbug
        12
    ibigbug  
       2015-07-11 17:10:01 +08:00
    python 的话可以用 scipy 读写 wave 文件,写一个正弦函数的序列进去就好了
    qiayue
        13
    qiayue  
       2015-07-11 17:31:44 +08:00
    @zonghua hijack 是国外的一个用于手机 APP 和硬件(比如 SQUARE 的刷卡器)通过耳机口通信的解决方案
    qiayue
        14
    qiayue  
       2015-07-11 17:33:58 +08:00
    @zonghua http://36kr.com/p/11068.html
    目前市面上的所谓智能肌肤水分检测仪,大部分都是通过耳机口通讯的(也有少部分用蓝牙)
    zonghua
        15
    zonghua  
    OP
       2015-07-11 18:00:31 +08:00
    @qiayue #我想到的是用来驱动电调或者舵机,用滤波器或者整流器就有多通道,不用碰数字电路。
    ck65
        16
    ck65  
       2015-07-11 18:30:05 +08:00
    https://github.com/search?utf8=%E2%9C%93&q=oscillator

    lz 需要一个振荡器。然后再研究一下包络。然后再添加一个放大器。然后,一个新合成器出世了。
    theoractice
        17
    theoractice  
       2015-07-11 18:43:42 +08:00
    找个NES模拟器的源码看看。锯齿波方波神马的
    lincanbin
        18
    lincanbin  
       2015-07-11 19:22:25 +08:00 via Android
    直接按wav文件结构逐字节写文件,44字节文件头和文件内容,结构非常简单。
    bdbai
        19
    bdbai  
       2015-07-11 19:30:54 +08:00 via iPhone
    多换个空行就行了
    zonghua
        20
    zonghua  
    OP
       2015-07-11 19:39:52 +08:00
    @lincanbin 所以我要好好了解一下音频图像编码咯?
    laobubu
        21
    laobubu  
       2015-07-11 20:11:27 +08:00 via Android
    就用 WAV 文件,简单粗暴,在数据头之后,直接用循环对数据(如果wav数据格式为无符号整形,可以视作占空比)逐个处理就是了…
    zonghua
        22
    zonghua  
    OP
       2015-07-11 22:55:45 +08:00
    @laobubu 又没哟参考文档呢?给个链接。我暂时不好找
    lincanbin
        23
    lincanbin  
       2015-07-11 23:45:47 +08:00
    @zonghua 不需要,wav文件结构非常简单,网上随便找一下就有很多资料了,随便看一下结构就可以开始动工了。
    xieyudi1990
        24
    xieyudi1990  
       2015-07-12 01:16:28 +08:00 via iPhone
    你这显然是类似于D类放大器的发声方法. 搜下几个电子论坛, 一大堆用PWM放音乐的帖子.
    yangff
        25
    yangff  
       2015-07-12 01:49:56 +08:00 via Android
    @zonghua 不是告诉你DynamicSoundEffectInstance了吗
    直接把PCM格式的wave用SubmitBuffer灌进去就行了。
    Shazoo
        26
    Shazoo  
       2015-07-13 09:21:24 +08:00
    手机一般是44k的采样率,16bit的采样长度。

    你简单的生成short数组,内容随机,灌到输出buffer里面就完了……

    播放出来就是传说中的白噪声。

    当然,如果要高斯白噪声,得保持信号的直流分量为0……额,你灌进去的随机数数组的和是0.
    zonghua
        27
    zonghua  
    OP
       2015-07-13 09:59:51 +08:00
    @Shazoo 考完试我好好弄一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2779 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:11 · PVG 16:11 · LAX 00:11 · JFK 03:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.