信号の正側では、ベースから電流を吸い込むNPNトランジスタで出力から電流を吐き出す向きに駆動し、信号の負側では、ベースから電流を吐き出すPNPトランジスタで出力から電流を吸い込む向きに駆動する。エミッタが共通になっており、どちらのトランジスタもエミッタ・フォロワになっている。トランジスタにより可能になった回路で、入出力のトランスやコンデンサをなくすことも可能になった。ただし、完全に対称な特性を持つコンプリメンタリー素子は原理的に存在しないため、出力波形には非対称性歪が含まれる。コンプリメンタリー素子を用いないSEPPアンプとしては、金田明彦による「完全対称アンプ」が自作派の間で有名である。これは、クロス・シャント・プッシュプルのフローティング電源を接地してSEPPに変形した回路であるが、上側トランジスタと下側トランジスタの動作点が異なるため、動作の非対称性は払拭されない。SEPPで大出力を必要とする場合は、コンプリメンタリーのトランシスターそれぞれをダーリントン接続のドライバーとする「ダーリントン・コンプリメンタリー接続」とする。現在はこの方式が主流である。
Single-Ended Push-Pull - 出力端が1個であることからこの名がある。　SEPPの起源は、オーディオ・アンプの特性悪化要因であるトランスを排してスピーカーを駆動するOTL（Output Transformer Less）アンプであり、TV水平偏向出力管などスイッチング真空管を複数並列接続して最適負荷インピーダンスを下げると共に、インピーダンスが100Ω～300Ωと高いスピーカーを負荷に繋いで使ったものであるが、スピーカー可動部の質量が大きくなることから、主に低音専用スピーカー（ウーファー）となった。そのOTLアンプの派生として、非コンプリメンタリー回路図の上下段をA級動作として下段の出力に抵抗を挿入、この抵抗の電圧降下で上段のバイアスと励振を行うSRPP(en:Shunt regulated push-pull amplifier)が作られた。 　OTLアンプ回路はそれまでのトランスを使ったプッシュプル回路（前出DEPP）とは大きく違うことから、負荷接続の特徴を取ってSEPPと呼ぶようになった。 それらはトランジスターが普及する以前の1950年代のことであり、当時の日本では他に追随を許さない先端電子技術書であった「ラジオ技術」誌上で様々な試行結果が報告されていた。
Double-Ended Push-Pull - 出力端が2個であることから後述SEPP方式に対してこの名ができた（レトロニム）。それまでは単に「プッシュプル：PP」と呼んだ。図に示したような出力を相互に逆極性としてトランスで出力を得る基本的な構成で、通常B級動作を基本とする。入力側は相互に逆極性に励振する。逆極性励振を行うためには図示の入力トランス方式のほか、位相反転増幅器方式がある。入力トランスの2次側の中点タップからバイアス電流を供給し（シリコントランジスタなら約0.6V前後の電圧となる。構造やロットにより微妙に異なる）トランスの両端から正相側と逆相側を取り出す。トランジスタはエミッタを共通にしたエミッタ接地になっており、それぞれのコレクタが出力になっている。入力信号が正側の場合と負側の場合で、それぞれ片側のトランジスタと回路が働き、出力トランスの1次側の中点タップから、トランスのどちらかの側に向けて電流が流れる。
（en:Push–pull output）2個の増幅素子を正負対称に接続して、それぞれ一方の極性の信号のみを増幅する方式がプッシュプルである。基本的にはバイアスはB級とするがA級動作させる場合もあり詳細はアンプ (音響機器)#級を参照。回路図上で各極のトランジスタが縦に重ねて記されるところからトーテムポールとも呼ばれる。デジタル回路のCMOSも一種のプッシュプルである。ここで示す回路図は、原理の説明のための簡略化したものである。熱暴走対策などがなされていないものもあるので、実際の回路を組む場合は注意を要する。
1個の増幅素子で信号を増幅する回路で、もっとも基本的な増幅回路である。プッシュプルに対して使われるレトロニムである。正負対称の増幅を行うためにはA級増幅回路とする必要がある。
E級増幅回路は、共振回路にタイミングを合わせてスイッチング回路で駆動することにより電力増幅を行うことで、高効率増幅を実現するので、D級増幅回路同様に増幅素子の動作点（バイアス）は関係ない。前出D級増幅器と異なりデューティ比は一定でPWMは不可能で共振する関係上、狭帯域増幅器でなおかつ出力振幅は一定であるため、単体では振幅変調に対応することができないが、D級増幅回路が増幅素子を最低2個要するのに比べ、最低限増幅素子を1個で構成できるためデッドタイムの生成などが不要で回路はシンプルである。
ヒューイット[2006]にもあるように、Planner 開発当時のコンピュータメモリは高価であり容量が小さかった。そこでメモリの使用を節約するため、制御構造として当時一般的だったバックトラッキングを採用した。この手法では、コンピュータはいくつもの可能性のうちひとつだけをメモリに保持しておけばよかったのである。この実装上の決断により、Micro-Planner は不運な結果を招くこととなった。LISPでは NIL を空のリストを表すと同時に false（メモリ番地 0）を表すようにしている。というのも 0 かどうかのチェックが高速に行えるからである。このため、LISPプログラムでは NILかどうかのチェックは非常に頻繁に行われる。Micro-Planner はこれを拡張して NIL をバックトラッキング開始のシグナルとしても扱った。Micro-Planner では、リストの各要素に何らかの処理をループで行うのが一般的だが、このとき先頭の要素をリストから除去した残りのリストを持ってループの先頭に分岐し、リストが空かどうかをチェックする。リストが空だった場合、プログラムは次の別の処理に分岐する。このようなプログラムで最後の要素が処理され、それをリストから取り除いた残りのリストが NIL になったとき、それをチェックする部分にはプログラムは到達しない。というのも、Micro-Planner は NIL に到達したときにそれをバックトラッキングのシグナルとして扱い、それまでリストの各要素に対して行った処理を取り消してしまうのである。このことに人々は驚かされた。このことはバックトラッキングの扱いにくさを証明し、制御構造に関する議論が活性化されることとなった。ヒューイットは他の可能な実装方法を調査した。