JP2008216916A - 波形生成装置、音源用シンセサイザ - Google Patents

波形生成装置、音源用シンセサイザ Download PDF

Info

Publication number
JP2008216916A
JP2008216916A JP2007057740A JP2007057740A JP2008216916A JP 2008216916 A JP2008216916 A JP 2008216916A JP 2007057740 A JP2007057740 A JP 2007057740A JP 2007057740 A JP2007057740 A JP 2007057740A JP 2008216916 A JP2008216916 A JP 2008216916A
Authority
JP
Japan
Prior art keywords
value
block
pos
waveform
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007057740A
Other languages
English (en)
Other versions
JP4554629B2 (ja
Inventor
Norimasa Isobe
憲昌 磯辺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Faith Inc
Original Assignee
Faith Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Faith Inc filed Critical Faith Inc
Priority to JP2007057740A priority Critical patent/JP4554629B2/ja
Publication of JP2008216916A publication Critical patent/JP2008216916A/ja
Application granted granted Critical
Publication of JP4554629B2 publication Critical patent/JP4554629B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

【課題】簡単な手段によって高速で波長変換を行うことが可能な波形生成装置を提供する。
【解決手段】ピッチ変換部3は、補間手段と、合計値算出手段と、量子化手段とを備えている。補間手段は、PDM信号を構成する各1ビット信号の間にゼロ値を補間する。合計値算出手段は、ゼロ値補間後のデータ列をブロック単位で読み出し、各ブロックごとにPDM信号のビット値とピッチ変換倍数との乗算値を合計した合計値を算出する。量子化手段は、各ブロックにおける合計値に基づいて量子化を行い、各ブロックに1または0の値を割り当てて出力する。
【選択図】図1

Description

本発明は、波形メモリに記憶されている波形データを読み出して所定の波形を生成する波形生成装置、およびそれを用いた音源用シンセサイザに関するものである。
一般に、音源用シンセサイザは、楽器の音をサンプリングして得られる波形データを記憶した波形メモリを備え、この波形メモリから読み出した波形データに対して所定の処理を行い、楽音を出力するように構成されている。波形データはデジタル値で表現されるが、波をデジタル表現する変調方式として代表的なものにPCM(Pulse Code Modulation)方式がある。PCM方式では、それぞれの時刻における波の高さが数値で表現される。このようなデジタル値で表現された波は、数学的手法によって波長の変換が可能である。波長変換は、楽音の音程を上げたり下げたりする場合に必要となる処理である。
図10は、PCM方式により変調された波形を示す図であり、W1は波形メモリに記憶されているPCM波形、W2はW1を波長変換した場合のPCM波形である。W1の波長λに対して、W2の波長はλ×n(n倍)に変換されている。なお、ここでは便宜上、PCM波形W1,W2を連続波として描いてあるが、実際のPCM波形W1,W2はもちろん連続波ではなく、所定時間間隔でサンプリングされた離散的な信号となる。
このような波長変換を行うための代表的な手法として、もとの波形のサンプリング時間間隔を1/nにしてサンプル値を読み出す方法がある。この場合、サンプリングのタイミングによっては、サンプル値が波形メモリに存在しないことがあるので、サンプル総数が少なくなって波形の誤差が大きくなる。このため、補間処理によって仮想的なサンプル値を生成する必要がある。後掲の特許文献1には、このような補間処理の機能を備えた楽音生成装置が記載されている。
補間の手法として最も単純なものは、波形上の2点の波の高さと時間間隔から幾何学的に2点間の補間点を求める2点直線補間である。しかし、この方法は単純な波形の場合には有効であるが、波形が複雑になると補間の精度が低下するという欠点がある。そこで、複雑な波形の場合には、もう少し高度な補間処理を行う必要がある。このための手法の1つに、Shannonのサンプリング定理を応用して、ローパスフィルタのインパルス応答による畳み込み演算を行うことにより補間を行う方法がある。しかしながら、畳み込み演算を行うには複雑な回路を必要とし、回路が大規模になってコストが増加するという問題がある。
一方、波長変換の他の手法として、後掲の非特許文献1に示されているような一般調和解析を用いたピッチ変換方法がある。一般調和解析は、観測窓内で原波形から残差成分が最小となる正弦波を抽出し、残差成分に対して同様の処理を繰り返す解析方法であって、正確な周波数成分の抽出が可能であるという利点を有している。しかしながら、この方法では計算量が多くなり処理に時間がかかるという問題がある。
特開2003−233378号公報 「一般調和解析を用いた高速1bit音響信号の時間軸圧伸・ピッチ変換」(林雅尚・山崎芳男・及川靖広、日本音響学会講演論文集、603−604頁、1996年9月)
以上のように、従来の波長変換方法では、回路が複雑になったり処理に時間を要するという問題があった。そこで、本発明は、簡単な手段によって高速で波長変換を行うことが可能な波形生成装置を提供することを目的とする。
本発明に係る波形生成装置は、波形データが記憶されている波形メモリと、その波形データに基づいて生成される波形のピッチをN/M倍に変換するためのピッチ変換部とを有する波形生成装置であって、ピッチ変換部は、補間手段と、合計値算出手段と、量子化手段とを備えている。補間手段は、波形データから得られるPDM(Pulse Density Modulation;パルス密度変調)信号を構成する各1ビット信号の間に、N−1個のゼロ値を補間する。合計値算出手段は、補間手段で補間された後のデータ列を、M個のビットを含むブロックを1単位として順次読み出し、各ブロックごとに、NおよびMの値で定まるビット位置のビット値とNの値との乗算値を合計した合計値Xを算出する。量子化手段は、当該ブロックにおける合計値Xと1つ前のブロックでの量子化で得られた余り値とを加算した合計値Yに対して、Mの値を閾値として量子化を行うことにより、各ブロックに1または0の値を割り当てて当該値を出力するとともに、当該量子化で得られた余り値を次のブロックの合計値Xに加算する。
このような本発明においては、PDM信号を構成する1ビット信号のピッチを補間処理によってずらし、補間後のデータ列をブロック単位で読み出してブロックごとに量子化を行うことにより、1ビット信号のままでピッチを変換することができる。このため、畳み込み演算や一般調和解析などの複雑な演算処理が不要となり、簡単な手段によってピッチ変換処理を高速に行うことができる。また、NおよびMの値を任意に設定することで、所望のピッチを有する波形を容易に得ることが可能となる。
本発明の好ましい実施形態では、量子化手段としてΔΣ変調器が用いられる。これによると、専用の演算回路を設計しなくても、既存のΔΣ変調器の機能を利用して、量子化や余り値の加算処理を容易に実現することができる。
本発明に係る音源用シンセサイザは、上述した波形生成装置と、この波形生成装置で生成された音の波形に対して、所定の信号処理を行う信号処理部と、この信号処理部で処理された信号に基づいて音を出力する出力部とを備える。取り扱う音としては、楽音に限らず、人の声や擬似音など、あらゆる音を対象とすることができる。
本発明によれば、PDM信号の波形に対して、複雑な処理を必要とせずに高速で波長変換を行うことができる効果がある。
図1は、本発明の実施形態による音源用シンセサイザの全体構成を示すブロック図である。1は、楽音の波形データを記憶した波形メモリであって、例えば、図3(a)に示すようなPCM信号の波形データが記憶されている。ここでも、便宜上PCM波形を連続波で描いてあるが、実際のPCM波形はサンプリングされた離散的な信号となる。なお、波形メモリ1に記憶される波形データは、PCM信号に限らず後述するPDM信号であってもよい。
2は、信号変換を行うPCM/PDM変換部であって、波形メモリ1から読み出された図3(a)のPCM信号を図3(b)のような2値のPDM信号に変換する。この変換は、公知のデルタ・シグマ(ΔΣ)変調により行われる。なお、波形メモリ1に記憶されている波形データがPDM信号である場合は、このPCM/PDM変換部2は不要となる。
3は、本発明の要部であるピッチ変換部であって、PCM/PDM変換部2から出力されるPDM信号を構成する1ビット信号に対してピッチ変換を行う。図2は、ピッチ変換部3の構成を表した図である。実際には、ピッチ変換部3の各機能はソフトウェアにより実現されるが、ここでは便宜上ハードウェアで表してある。3aは重み付け部であって、PDM信号のピッチをN/M倍に変換する場合に、ユーザにより指定されたNの値の設定を行う。3bはゼロ値補間部であって、PDM信号の各1ビット信号間に、1ビット信号としてN−1個の0値を補間する。3cは合計値算出部であって、ゼロ値補間後のデータ列を、M個のビットを含むブロックを1単位として順次読み出し、各ブロックごとに、NとMの値で定まるビット位置のビット値とNの値との乗算値を合計した合計値を算出する。3dは量子化部であって、後述する量子化処理により各ブロックに1または0の値を割り当てて出力する。
上述した波形メモリ1、PCM/PDM変換部2およびピッチ変換部3によって、波形生成装置100が構成される。また、ピッチ変換部3におけるゼロ値補間部3b、合計値算出部3c、量子化部3dは、それぞれ本発明における補間手段、合計値算出手段、量子化手段の一実施形態を構成している。
4は、波形生成装置100で生成された波形に対して所定の信号処理を行う信号処理部である。信号処理部4では、ピッチ変換部3でピッチ変換されたPDM信号をローパスフィルタに通すことによりPCM信号に変換する。また、信号処理部4には、PCM信号に対しカットオフ周波数を時間的に変化させて音色を制御する時変フィルタ部や、時変フィルタ部の出力に対してゲインを時間的に変化させて減衰処理を行う時変増幅部、複数の音を合成するためのミキシング処理を行うミキサなどが設けられる。
5は、信号処理部4で処理された信号に基づいて音を出力する出力部であって、例えば信号処理部4から出力されるPCM信号が楽音信号の場合は、図示しないスピーカから楽音を出力する。
ピッチ変換部3における量子化部3dは、デルタ・シグマ(ΔΣ)変換を行う公知のΔΣ変調器により構成することができる。図4は、ΔΣ変調器50の一例を示すブロック図である。51は入力値と出力フィードバック値との差分を演算する演算器、52は演算器51の出力と遅延回路53の出力とを加算する演算器である。遅延回路53は、入力される信号を1サンプリング期間だけ保持し、次のサンプリングで、保持した信号を出力する。演算器52と遅延回路53は積分器56を構成する。54は積分器56の出力に対してMを閾値として量子化を行う量子化回路であって、入力値がM以上であれば「1」を出力し、入力値がM未満であれば「0」を出力する。55はフィードバックゲインがτに設定されている乗算器である。
図5は、本発明によるピッチ変換の原理を示した図である。図5を参照して、まず本発明の原理を説明する。
図5の(a)は、波形メモリ1に記憶されている元のPCM信号の波形(波長λ1)と、これに対応するPDM信号の波形を示している。(b)は、ピッチ変換した後のPCM信号(波長λ2)と、これに対応するPDM信号の波形を示している。なお、図ではPDM信号の波形は簡略化して描かれている。(c)は、(a)のPCM信号の破線で囲んだ部分の拡大図であり、Q1〜Q6は、各サンプリング時点でのサンプル値を表している。点線は、サンプリング区間をM分割(例えばM=5)した場合の各時点における仮想サンプル値であって、実データではない。(d)は、(c)のPCM信号に対応するPDM信号のビット値を示しており、実線が1、破線が0を表している。便宜上、各ビット値はサンプル値Q1〜Q6と同じタイミングで図示してある。網掛で示した数字は、各サンプリング区間におけるビット値であり、実線と破線で示されるビット値と一致している。
図5(a)の波形から図5(b)の波形を得るには、まず、PDM信号を構成する各1ビット信号の間にゼロ値を補間する。今、波形のピッチをN/M倍(λ2=λ1×N/M)に変換する場合は、元のPDM信号の1ビット信号間に、N−1個の「0」を補間する。例えば、N=9とすると、(f)で示したように、1ビット信号間に8個の「0」が挿入される。この結果、(d)における実線と破線のビット値が、(f)のようにずれてゆく。但し、各ビット間の間隔は一定(N=9)である。
次に、図5(f)において、各サンプリング区間のデータ列(補間ゼロ値を含むM個のデータ)を1ブロックとして、ブロック単位で順次データ列を読み出す。そして、各ブロックに含まれる実線と破線のビット値(1または0)とNの値を用いて後述する演算を行い、その演算結果に基づき各ブロックに1または0を割り当てる。網掛で示した数字が、この割り当てられたビット値を表している。ピッチを伸長する場合は、同じサンプリング時点でのPCM信号の波の高さが小さくなるので、これに応じてPDM信号のビット値も元のPDM信号のビット値から変化する。この変化後のビット値から構成されるPDM信号に対応したPCM信号は図5(e)のようになり、これは(b)に示したPCM信号の破線で囲んだ部分に該当する。したがって、(f)で得られた網掛のデータ列からなるPDM信号をローパスフィルタに通してPCM信号に戻すことによって、波長がN/M倍に変換された(b)のPCM信号を得ることができる。
図6は、ゼロ値補間の様子を詳細に示した図である。ここでは、M=8、N=9として、ピッチをN/M=9/8倍に伸長する場合の例を挙げている。(a)はもとのPDM信号を構成するビット信号のデータ列、(b)は(a)のデータ列の各ビット信号間にN−2=7個の「0」を補間したデータ列、(c)は(a)のデータ列の各ビット信号間にN−1=8個の「0」を補間したデータ列を示している。(b)は参考例として挙げたもので、本発明ではこのデータ列は用いない。また、(c)のデータ列に補間された「0」は、PDM信号のビット信号(網掛部分)を所定ビットずらすためだけに挿入されたものであり、後述する演算処理には用いられない。図5でも述べたように、補間後の(c)のデータ列は、サンプリング区間に相当するM個(=8個)のビットを含むブロックを1ブロックとして、ブロック単位で読み出される。
次に、上述した原理に基づく本発明のピッチ変換方法の詳細について、具体例に即して説明する。図7は、図1のピッチ変換部3におけるピッチ変換の手順を示したフローチャートである。図8はピッチを伸ばす場合のデータ演算の例を示した図、図9はピッチを縮める場合のデータ演算の例を示した図である。
最初に、ピッチを伸ばす場合につき、図8(A)を例に挙げてピッチ変換手順を説明する。図8(A)において、(a)は第1ブロック、(b)は第2ブロック、(c)は第3ブロック、(d)は第4ブロックを表している。
図7のステップS1では、変数の初期化を行う。変数としては、ピッチ変換部3に入力される入力値in、ピッチ変換部3から出力される出力値out、図8の各ブロック内におけるビット位置を指定するカーソル値pos、および各ブロックごとに算出される後述の合計値sumがある。初期化により、これらの変数は全て0となる。
ステップS2では、カーソル値posがM以上か否かが判定される。図8(A)は、ピッチを9/8倍にする場合であり、NとMの値はそれぞれN=9、M=8に設定される。最初はpos=0であるから、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第1ブロック(a)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値posにN(=9)を加算する。これにより、第1ブロック(a)におけるposは0+9=9となる。次に、ステップS11で、読み込んだ第1ブロック(a)の先頭(pos=0)のビット値「1」とN(=9)を乗算し、これを合計値sum(=0)に加算して、合計値sumを更新する。これにより、第1ブロック(a)におけるsumは、0+1×9=9となる。その後、ステップS7で後続のデータの有無をみて、データがあれば(ステップS7:YES)ステップS2へ戻り、データがなければ(ステップS7:NO)処理を終了する。
今の場合は、後続データがあるのでステップS2へ戻り、再びposがM(=8)以上か否かが判定される。上述したように、この時点ではpos=9となっているので、pos≧Mとなり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=9)からM(=8)を減算して、posの値を更新する。これにより、pos=1となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。上述したように、この時点ではsum=9となっているので、sum≧Mとなり(ステップS4:YES)、ステップS5へ移行する。ステップS5では、出力値outに「1」を書き込むとともに、sum(=9)からM(=8)を減算して、合計値を更新する。これにより、sum=1となる。この値は本発明における余り値に相当している。余り値は、次のブロックへ繰り越されて加算される。また、ステップS4、S5、S8の処理は、本発明における量子化に相当している。続くステップS6では、出力値out(=1)を出力する。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=1となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第2ブロック(b)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=1)にN(=9)を加算する。これにより、第2ブロック(b)におけるposは1+9=10となる。次に、ステップS11で、読み込んだ第2ブロック(b)の先頭から2ビット目(pos=1)のビット値「0」とN(=9)を乗算し、これを合計値sum(=1)に加算して、合計値sumを更新する。これにより、第2ブロック(b)におけるsumは、1+0×9=1となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=10となっているので、pos≧Mとなり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=10)からM(=8)を減算して、posの値を更新する。これにより、pos=2となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=1となっているので、sum<Mとなり(ステップS4:NO)、ステップS8へ移行する。ステップS8では、出力値outに「0」を書き込み、続くステップS6で、出力値out(=0)を出力する。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=2となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第3ブロック(c)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=2)にN(=9)を加算する。これにより、第3ブロック(c)におけるposは2+9=11となる。次に、ステップS11で、読み込んだ第3ブロック(c)の先頭から3ビット目(pos=2)のビット値「1」とN(=9)を乗算し、これを合計値sum(=1)に加算して、合計値sumを更新する。これにより、第3ブロック(c)におけるsumは、1+1×9=10となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=11となっているので、pos≧Mとなり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=11)からM(=8)を減算して、posの値を更新する。これにより、pos=3となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=10となっているので、sum≧Mとなり(ステップS4:YES)、ステップS5へ移行する。ステップS5では、出力値outに「1」を書き込むとともに、sum(=10)からM(=8)を減算して、合計値を更新する。これにより、sum=2となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=3となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第4ブロック(d)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=3)にN(=9)を加算する。これにより、第4ブロック(d)におけるposは3+9=12となる。次に、ステップS11で、読み込んだ第4ブロック(d)の先頭から4ビット目(pos=3)のビット値「0」とN(=9)を乗算し、これを合計値sum(=2)に加算して、合計値sumを更新する。これにより、第4ブロック(d)におけるsumは、2+0×9=2となる。その後、ステップS7で後続のデータの有無をみて、データがあれば(ステップS7:YES)ステップS2へ戻り、データがなければ(ステップS7:NO)処理を終了する。
以上述べたような要領で、後続する第5ブロック以降の各ブロックについても同様の処理を行う。この結果、ピッチ変換部3からは、PDM信号を構成する「1010・・・」のビット信号が出力される。そして、このPDM信号をローパスフィルタに通すことにより、ピッチ(波長)が9/8倍に変換されたPCM信号が得られる。
次に、図8(B)の例について説明する。図8(B)においても、(a)〜(d)は第1ブロック〜第4ブロックを表している。
最初、図7のステップS1で変数の初期化を行う。次のステップS2では、カーソル値posがM以上か否かが判定される。図8(B)はピッチを17/8倍にする場合であり、NとMの値はそれぞれN=17、M=8に設定される。最初はpos=0であるから、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第1ブロック(a)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値posにN(=17)を加算する。これにより、第1ブロック(a)におけるposは0+17=17となる。次に、ステップS11で、読み込んだ第1ブロック(a)の先頭(pos=0)のビット値「1」とN(=17)を乗算し、これを合計値sum(=0)に加算して、合計値sumを更新する。これにより、第1ブロック(a)におけるsumは、0+1×17=17となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2では、再びposがM(=8)以上か否かが判定され、この時点ではpos=17となっているので、pos≧Mとなり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=17)からM(=8)を減算して、posの値を更新する。これにより、pos=9となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=17となっているので、sum≧Mとなり(ステップS4:YES)、ステップS5へ移行する。ステップS5では、出力値outに「1」を書き込むとともに、sum(=17)からM(=8)を減算して、合計値を更新する。これにより、sum=9となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=9となっているので、pos≧Mであり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=9)からM(=8)を減算して、posの値を更新する。これにより、pos=1となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=9となっているので、sum≧Mとなり(ステップS4:YES)、ステップS5へ移行する。ステップS5では、出力値outに「1」を書き込む(図7のフローチャートでは、pos≧M(=8)になれば、その後pos<M(=8)になるまでoutの出力を続けることになる)。また、sum(=9)からM(=8)を減算して、合計値を更新する。これにより、sum=1となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=1となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第3ブロック(c)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=1)にN(=17)を加算する。これにより、第3ブロック(c)におけるposは1+17=18となる。次に、ステップS11で、読み込んだ第3ブロック(c)の先頭から2ビット目(pos=1)のビット値「0」とN(=17)を乗算し、これを合計値sum(=1)に加算して、合計値sumを更新する。これにより、第3ブロック(c)におけるsumは、1+0×17=1となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
以上述べたような要領で、以降の各ブロックについても同様の処理を行う。この結果、ピッチ変換部3からは、PDM信号を構成する「1100・・・」のビット信号が出力される。そして、このPDM信号をローパスフィルタに通すことにより、ピッチ(波長)が17/8倍に変換されたPCM信号が得られる。
次に、ピッチを縮める場合につき、図9(A)を例に挙げてピッチ変換手順を説明する。図9(A)においても、(a)〜(d)は第1ブロック〜第4ブロックを表している。
最初、図7のステップS1で変数の初期化を行う。次のステップS2では、カーソル値posがM以上か否かが判定される。図9(A)はピッチを7/8倍にする場合であり、NとMの値はそれぞれN=7、M=8に設定される。最初はpos=0であるから、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第1ブロック(a)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値posにN(=7)を加算する。これにより、posは0+7=7となる。次に、ステップS11で、読み込んだ第1ブロック(a)の先頭(pos=0)のビット値「1」とN(=7)を乗算し、これを合計値sum(=0)に加算して、合計値sumを更新する。これにより、sumは0+1×7=7となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2では、再びposがM(=8)以上か否かが判定され、この時点ではpos=7なので、pos<Mとなり(ステップS2:NO)、ステップS9へ移行して再び第1ブロック(a)のデータを入力値inに読み込む(図7のフローチャートでは、pos≧M(=8)になるまでは、データの読み込みを続けることになる)。そして、ステップS10でカーソル値posにN(=7)を加算する。これにより、第1ブロック(a)におけるposは7+7=14となる。次に、ステップS11で、読み込んだ第1ブロック(a)の先頭から8ビット目(pos=7)のビット値「0」とN(=7)を乗算し、これを合計値sum(=7)に加算して、合計値sumを更新する。これにより、第1ブロック(a)におけるsumは7+0=7となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=14となっているので、pos≧Mであり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=14)からM(=8)を減算して、posの値を更新する。これにより、pos=6となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=7となっているので、sum<Mとなり(ステップS4:YES)、ステップS8へ移行する。ステップS8では、出力値outに「0」を書き込み、続くステップS6で、出力値out(=0)を出力する。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=6となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第2ブロック(b)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=6)にN(=7)を加算する。これにより、第2ブロック(b)におけるposは6+7=13となる。次に、ステップS11で、読み込んだ第2ブロック(b)の先頭から7ビット目(pos=6)のビット値「1」とN(=7)を乗算し、これを合計値sum(=7)に加算して、合計値sumを更新する。これにより、第2ブロック(b)におけるsumは、7+1×7=14となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=13となっているので、pos≧Mとなり(ステップS2:YES)、ステップS3へ移行する。ステップS3では、pos(=13)からM(=8)を減算して、posの値を更新する。これにより、pos=5となる。続いて、ステップS4へ進み、合計値sumがM(=8)以上か否かが判定される。この時点ではsum=14となっているので、sum≧Mとなり(ステップS4:YES)、ステップS5へ移行する。ステップS5では、出力値outに「1」を書き込むとともに、sum(=14)からM(=8)を減算して、合計値を更新する。これにより、sum=6となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=5となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第3ブロック(c)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=5)にN(=7)を加算する。これにより、第3ブロック(c)におけるposは5+7=12となる。次に、ステップS11で、読み込んだ第3ブロック(c)の先頭から6ビット目(pos=5)のビット値「0」とN(=7)を乗算し、これを合計値sum(=6)に加算して、合計値sumを更新する。これにより、第3ブロック(c)におけるsumは、6+0×7=6となる。その後、ステップS7で後続のデータの有無をみて、データがあるので(ステップS7:YES)、ステップS2へ戻る。
ステップS2で、再びposがM(=8)以上か否かが判定されるが、この時点ではpos=4となっているので、pos<Mであり(ステップS2:NO)、ステップS9へ移行して第4ブロック(d)のデータを入力値inに読み込む。続いて、ステップS10でカーソル値pos(=4)にN(=7)を加算する。これにより、第4ブロック(d)におけるposは4+7=11となる。次に、ステップS11で、読み込んだ第4ブロック(d)の先頭から5ビット目(pos=4)のビット値「1」とN(=7)を乗算し、これを合計値sum(=6)に加算して、合計値sumを更新する。これにより、第4ブロック(d)におけるsumは、6+1×7=13となる。その後、ステップS7で後続のデータの有無をみて、データがあれば(ステップS7:YES)ステップS2へ戻り、データがなければ(ステップS7:NO)処理を終了する。
以上述べたような要領で、後続する第5ブロック以降の各ブロックについても同様の処理を行う。この結果、ピッチ変換部3からは、PDM信号を構成する「0101・・・」のビット信号が出力される。そして、このPDM信号をローパスフィルタに通すことにより、ピッチ(波長)が7/8倍に変換されたPCM信号が得られる。
同様にして、ピッチを3/8倍にする図9(B)の場合も、上述した図9(A)と同じ要領にしたがって、ピッチ変換を行うことができる(詳細は省略)。
以上のように、上述した実施形態においては、PDM信号を構成する1ビット信号のピッチを補間処理によってずらし、補間後のデータ列をブロック単位で読み出してブロックごとに量子化を行うことにより、1ビット信号のままでピッチを変換することができる。このため、畳み込み演算や一般調和解析などの複雑な演算処理が不要となり、簡単な手段によってピッチ変換処理を高速に行うことができる。また、NおよびMの値を任意に設定することで、所望のピッチを有する波形を容易に得ることが可能となる。
また、上述した実施形態においては、量子化手段としてΔΣ変調器50を用いているので、専用の演算回路を設計しなくても、既存のΔΣ変調器の機能を利用して、量子化や余り値の加算処理を容易に実現することができる。
本発明は、アナログの楽音信号を出力する場合に限らず、デジタルの楽音信号を出力する場合にも適用が可能である。
また、上記実施形態においては、波形メモリ1に記憶されている楽音信号としてPCM信号を例に挙げたが、本発明は、PCM信号以外の楽音信号を用いる場合においても適用することができる。
さらに、本発明は楽音に限らず、人の声(ボイス)や擬似音なども含むあらゆる音を生成する場合に適用することができ、さらには、音以外の波形を生成する場合にも適用することができる。
本発明の実施形態による音源用シンセサイザの全体構成を示すブロック図である。 ピッチ変換部の構成を表した図である。 PCM信号とPDM信号を示す図である。 ΔΣ変調器の一例を示すブロック図である。 本発明によるピッチ変換の原理を示した図である。 ゼロ値補間の様子を詳細に示した図である。 ピッチ変換の手順を示したフローチャートである。 ピッチを伸ばす場合のデータ演算の例を示した図である。 ピッチを縮める場合のデータ演算の例を示した図である。 波長変換を説明する図である。
符号の説明
1 波形メモリ
2 PCM/PDM変換部
3 ピッチ変換部
3b ゼロ値補間部
3c 合計値算出部
3d 量子化部
4 信号処理部
5 出力部
50 ΔΣ変調器
100 波形生成装置

Claims (3)

  1. 波形データが記憶されている波形メモリと、前記波形データに基づいて生成される波形のピッチをN/M倍に変換するためのピッチ変換部とを有する波形生成装置において、
    前記ピッチ変換部は、
    前記波形データから得られるPDM(Pulse Density Modulation;パルス密度変調)信号を構成する各1ビット信号の間に、N−1個のゼロ値を補間する補間手段と、
    前記補間手段で補間された後のデータ列を、M個のビットを含むブロックを1単位として順次読み出し、各ブロックごとに、NおよびMの値で定まるビット位置のビット値とNの値との乗算値を合計した合計値Xを算出する合計値算出手段と、
    当該ブロックにおける合計値Xと1つ前のブロックでの量子化で得られた余り値とを加算した合計値Yに対して、Mの値を閾値として量子化を行うことにより、各ブロックに1または0の値を割り当てて当該値を出力するとともに、当該量子化で得られた余り値を次のブロックの合計値Xに加算する量子化手段と、
    を備えたことを特徴とする波形生成装置。
  2. 請求項1に記載の波形生成装置において、
    前記量子化手段をΔΣ変調器から構成したことを特徴とする波形生成装置。
  3. 請求項1または請求項2に記載の波形生成装置と、
    前記波形生成装置で生成された音の波形に対して、所定の信号処理を行う信号処理部と、
    前記信号処理部で処理された信号に基づいて音を出力する出力部と、
    を備えたことを特徴とする音源用シンセサイザ。
JP2007057740A 2007-03-07 2007-03-07 波形生成装置、音源用シンセサイザ Expired - Fee Related JP4554629B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007057740A JP4554629B2 (ja) 2007-03-07 2007-03-07 波形生成装置、音源用シンセサイザ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007057740A JP4554629B2 (ja) 2007-03-07 2007-03-07 波形生成装置、音源用シンセサイザ

Publications (2)

Publication Number Publication Date
JP2008216916A true JP2008216916A (ja) 2008-09-18
JP4554629B2 JP4554629B2 (ja) 2010-09-29

Family

ID=39836981

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007057740A Expired - Fee Related JP4554629B2 (ja) 2007-03-07 2007-03-07 波形生成装置、音源用シンセサイザ

Country Status (1)

Country Link
JP (1) JP4554629B2 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62115194A (ja) * 1985-11-14 1987-05-26 ロ−ランド株式会社 電子楽器の波形発生装置
JPH09289453A (ja) * 1996-04-24 1997-11-04 Sony Corp 信号処理装置、信号記録装置及び信号再生装置
JPH1039886A (ja) * 1996-07-26 1998-02-13 Sony Corp 特殊効果処理装置
JPH10198381A (ja) * 1996-12-30 1998-07-31 Casio Comput Co Ltd 楽音生成装置
JP2002252562A (ja) * 2001-02-23 2002-09-06 Sony Corp ディジタル信号処理装置及び方法
JP2003202882A (ja) * 2002-01-07 2003-07-18 Seiko Epson Corp サウンド合成方法およびサウンド合成装置
JP2003233378A (ja) * 2002-02-13 2003-08-22 Yamaha Corp 楽音生成装置および楽音生成方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS617364A (ja) * 1984-01-26 1986-01-14 Tokushu Toryo Kk エアゾ−ルタイプペイントリム−バ−

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62115194A (ja) * 1985-11-14 1987-05-26 ロ−ランド株式会社 電子楽器の波形発生装置
JPH09289453A (ja) * 1996-04-24 1997-11-04 Sony Corp 信号処理装置、信号記録装置及び信号再生装置
JPH1039886A (ja) * 1996-07-26 1998-02-13 Sony Corp 特殊効果処理装置
JPH10198381A (ja) * 1996-12-30 1998-07-31 Casio Comput Co Ltd 楽音生成装置
JP2002252562A (ja) * 2001-02-23 2002-09-06 Sony Corp ディジタル信号処理装置及び方法
JP2003202882A (ja) * 2002-01-07 2003-07-18 Seiko Epson Corp サウンド合成方法およびサウンド合成装置
JP2003233378A (ja) * 2002-02-13 2003-08-22 Yamaha Corp 楽音生成装置および楽音生成方法

Also Published As

Publication number Publication date
JP4554629B2 (ja) 2010-09-29

Similar Documents

Publication Publication Date Title
KR100979075B1 (ko) 펄스폭 변조 신호를 생성하기 위한 방법 및 장치
JP4554431B2 (ja) Dtmf信号生成回路、音信号生成回路、ならびに通信装置
JPH0562495A (ja) サンプリング周波数変換器
JP2004287171A (ja) ボコーダ装置
JP4661745B2 (ja) フィルタ装置および電子楽器
TWI275245B (en) Bi-quad digital filter configured with a bit binary rate multiplier
JP4554629B2 (ja) 波形生成装置、音源用シンセサイザ
JP6855802B2 (ja) 情報処理装置、方法、及びプログラム、d/a変換装置、電子楽器
US6314403B1 (en) Apparatus and method for generating a special effect on a digital signal
JP2932481B2 (ja) ピッチ検出方法
JP2006050202A (ja) Dem処理装置、d/a変換装置、dem処理方法
JP2674155B2 (ja) データ圧縮符号化方法
JP2671648B2 (ja) ディジタルデータの補間装置
JP2730104B2 (ja) ディジタル信号の生成方法
JPH0484784A (ja) 模擬船舶航行雑音発生装置
JP2008083525A (ja) 音源用シンセサイザ
JPS58159586A (ja) 残響装置
JP4152262B2 (ja) 楽音発生装置及び楽音発生方法
JP2019016002A (ja) データ補間装置、およびデータ補間方法
JP3419005B2 (ja) 楽音信号の合成に用いられる原楽音信号の発生装置
JP2003115749A (ja) 波形整形回路
Wu et al. LSP speech synthesis ASIC architecture
JPH0656553B2 (ja) 楽音信号発生装置
JPH0640267B2 (ja) 楽音信号用ディジタルフィルタ装置
JPH039478B2 (ja)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100622

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100714

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130723

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4554629

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees