一种生成基准音的方法和音阶发生器与流程

文档序号:13210904阅读:746来源:国知局
一种生成基准音的方法和音阶发生器与流程

本发明涉及音阶发生领域,尤其涉及一种生成基准音的方法和音阶发生器。



背景技术:

基准音是具有特定频率的标准音阶,目前,产生十二个基准电子音阶的方法有如下几种:

一、采用十二个rc振荡器实现基准音发生器,这种基准音阶发生器的稳定性和准确性都比较差,应用很少。

二、采用十二个lc振荡器实现基准音发生器,这种基准音阶发生器的体积大,且稳定性和可靠性一般,电子琴中有少量应用。

三、采用二次分频法实现基准音发生器,采用这种方法,十二个基准音使用同一个振荡器产生,通过十二组不同的计数器和不同的分频次数,按一定的误差要求取得基准音阶频率信号,由于都由一个振荡源产生基准音,因此其稳定性较好,但想要得到较高的精度,振荡源的频率一定要高,同时也要使分频数值增大,一般是主振频率为2mhz,分频系数取整数,这样会造成精度降低,无法产生高精度的基准音。



技术实现要素:

本发明所要解决的技术问题是针对现有技术无法产生高精度基准音的不足,提供一种生成基准音的方法和音阶发生器。

本发明解决上述技术问题的技术方案如下:

一种生成基准音的方法,包括以下步骤:

步骤1,振荡源产生频率为预设频率的初始信号;

步骤2,二进制计数器对所述初始信号进行处理,将所述初始信号以地址输入的方式发送给存储有分频次数和分频系数的存储器;

步骤3,存储器根据所述分频次数和所述分频系数对所述预设频率进行分频,得到基准音。

本发明的有益效果是:本发明提供的一种生成基准音的方法,通过使用预先设置有分频次数和分频系数的存储器对初始信号进行分频,实现了通过存储器对初始信号进行分频,具有分频方法简单,且得到的基准音阶精度高的优点。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步地,在步骤1之前,还包括:

步骤3,处理器获取所述存储器的存储容量、所述预设频率和需要产生的所述基准音的频率;

步骤4,处理器根据所述预设频率、所述存储容量和所述基准音的频率,计算得到所述分频次数和所述分频系数。

进一步地,步骤4中,具体包括:

步骤4.1,处理器根据所述预设频率和所述基准音的频率,计算得到分频系数;

步骤4.2,当所述分频系数为小数时,处理器对所述分频系数进行向下取整和向上取整,分别得到第一近似分频系数和第二近似分频系数;

步骤4.3,处理器根据所述存储容量、所述第一近似分频系数和所述第二近似分频系数,计算得到与所述第一近似分频系数对应的第一分频次数,以及与所述第二近似分频系数对应的第二分频次数。

进一步地,步骤4.3中,具体包括:

步骤4.3.1,处理器根据所述存储容量和所述第一近似分频系数,或根据所述存储容量和所述第二近似分频系数,计算得到总分频次数;

步骤4.3.2,当所述总分频次数为小数时,向下取整得到近似分频次数;

步骤4.3.3,处理器根据所述近似分频次数、所述存储容量、所述第一近似分频系数和所述第二近似分频系数,计算得到所述第一分频次数和所述第二分频次数。

采用上述进一步方案的有益效果是:通过上述步骤计算分频次数和分频系数,可以使

进一步地,根据以下公式计算所述分频系数:

其中,fz为预设频率,fn为基准音的频率,b为分频系数。

进一步地,根据以下公式计算所述总分频次数:

其中,m为存储容量,b1为第一近似分频系数,b2为第二近似分频系数,x为总分频次数。

进一步地,根据以下公式计算所述第一分频次数和所述第二分频次数:

2b1x1+2b2x2=m,

x1+x2=x′;

其中,b1为第一近似分频系数,b2为第二近似分频系数,x1为第一分频次数,x2为第二分频次数,m为存储容量,x′为近似分频次数。

本发明解决上述技术问题的另一种技术方案如下:

一种音阶发生器,使用上述技术方案中记载的生成基准音的方法产生基准音。

具体包括:振荡源、二进制计数器和存储器,所述振荡源用于产生频率为预设频率的初始信号,所述二进制计数器用于对所述初始信号进行处理,将所述初始信号以地址输入的方式发送给存储有分频次数和分频系数的存储器,所述存储器用于根据预存的分频系数和对应的分频次数对所述初始频率进行分频,得到基准音。

本发明的有益效果是:本发明提供的一种音阶发生器,具有结构简单,使用方便的优点,且通过存储器对初始信号进行分频,得到的基准音具有精度高的优点。

本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。

附图说明

图1为本发明实施例提供的一种生成基准音的方法的流程示意图;

图2为本发明另一实施例提供的一种生成基准音的方法的流程图;

图3为本发明另一实施例提供的一种计算分频次数和分频系数方法的流程图;

图4为本发明另一实施例提供的一种音阶发生器的结构示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图1所示,为本发明实施例提供的一种生成基准音的方法的流程示意图,在该方法中,包括以下步骤:

s101,振荡源产生频率为预设频率的初始信号,这里的初始信号的预设频率为满足存储器的整数分频要求并且为了减少基准音的误差,需要使用高频率的初始信号,例如,初始信号的频率可以为24mhz。

s102,二进制计数器对初始信号进行处理,将初始信号以地址输入的方式发送给存储有分频次数和分频系数的存储器。

s103,存储器根据分频次数和分频系数对预设频率进行分频,得到基准音。

下面进行详细说明。

二进制计数器(分频器)把计数器的输出q0、q1、q2、…、qn,分别以地址输入的方式接到一个存有分频系数和分频次数的存储容量为m的存储器的地址输入端a0、a1、a2、…、an,其中,q0就是a0的信号频率,记为fz,在振荡源的作用下,该存储器的数据输出端就会循环地输出从地址单元a0=0、a1=0、a2=0、…、an=0至a0=1、a1=1、a2=1、…、an=1所对应的数据。

如果该存储器是16位数据的,通过合理设置存储器中的分频系数和分频次数,就可以让存储器的输出端口d0、d1、d2、…、d15中的12位,例如,可以为d0~d11对应输出12个基准音的频率信号。

本实施例提供的一种生成基准音的方法,通过使用预先设置有分频次数和分频系数的存储器对初始信号进行分频,实现了通过存储器对初始信号进行分频,具有分频方法简单,且得到的基准音阶精度高的优点。

如图2所示,为本发明另一实施例提供的一种生成基准音的方法的流程图,从上一实施例中可以看出,在通过存储器产生基准音之前,需要对存储器中的分频次数和分频系数进行设置,因此,在产生基准音之前,还包括设置分频次数和分频系数的步骤,因此,该方法具体包括:

s201,处理器获取存储器的存储容量、预设频率和需要产生的基准音的频率。

s202,处理器根据预设频率、存储容量和基准音的频率,计算得到分频次数和分频系数。

s203,振荡源产生频率为预设频率的初始信号,这里的初始信号的预设频率为满足存储器的整数分频要求并且为了减少基准音的误差,需要使用高频率的初始信号。

s204,二进制计数器对初始信号进行处理,将初始信号以地址输入的方式发送给存储有分频次数和分频系数的存储器。

s205,存储器根据分频次数和分频系数对预设频率进行分频,得到基准音。

可以理解,其中步骤s201和s202是在产生基准音之前的准备步骤,不包含在产生基准音的常规步骤之内。

如图3所示,为本发明另一实施例提供的一种计算分频次数和分频系数方法的流程图,由于技术上的限制,存储器无法存储小数,这是目前无法通过存储器产生基准音的主要原因,通过上述实施例可以看出,如何合理地设置存储器的分频系数和分频次数是难点,因此,下面对设置存储器中分频系数和分频次数的方法进行详细说明。

该方法包括以下步骤:

s310,处理器获取存储器的存储容量m、预设频率fz和需要产生的基准音的频率fn。例如,存储器可以为256mb的16位flash,其存储容量m为16777216,预设频率fz可以为24mhz,基准音的频率fn可以为十二个基准音频率中的任一个,例如8372hz。

s320,处理器根据预设频率fz、存储容量m和基准音的频率fn,计算得到分频次数和分频系数。

具体地,步骤s320中包括以下步骤:

s3201,处理器根据预设频率fz和基准音的频率fn,计算得到分频系数b;

这里得到的分频系数b通常为小数。

s3202,当分频系数b为小数时,处理器对分频系数b进行向下取整和向上取整,分别得到第一近似分频系数b1和第二近似分频系数b2;

例如,假设当计算得到的b为2866.69时,第一近似分频系数b1就可以取2866,第二近似分频系数b2就可以取2867,为便于得到合理的分频次数和分频系数,第一近似分频系数b1也可以取2866,第二近似分频系数b2也可以取2866,或者,第一近似分频系数b1取2867,第二近似分频系数b2取2866,或者,第一近似分频系数b1取2867,第二近似分频系数b2取2867。

s3203,处理器根据存储容量m和第一近似分频系数b1,或根据存储容量m和第二近似分频系数b1,计算得到总分频次数x;

这里的总分频次数通常为小数,由于m非常大(16777216),且第一近似分频系数b1和第二近似分频系数b2相差1,因此,可以认为通过第一近似分频系数b1计算得到的总分频次数x和通过第二近似分频系数b2计算得到的总分频次数x近似相同。

例如,当第一近似分频系数b1取2866,第二近似分频系数b2取2867时,经过计算,总分频次数x分别为2926.939和2925.918。

s3204,当总分频次数x为小数时,向下取整得到近似分频次数x′;

这里以通过第一近似分频系数b1计算得到的总分频次数x为例,2926.939向下取整得到近似分频次数x′为2926。

s3205,处理器根据近似分频次数x′、存储容量m、第一近似分频系数b1和第二近似分频系数b2,计算得到第一分频次数x1和第二分频次数x2;

第一分频次数x1和第二分频次数x2可以通过以下两个公式联立求解:

2b1x1+2b2x2=m,

x1+x2=x′;

经过计算,就可以得到第一分频次数x1和第二分频次数x2的整数解。

下面结合计算实例对本发明进行说明。

十二个基准音的频率分别为f1=8372hz,f2=7902.12hz,f3=7458.6hz,f4=7040hz,f5=6644.84hz,f6=6271.92hz,f7=5919.92hz,f8=5587.64hz,f9=5274.4hz,f10=4978.04hz,f11=4698.64hz,f12=4434.92hz,下面以计算基准音f1为例,对计算过程进行详细说明,并给出其余基准音的简要计算过程。

基准音f1的分系数和分频次数计算过程:

先计算分频系数b:

fz/f1=24000000hz/8372hz=2866.69;

再对分频系数b向下取整,得到b1=2866,再对分频系数b向上取整,得到b2=2867;

再计算总分频次数x:

x=m/2b1=16777216/(2*2866)=2926.939;

再对总分频次数x取整,得到近似分频次数x′=2926;

再计算第一分频次数x1和第二分频次数x2:

x1+x2=2926;

2*2866*x1+2*2867*x2=16777216;

联立上述两个方程,解得x1=234,x2=2692。

得到分频次数和分频系数后,就可以对初始信号进行分频得到基准音了,分别得到以下两个按对应分频次数输出的频率:

f1′=24000000hz/2866=8374.04hz;

f1″=24000000hz/2867=8371.12hz;

可以看出与基准音的频率8372hz相比,误差很小,能够达到高精度的要求。

下面结合存储器的工作原理,对根据x1=234和x2=2692对初始信号进行分频得到基准音f1的方法进行详细说明。

在存储器从0开始连续的地址对应的f1输出位中,连续存入2866(即b1)个“1”,接着连续存入2866个“0”,连续循环存入234次(即x1),再连续存入2867个“1”,接着连续存入2867个“0”,连续循环存入2692次(即x2),这时,存满了存储器的16777216个单元,这样,就可以通过存储器对初始信号进行分频,得到基准音f1了。

其他基准音的分频次数和分频系数的计算过程同理。

如图4所示,为本发明另一实施例提供的一种音阶发生器的结构示意图,该音阶发生器包括:振荡源41、二进制计数器42和存储器43,振荡源41用于产生频率为预设频率的初始信号,二进制计数器42用于对初始信号进行处理,将初始信号以地址输入的方式发送给存储有分频次数和分频系数的存储器43,存储器43用于根据预存的分频系数和对应的分频次数对初始频率进行分频,得到基准音。

优选地,还可以包括处理器44,用于根据方法实施例中的步骤设置存储器43的分频系数和分频次数。

读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1