zoukankan      html  css  js  c++  java
  • 音乐发生器的原理

    音乐发生器的基本知识:

      

     

    分频系数K = Fc/(Fo*2)  

    如果最大分频系数为n位2进制数,则计算最大的计算值的位数:N = n’b1111…;

    则计数范围为:置位初始值 --- 》 N

    输出为每次计数到N则翻转一次。

    每个音节的频率为:

     

    如果使用6Mhz时钟来产生音频,使用4hz时钟来产生音拍,则分频系数k,,计算初始值,计算终值列表如下:

    计数初始值 = 计数终值 -  分频系数;

    音频

    分频系数

    计数初始值

    计数终值

    低音1

    261.6

    11468

    4915

    14’h3fff

     =16383

    低音2

    293.7

    10215

    6168

    低音3

    329.6

    9102

    7281

    低音4

    349.2

    8591

    7792

    低音5

    392

    7653

    8730

    低音6

    440

    6818

    9565

    低音7

    493.9

    6073

    10310

    中音1

    523.3

    5736

    10647

    中音2

    587.3

    5111

    11272

    中音3

    659.3

    4552

    11831

    中音4

    698.5

    4289

    12094

    中音5

    784

    3827

    12556

    中音6

    880

    3409

    12974

    中音7

    987.8

    3037

    13346

    高音1

    1046.5

    2867

    13516

    高音2

    1174.7

    2554

    13829

    高音3

    1318.5

    2274

    14109

    高音4

    1396.9

    2148

    14235

    高音5

    1568

    1913

    14470

    高音6

    1760

    1705

    14678

    高音7

    1975.5

    1519

    14864

    休止音

    0

    0

    16383

    音长的控制:

    音符的持续时间根据乐曲的速度及每个音符的节拍数来确定。本次演奏的送

    别片段,最短的音符为四分音符,如果将全音符的持续时间设为1s的话,则只

    需要再提供一个4Hz的时钟频率即可产生四分音符的时长。根据乐曲演奏电路

    的原理框图可知,乐谱产生电路用来控制音乐的音调和音长。控制音调通过设计

    计数器的预制数来实现,预置不同的数值就可以使计数器产生不同频率的信号,从

    而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现的,预置

    数停留的时间越长,该音符演奏的时间久越长。每个音符的演奏时间都是0.25s

    的整数倍,对于节拍较长的音符,如二分音符,在记谱时将该音名连续记录两次

    即可。

  • 相关阅读:
    重构前的程序:通过rsync命令抓取日志文件
    标准输入、输出和错误和文件重定向
    错误处理的思考
    测试和恢复性的争论:面向对象vs.函数式编程
    哈佛经济学家关于工作效率的意外发现
    追求代码质量: 监视圈复杂度
    天猫程序猿高端算法找妹子
    代码度量工具——SourceMonitor的学习和使用
    我们能从java的HelloWorld学到什么?
    Java高新技术第二篇:反射技术
  • 原文地址:https://www.cnblogs.com/fhyfhy/p/4544525.html
Copyright © 2011-2022 走看看