Programmable Sound Generator

Programmable Sound Generator（プログラマブル・サウンド・ジェネレーター、PSG）は、音を作り出す電子回路の一種。狭義には、ゼネラル・インスツルメンツ（GI）のAY-3-8910および相当品。広義には、それらと基本原理が同じ回路の総称。単一の音源チップないし、より多機能なチップの機能の一つとして供給される。
複数の基本波形（AY-3-8910では矩形波×3+ホワイトノイズ）を合成してさまざまな音色を出し、エンベロープ・ジェネレーターでADSR（立ち上がりや余韻などのパターン）を変化させる。
1980年代のアーケードゲームやパソコン、携帯用ゲーム機に採用された。
概要.
本来のPSGは、GI社 およびGIからスピンオフしたマイクロチップ・テクノロジーのAY-3-8910とAY-3-8910A、およびその後継製品のAY-3-8912 / AY-3-8913相当品を指す。
テキサス・インスツルメンツ（TI）のSN76489も同様に扱われることが多い。しかし仕様は全く異なっており、本来は区別される。SN76489は厳密にはPSGではなくDigital Complex Sound Generator（DCSG）である。
ヤマハは、同社のMSXマシンに使用する目的でAY-3-8910の互換チップとしてYM2149を開発し、後に他社にも販売している。また、同等の機能を同社の一部のFM音源チップ（YM2203/YM2608など）、MSXシステムチップセット（MSX-SYSTEM/MSX-SYSTEMIIなど）にも内蔵している。
YM2149はAY-3-8910相当機能に加え、AY-3-8910のTEST2端子（26番ピン）をSEL#（#はローアクティブを示す）に変更し、この端子をLowレベルにすることによって、発音基準周波数を外部入力周波数の2分周に設定できるように変更したものである。さらに内部的な音量が32段階（AY-3-8910は16段階）になっており、ハードウェアエンベロープが滑らかになっている。
後継・派生製品として、YM3439（CMOS版）、YMZ284（小パッケージ版）、YMZ294（小パッケージ/クロック分周比可変）などがある。
この、FM音源によるPSG互換機能をSSG（Software-controlled Sound Generator）音源、単純にSSGとも呼ぶ。
広義では、矩形波の出る安価なチップ音源をまとめて「PSG」と呼ぶことがある。
AY-3-8910の仕様.
AY-3-8910は3つのパッケージで販売されていた。
代表的なPSGチップであるAY-3-8910は次のような仕様である。
SSGを搭載した主なコンピューター.
FM音源:YM2203（OPN）/YM2608（OPNA）を搭載
SN76489の仕様.
SN76489（DCSGとも呼ばれる）のPSGとの大きな違いは、矩形波チャンネル3つ+ノイズ発生チャンネル1の合計4チャンネルで構成されているところである。PSG（SSG）はその構造上ノイズの音量制御が3つのチャンネルのどれかに依存してしまうが、SN76489（やpAPU)にはこの制限はなく、独立したノイズチャンネル単体で自由に音量制御できる。また、ハードウェアエンベロープも持たない。
通常音色はデューティ比50/50のみであるが、3チャンネル目を同期ノイズ出力にすることでデューティ比6.25/93.75の音となる。トーン周波数に対し音程は半音ずれるが、ギターに似た音色となるため、若干弱い低音部をカバーする事が出来た。
SAA1099の仕様.
6チャンネルステレオ出力を持ち、エンベロープジェネレータとノイズジェネレータを2セット内蔵するなど、ほぼPSGの2倍のキャパシティを持つ。
ハードウェアエンベロープの出力波形を楽音波形とすることで矩形波以外に三角波・鋸歯状波での出力が可能。(後述のようにAYでも可能であるが、ハードウェアエンベロープの周波数精度が低いため、メロディを演奏するにはかなり音域に制限が生じた。SAAでは楽音周波数と同じ精度であるので、通常の演奏と同等となる。)
ファミコン音源（pAPU）の仕様.
ファミリーコンピュータに搭載されている音源は次のような仕様である。
この音源はファミコンのCPU RP2A03（6502カスタム）に組み込まれた機能の一つであり、pAPU（pseudo Audio Processing Unit）と呼ばれている。
pAPUのパルス波発生装置はゲームボーイ、ゲームボーイアドバンスにも搭載され、矩形波だけでなくデューティ比1:7パルス波などの独特な音色も出せる表情の豊かさがPSGの矩形波との大きな違いである。
PSGと誤解されやすいその他の音源.
日本電気ホームエレクトロニクスから発売された家庭用ゲーム機PCエンジンではスペック表にPSGとの記載されることがあるが、実際に使われているのは波形メモリ音源（変調機能つき）であり、一般的に言われる本項で説明のPSGとは異なるものである。また、1980年代のナムコの多くのアーケードタイトルで使われていた音源も波形メモリ音源である。
ただ、当時のマニア間では「ナムコPSG」という俗称が広まっていたり、メーカーの開発側でも他の音源と分類する際に、便宜上PSGと区分していた場合もあった。ナムコのアーケード基板『SYSTEM I』のサウンドテストモードでは、波形メモリ音源のパートはPSGと表記されている。
PSGによるPCM再生.
PSGによってPCMを再生する技法が存在し、PSGPCMやSSGPCM等と呼ぶ。DACを持たないパソコン向けのソフトウェアで使われることがあった。
ただし、ボリューム調節機能を使っているため、DACとしては指数関数的な非線形量子化となることから、再生音声の品質は悪く、「無線による交信を演出する」といった演出など、用途は限定されていた。
1Chのみを用いた出力は解像度の低いものであったが、実際の出力を計測し、そのテーブルとPSG 3Ch各々のアッテネータを組み合わせて利用することで、音質の改善を試みる手法が生み出された。ソフトウェアメーカーによる実装もいくつか見られたが、個人が作成した同様のプログラムでは、Oh!FM 1990年4月号に掲載された戸田浩による「しゃべるんどすえ」のドキュメントと音量テーブルは、その後、同様のプログラムの作成の参考にされた。
現在では、上記の方法に加え、出力特性に合わせて再生するデータを変換することで、よりよい出力にする技法も開発され、S/N比が比較的高い再生を可能にしているソフトウェアも存在している。指数性のために音量域によって解像度にばらつきが出るが、平均すると、9bit程度の解像度を持つ出力を行うことが可能である。
PSGPCMの原理.
PSGで発声されるのは矩形波である。これはロー（=0）とハイ（=1）の2値しかとらない。これに音量レジスタ（4bit）の値を掛けたものが1チャンネル分の出力である。
AY-3-8910相当品では、あるチャンネルの発声を停止すると矩形波出力はハイ（=1）で固定される。従って、そのチャンネルの出力は、音量レジスタそのものとなる（1×音量レジスタ=音量レジスタ）。
この仕様を利用し、発声を停止した状態でそのチャンネルの音量を操作することで、PSGをDACとして利用するというのが大まかな原理である。
エンベロープ.
一般的なPSGチップではエンベロープ機能により、時間的な音量変化をハードウェアレベルで自動的に行える。エンベロープパターンには一般的な減衰波や、周期的な鋸波、三角波など、8種類が用意されており、周期も自由に設定できる。しかし、エンベロープジェネレータは1系統しか用意されていないため、3チャンネルで楽曲を演奏しようものなら、エンベロープが同期してしまい、まったく聞くに堪えない物になってしまう上、音量の調節も不可能である。そのため、ソフトウェアの側でこまめにPSGの各チャンネルの音量レジスタを変更して、ソフトウェアレベルでエンベロープを再現する技術があった。この手法は「ソフトウェアエンベロープ」と呼ばれることがある。
ハードウェアエンベロープ機能の応用として、周期的なタイプのエンベロープパターンを「音量変化としてではなく楽音の波形として」選択し、エンベロープ速度（周期）をその楽音の音程とみなして設定することで、PSGの通常の発音方法では出せない鋸波や三角波を出すことができる。ただしエンベロープ周期を設定するレジスタ幅は狭く、楽音の音程を表現するには精度が低いため「音痴」になりやすい。また原理上、こうして発音した音の音量制御はできない。この手法はYM2203やYM2608のSSG音源部でも使用が可能である。