VIDEO TEST 0004: Demonstrating SSG Hardware Envelopes in #PMD98 #MML

Subscribers:
1,640
Published on ● Video Link: https://www.youtube.com/watch?v=BoA68h6-ZNI



Duration: 18:25
136 views
7


Silent Sinner in Scarlet’s Video Test #0004

Demonstrating that KAJA’s PMD98 (Professional Music Driver for NEC PC-9801 & PC-9821) can support playback of SSG hardware envelopes, albeit not in a straightforward way. It all boils down to programming specific frequency, signal-type (tone/​noise/​both/​neither), volume, & envelope-shape ([reverse/​normal] sawtooth/​triangle/​etc.) instructions exclusively via register-write & rest commands (rather than the usual note/​volume/​mode commands) for everything happening in the channel where envelopes are to be used (including traditional non-envelope notes). Why only register (MML: y) & rest (MML: r) commands & not pitch-interval (MML: c/​d/​e/​f/​g/​a/​b -/​=/​+), detune (MML: D), noise-period (MML: w), volume (MML: V/​v), or tone/​noise-mode (MML: P) commands? Because for some reason, anytime a typical note command is issued, envelope-specific register writes fail to materialize (at least in software emulation – I have not tested this behavior in real hardware because I don’t own a PC-98).

So, resorting exclusively to register writes to pull off this 18-minute-long test, here I demonstrate (via Aaron Giles’ YMFM emulation core, as implemented by C60 into PMDWin.dll 0.50 & later versions –current version in use is 0.52– & used in FMPMD2000) the various types of signals (or “notes”) the SSG can produce within one same channel by invoking tone, noise, & envelope modes in isolation as well as combinations of any or all of them:
0:00 (intro)
0:01 No Oscillation (DC pulse; MML mode P0 at V15)
0:02 Pure Tone (square wave, C₁ to B₈; MML mode P1)
0:34 Pure Noise (periods w31 to w1; MML mode P2)
0:42 Tone+Noise (C₁~B₈ square + w31/​w16/​w4/​w1 noise; MML mode P3)
2:49 Pure Envelope (C₁~B₄ reverse sawtooth, C₁~B₃ reverse triangle, C₁~B₄ sawtooth, & C₁~B₃ triangle)
3:45 Envelope+Tone (C₁~B₃/​B₄ rev.saw/​rev.tri/​saw + B₅/​B₆/​B₇/​B₈ square)
6:40 Envelope+Noise (C₁~B₃/​B₄ rev.saw/​rev.tri/​saw + w31/​w16/​w4/​w1 noise)
9:36 Envelope+Tone+Noise (C₁~B₃/​B₄ r.saw/​r.tri/​saw + B₅/​B₆/​B₇ square + w16/​w4/​w1 noise)
16:10 Preset Drums (@1 @2 @4 @8 @16 @32 @64 @128 @256 @512 @1024 @2048 @4096 @8192)
16:25 (MML nXXX SFXs absent, please read video description)

For this test, SSG channel #3 (#2 in hoot... Sound Hardware Emulator) –mapped to MML channel I– was used as the output sound channel, even though all three SSG channels (& the first three FM channels) have been used in the MML code to execute the register commands, this to simplify the code into parallel execution loops (& exploiting the fact that the PMD driver doesn’t read all channels at once but rather sequentially). I discovered that PMD reads MML channels in the following order:

G, H, I, (D, E, F,) A, B, C, [C2, [C3, [C4,]]] (J,) K, {PPZ1, {PPZ2, {PPZ3, {PPZ4, {PPZ5, {PPZ6, {PPZ7, {PPZ8}}}}}}}}
(parenthesized FM4/5/6 channels D, E, & F, & ADPCM channel J, if used, can only send y$XX register writes to the Yamaha YM2608/​OPNA’s back port 0x1XX whereas SSG-specific registers are in the front port 0x0XX, so any y commands issued there have no effect on the SSG chain of command other than delaying subsequent register writes from other channels)
[bracketed FM3-extended channels C2, C3, &/or C4 – as specified in MML property #FM3Extend, i.e. XYZ, abc, def, etc.; the execution order here is carried out as slot1, slot2, slot3, slot4. Example: C, a, b, c if MML maps C→slot1/s1, a→slot2/s2, b→slot3/s4, & c→slot4/s8]
{braced PMDPPZ channels PPZ1 to PPZ8 – as specified in MML #PPZExtend, i.e. STUVWXYZ}

Two big disadvantages of this method of playing notes via register writes instead of simple note commands (at least in emulation):
① SSG#3 (channel I) can no longer be muted by FMPMD2000’s (& also Winamp in_FMPMD plugin’s) mask subpanel, so isolating any other channels from any project making use of SSG hard envelopes thru this register-manipulation method will require that a variant (with no y$X commands writing to SSG#3) be compiled.
② MML commands n1 to n127 (for SSG preset sound effects) no longer work, even in channel I; at least the first 13 of those (n1~n13) are the same as preset drums @2~@8192, which together with @1 are normally played thru SSG#3 via Rxx macros executed in virtual channel K (which still works).

For the oscilloscope view, an external-trigger waveform (using only pure-square & pure-reverse-sawtooth notes) was used to ensure the square shapes in P3 tone+noise notes & the envelope shapes remain consistently aligned (or, at least, stable in time for the case of triangle notes, as you see in the video).

Tools used:
KAJA’s MML compiler MC.EXE (PMD 4.8S)
C60’s FMPMD2000 0.31 (PMDWin.dll 0.52)
Audacity 2.3.1
nyanpasu64’s corrscope 0.8.1 (+ FFmpeg 5.0-essentials)
GNU Image Manipulation Program (GIMP) 2.10
VapourSynth R62
VirtualDub2 build 44282

Special thanks:
🌸 Hakurei 🌸 (on Discord): for discussion about envelopes & SSG registers.
@High_Quality_Nintendo_OSTs: for how to do external triggering in corrscope.




Other Videos By SilSinn9801/Silent Sinner In Scarlet


2023-10-04【鋼の錬金術師】消せない罪(PC-9821バージョン feat. 琴葉茜・葵)【VOCALO98 Project/Synthesizer V Studio】 #鋼の錬金術師20周年
2023-09-26He-Man & the Masters of the Universe (PC-9821 Version feat. Big AL, Cyber SONGMAN & Chris) #MOTU40th
2023-08-28DANZEN! ふたりはプリキュア(PC-9821バージョン feat. 鏡音リン) #プリキュア20周年 #precure20th
2023-08-18【鋼の錬金術師】消せない罪(PC-9801バージョン)[RCO-03 “Chiptune metLiAl” Contest 3rd place]
2023-08-01【東方花映塚】お宇佐さまの素い幡(PC-9801バージョン)【8月2日は優曇華の日・卯年】
2023-07-25【Commission | YT Short】Channel i News Jingle (PC-9801 Version)
2023-07-18【RWBY】This Will Be The Day (PC-9821 Version feat. Eleanor Forte) [Synthesizer V Studio] #RWBY10th
2023-06-26DANZEN! ふたりはプリキュア(PC-9801バージョン) #プリキュア20周年 #precure20th (VOCALOID VERSION COMING SOON…)
2023-06-03【クロノ・トリガー】時の回廊(PC-9801バージョン)【リクエスト曲】
2023-04-15となりのトトロ(PC-9821バージョン feat. 歌愛ユキ・音街ウナ)【VOCALOID98 Project】【公開35周年記念】
2023-04-03VIDEO TEST 0004: Demonstrating SSG Hardware Envelopes in #PMD98 #MML
2023-01-14NENA – 99 Luftballons (PC-9801-Version) 【40. Jahrestagspezial】
2022-09-08【東方花映塚】おてんば恋娘の冒険(PC-9801バージョン)【⑨月⑨日はチルノの日】
2022-08-02【東方花映塚】狂気の瞳 ~ Invisible Full Moon(PC-9801バージョン)【8月2日は優曇華の日・チャンネル登録者数1000人のスペシャル】
2022-03-08【東方花映塚】フラワリングナイト(PC-9801バージョン)【3月9日は咲夜の日】
2022-02-18【PMD98・FM音源】TohoCommodore(Famicommodore PC-9801東方旧作風バージョン)
2022-01-05【東方永夜抄】少女綺想曲 ~ Dream Battle(PC-9801バージョン)【1月6日は霊夢の日】
2021-11-06[PMD98 Cover] Epic Bright (PC-9801 Version; YM2608)
2021-10-05[Friday Night Funkin'] Bopeebo feat. Bruno, Kagamine Rin & Len (PC-9801 VOCALOID Version)
2021-09-08【東方永夜抄】竹取飛翔 ~ Lunatic Princess(PC-9801バージョン)【9月8日は輝夜の日】
2021-08-24【Figure 17】BOY (PC-9821 Version feat. Kagamine Len)【VOCALOID98 Project】[Figure 17 20th Anniversary]



Tags:
VirtualDub2
VapourSynth R62
GIMP
corrscope
Audacity
Windows Media Encoder
FMPMD2000
PMD98
PMDMML
MML
Music Macro Language
KAJA
NEC PC-9801
chiptune
チップチューン
SSG
Yamaha YM2149F
OPN
Yamaha YM2203
OPNA
Yamaha YM2608
SSG hardware envelopes
SSG envelopes
SSG envelope mode
SSGエンベロープ
screen capture
画面記録
video test
ビデオテスト
spectrum analyzer
spectrum analysis
スペクトラムアナライザー
スペアナ
oscilloscope view
オシロスコープ
external trigger waveform signal
外部トリガー波形信号
frequency sweep
周波数掃引法
YMFM



Other Statistics

Counter-Strike: Source Statistics For SilSinn9801/Silent Sinner In Scarlet

SilSinn9801/Silent Sinner In Scarlet currently has 136 views spread across 1 video for Counter-Strike: Source. His channel published less than an hour of Counter-Strike: Source content, or 5.20% of the total watchable video on SilSinn9801/Silent Sinner In Scarlet's YouTube channel.