├── .gitignore
├── BIN
├── COMPILER
│ ├── PMDDotNETCommon.dll
│ ├── PMDDotNETCompiler.dll
│ ├── PMDDotNETConsole.exe
│ ├── lang
│ │ ├── PMDDotNETmessage.ja-JP.txt
│ │ └── PMDDotNETmessage.txt
│ └── musicDriverInterface.dll
├── PLAYER
│ ├── README.txt
│ ├── fmplayer.exe
│ └── ym2608_adpcm_rom.bin
└── PLAYER2
│ ├── FMPMDE.exe
│ ├── FMPMDE.ini
│ ├── FMPMDE.txt
│ ├── PMDWin.dll
│ ├── PMDWin039
│ └── PMDWin.txt
│ ├── README.md
│ ├── WinFMP.dll
│ └── WinFMP018
│ └── WinFMP.txt
├── MML
└── MIKE.MML
├── README.md
└── mml.exe
/.gitignore:
--------------------------------------------------------------------------------
1 | *.M2
2 | *.M
3 | *.WAV
4 | *.wav
5 |
--------------------------------------------------------------------------------
/BIN/COMPILER/PMDDotNETCommon.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/COMPILER/PMDDotNETCommon.dll
--------------------------------------------------------------------------------
/BIN/COMPILER/PMDDotNETCompiler.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/COMPILER/PMDDotNETCompiler.dll
--------------------------------------------------------------------------------
/BIN/COMPILER/PMDDotNETConsole.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/COMPILER/PMDDotNETConsole.exe
--------------------------------------------------------------------------------
/BIN/COMPILER/lang/PMDDotNETmessage.ja-JP.txt:
--------------------------------------------------------------------------------
1 | ;日本語メッセージ定義
2 | ;I 通常のメッセージ
3 | ;E エラーメッセージ
4 |
5 | ;
6 |
7 | ;common
8 | E0000=Exception message:\r\n{0}\r\nException stacktrace:\r\n{1}\r\n
9 |
10 | ;mc.cs 0100
11 | W0100=PSGパートに指定できる音色番号は0~9までです(値:{0})
12 | E0100=オプション指定が間違っています。
13 | E0101=MML中に理解不能な文字があります。
14 | E0102=指定された数値が異常です。
15 | E0103=MMLファイルが読み込めません。
16 | E0104=Mファイルが書き込めません。
17 | E0105=FFファイルが書き込めません。
18 | E0106=パラメータの指定が足りません。
19 | E0107=使用出来ない文字を指定しています。
20 | E0108=指定された音長が長すぎます。
21 | E0109=ポルタメント終了記号 } がありません。
22 | E0110=Lコマンド後に音長指定がありません。
23 | E0111=効果音パートでハードLFOは使用出来ません。
24 | E0112=効果音パートでテンポ命令は使用出来ません。
25 | E0113=ポルタメント開始記号 { がありません。
26 | E0114=ポルタメントコマンド中の指定が間違っています。
27 | E0115=ポルタメントコマンド中に休符があります。
28 | E0116=音程コマンドの直後に指定して下さい。
29 | E0117=ここではこのコマンドは使用できません。
30 | E0118=MMLのサイズが大き過ぎます。
31 | E0119=コンパイル後のサイズが大き過ぎます。
32 | E0120=W/Sコマンド使用中に255stepを越える音長は指定出来ません。
33 | E0121=使用不可能な音長を指定しています。
34 | E0122=タイが音程命令直後に指定されていません。
35 | E0123=ループ開始記号 [ がありません。
36 | E0124=無限ループ中に音長を持つ命令がありません。
37 | E0125=1ループ中に脱出記号が2ヶ所以上あります。
38 | E0126=音程が限界を越えています。
39 | E0127=MML変数が定義されていません。
40 | E0128=音色ファイルか/Vオプションを指定してください。
41 | E0129=Rパートが必要分定義されていません。
42 | E0130=音色が定義されていません。
43 | E0131=直前の音符長が圧縮または加工されています。
44 | E0132=Rパートでタイ・スラーは使用出来ません。
45 | E0133=可変長MML変数の定義数が256を越えました。
46 | E0134=分散和音開始記号 {{ がありません。
47 | E0135=分散和音コマンド中の指定が間違っています。
48 |
49 | E0200=: 音色ファイル({0})が読み込めません.
50 | E0201=ファイル({0})の読み込みに失敗しました.
51 |
52 | ;PmdException.cs 0300
53 | E0300=[行:{0} 桁:{1}]{2}
54 |
55 | ;Console向け
56 | E0600=MCの引数がありません\r\nUsage: MC [/DotNEToption] [/option] filename[.MML] [filename[.FF] [filename[.M]]]\r\nDotNETOption: -LOGLEVEL=[FATAL|ERROR|WARNING|INFO|DEBUG|TRACE] Set LOG Level.(Default:INFO)\r\n -XML output xml File\r\nOption: /V Compile with Tonedatas & Messages & Filenames\r\n /VW Write Tonedata after Compile\r\n /N Compile on OPN Mode(Default)\r\n /L Compile on OPL Mode\r\n /M Compile on OPM Mode\r\n /T Compile on TOWNS Mode\r\n /P Play after Compile Complete\r\n /S Not Write Compiled File & Play\r\n /A Not Set ADPCM_File before Play\r\n /O Not Put Title Messages after Play\r\n /C Calculate & Put Total Length of Parts\r\n
57 | E0601=.MMLファイルを指定してください
58 |
--------------------------------------------------------------------------------
/BIN/COMPILER/lang/PMDDotNETmessage.txt:
--------------------------------------------------------------------------------
1 | ;英語メッセージ定義
2 | ;I 通常のメッセージ
3 | ;E エラーメッセージ
4 |
5 | ;English Message Definition Table
6 | ;I Info
7 | ;E Error
8 |
9 | ;mc.cs 0100
10 | W0100=You can specify a tone number from 0 to 9 for the PSG part (value:{0}).
11 | E0100=wrong optional specification.
12 | E0101=There are unintelligible characters in the MML.
13 | E0102=Specified number is abnormal.
14 | E0103=MML file cannot be read.
15 | E0104=M file cannot be written.
16 | E0105=FF file cannot be written.
17 | E0106=not enough parameters.
18 | E0107=Unavailable characters are specified.
19 | E0108=The specified note length is too long.
20 | E0109=No portamento end symbol }.
21 | E0110=There is no sound length specification after the L command.
22 | E0111=Hard LFO cannot be used in the sound effect part.
23 | E0112=The tempo command cannot be used in the sound effect part.
24 | E0113=No portmanteau start sign {.
25 | E0114=Incorrect specifications in the portamento command.
26 | E0115=Rest command in portamento command found.
27 | E0116=Specify immediately after the pitch command.
28 | E0117=This command is not available here.
29 | E0118=MML size is too large.
30 | E0119=Over-sized after compilation.
31 | E0120=It is not possible to specify a sound length that exceeds 255steps when the W/S command is used.
32 | E0121=Specified unavailable pitch length.
33 | E0122=The tie is not specified immediately after the pitch instruction.
34 | E0123=No loop start symbol [.
35 | E0124=No instruction with a note length found during infinite loop.
36 | E0125=There are more than two escape signs in one loop.
37 | E0126=Pitch is out of bounds.
38 | E0127=MML variable not defined.
39 | E0128=Specify either a voice file or the /V option.
40 | E0129=The R part is not defined as required.
41 | E0130=Tone is not defined.
42 | E0131=The length of the previous note has been compressed or processed.
43 | E0132=You can't use the tie slur in the R part.
44 | E0133=The number of variable length MML variable definitions has been exceeded by 256.
45 | E0134=No dispersion chord start command {{
46 | E0135=Incorrectly specified in the dispersion chord command.
47 |
48 | E0200=: Cannot read a tone file ({0}).
49 | E0201=Failed to read the file ({0}).
50 |
51 | ;common
52 | E0000=Exception message:\r\n{0}\r\nException stacktrace:\r\n{1}\r\n
53 |
54 | ;PmdException.cs 0300
55 | E0300=[row:{0} column:{1}]{2}
56 |
57 | ;Console
58 | E0600=MC's argument not found.\r\nUsage: MC [/DotNEToption] [/option] filename[.MML] [filename[.FF] [filename[.M]]]\r\nDotNETOption: -LOGLEVEL=[FATAL|ERROR|WARNING|INFO|DEBUG|TRACE] Set LOG Level.(Default:INFO)\r\n -XML output xml File\r\nOption: /V Compile with Tonedatas & Messages & Filenames\r\n /VW Write Tonedata after Compile\r\n /N Compile on OPN Mode(Default)\r\n /L Compile on OPL Mode\r\n /M Compile on OPM Mode\r\n /T Compile on TOWNS Mode\r\n /P Play after Compile Complete\r\n /S Not Write Compiled File & Play\r\n /A Not Set ADPCM_File before Play\r\n /O Not Put Title Messages after Play\r\n /C Calculate & Put Total Length of Parts\r\n
59 | E0601=Please specify the .MML file.
60 |
--------------------------------------------------------------------------------
/BIN/COMPILER/musicDriverInterface.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/COMPILER/musicDriverInterface.dll
--------------------------------------------------------------------------------
/BIN/PLAYER/README.txt:
--------------------------------------------------------------------------------
1 | Please see https://github.com/takamichih/fmplayer
2 | Place ym2608_adpcm_rom.bin in the same directory as fmplayer.exe to play drum sounds.
3 |
4 |
--------------------------------------------------------------------------------
/BIN/PLAYER/fmplayer.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/PLAYER/fmplayer.exe
--------------------------------------------------------------------------------
/BIN/PLAYER/ym2608_adpcm_rom.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/PLAYER/ym2608_adpcm_rom.bin
--------------------------------------------------------------------------------
/BIN/PLAYER2/FMPMDE.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/PLAYER2/FMPMDE.exe
--------------------------------------------------------------------------------
/BIN/PLAYER2/FMPMDE.ini:
--------------------------------------------------------------------------------
1 | [FMPMDForm]
2 | Frequency=44100
3 | PPZ_Frequency=44100
4 | PPZ_RateChange=0
5 | FMCalc55k=1
6 | PPSInterPolation=1
7 | P86InterPolation=1
8 | PPZInterPolation=1
9 | NumOfBuffers=8
10 | DeviceID=-1
11 | LevelMeter=0
12 | Speana=0
13 | VolumeChange=0
14 | Parameter=1
15 | PlayList=0
16 | PartMask=1
17 | Prompt=0
18 | LoadDirectory=D:\PC98Shenanigans\MusicMaking\MML
19 | RhythmUseWithSSGDrum=1
20 | UsePPS=0
21 | PMD86PCMMode=1
22 | ADPCMPPZ8Emulate=0
23 | RhythmPath=D:\PC98Shenanigans\FMPMDE031
24 | NumOfPCMDir=0
25 | FM_VOLDOWN=0
26 | SSG_VOLDOWN=0
27 | Rhythm_VOLDOWN=0
28 | ADPCM_VOLDOWN=0
29 | PPZ_VOLDOWN=0
30 | FMP_FM_VOLDOWN=0
31 | FMP_SSG_VOLDOWN=0
32 | FMP_Rhythm_VOLDOWN=0
33 | FMP_ADPCM_VOLDOWN=0
34 | FMP_PPZ_VOLDOWN=0
35 | UseHummingWindow=0
36 | NumOfBand=3
37 | RandomPlay=0
38 | LoopPlay=0
39 | FadeOutTime=3000
40 | LoopToFadeOut=0
41 | Compressor=0
42 | UseTaskTray=0
43 | NumOfLoopToFadeOut=2
44 | CheckMusicLength=1
45 | ParamDelay=0
46 | Display50Flame=0
47 | SnapWindow=1
48 | SnapWidth=10
49 | NoPCMForcePlay=0
50 | FMWait=15000
51 | SSGWait=15000
52 | RhythmWait=15000
53 | ADPCMWait=15000
54 | PlayCount=0
55 | Left=830
56 | Top=280
57 | Width=386
58 | Height=194
59 | PCMDir1=D:\PC98 Shenanigans\FMPMDE031
60 | SaveDirectory=D:\DevStuffs\Personal\pc98-musics-project\MML
61 | [HRLVMeterForm]
62 | Left=730
63 | Top=590
64 | Width=310
65 | Height=60
66 | [PromptForm]
67 | Left=0
68 | Top=0
69 | Width=540
70 | Height=360
71 | [StatusForm]
72 | Left=270
73 | Top=190
74 | Width=540
75 | Height=360
76 | [PartMaskForm]
77 | Left=280
78 | Top=560
79 | Width=386
80 | Height=153
81 | [PlayListForm]
82 | Left=0
83 | Top=0
84 | Width=310
85 | Height=200
86 | [SPForm]
87 | Left=0
88 | Top=0
89 | Width=310
90 | Height=140
91 | [VolumeForm]
92 | Left=0
93 | Top=0
94 | Width=386
95 | Height=153
96 | [EnvForm]
97 | Left=70
98 | Top=15
99 | Width=457
100 | Height=534
101 |
--------------------------------------------------------------------------------
/BIN/PLAYER2/FMPMDE.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/PLAYER2/FMPMDE.txt
--------------------------------------------------------------------------------
/BIN/PLAYER2/PMDWin.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/PLAYER2/PMDWin.dll
--------------------------------------------------------------------------------
/BIN/PLAYER2/PMDWin039/PMDWin.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/PLAYER2/PMDWin039/PMDWin.txt
--------------------------------------------------------------------------------
/BIN/PLAYER2/README.md:
--------------------------------------------------------------------------------
1 | ```
2 | ==============================================================================
3 | FMP & PMD Music Player FMPMD2000 Ver.0.31
4 | Copyright & Programmed by C60
5 | (Translater: Hally)
6 | ==============================================================================
7 |
8 |
9 | ------------------------------------------------------------------------------
10 | = Beginning
11 |
12 | This program is a music player for Windows. It allows you to listen to
13 | music datas for "FMP" and "PMD". They're FM synthesis sound drivers for
14 | PC9801 series. Note that this cannot play any files without WinFMP.dll
15 | (Ver 0.03 after - under 1.00) and PMDWin.dll (Ver 0.17 after - under
16 | 1.00). Please get them separately.
17 |
18 |
19 |
20 | ------------------------------------------------------------------------------
21 | = Install/Uninstall
22 |
23 | a) Install
24 | Extract FMPMD.exe, and copy WinFMP.dll and PMDwin.dll to
25 | c:\windows\system (case of Windows 9x) or c:\winnt\system32 (case of
26 | Windows 2000) or the same directory as the player.
27 |
28 | To play the rhythm sound module of YM-2608, put the following wave
29 | files (44100Hz, 16bit monaural. Only PCM format is allowed) to the
30 | directory specifyed by "Wave directory for rhythm module" at the menu of
31 | Environment Setting.
32 |
33 | 2608_BD.WAV ;Bass Drum
34 | 2608_SD.WAV ;Snare Drum
35 | 2608_HH.WAV ;Hi-Hat
36 | 2608_TOP.WAV ;Cymbal
37 | 2608_TOM.WAV ;Tom
38 | 2608_RIM.WAV ;Rim Shot
39 |
40 | FMPMD supports the following fonts.
41 | Install them at Control Panel, the same procedure as usual fonts.
42 | The following special letters are available by installing.
43 |
44 | - FMPGaiji.ttf FMP external characters
45 | ($8b9f�`$8bd6, $8bd7�`$8bfc,
46 | $8c40�`$8c7e, $8c80�`$8c9e)
47 | - 98Graphics.ttf PC-9801 graphic characters
48 | ($80�`$9f, $e0�`$fc)
49 | - 98Line.ttf PC-9801 chartist characters
50 | ($86a2�`$86ed)
51 |
52 | b) Uninstall
53 | Delete this player, FMPMD.ini, PlayList.m3u from Explorer or something.
54 | Also delete WinFMP.dll, PMDWin.dll, wave files for the rhythm module,
55 | fonts if you don't need.
56 |
57 |
58 |
59 | ------------------------------------------------------------------------------
60 | = Environment Setting
61 |
62 | You can open the menu of Environment Setting from "Environmet setting (E)"
63 | on the "File (F)" menu.
64 |
65 | * First of all set the directory for PPC/PVI/PZI/PPS/P86, and wave
66 | directory for rhythm module.
67 |
68 | # "Sound (1)" tab
69 |
70 | - Device
71 | Specify the sound device.
72 | Usually "Wave Mapper" doesn't cause problems.
73 |
74 | - Buffer
75 | Specify buffer size for playing.
76 | It takes 16 times of specified value.
77 | Large buffer size prevents intermittent play, but play response or
78 | part masking becomes slow.
79 |
80 | - Output frequency
81 | Specify the output frequency of the wave device or the synthesis
82 | frequency of FM module. If "Synthesize FM in 55kHz" isn't checked,
83 | the synthesis frequency of FM module becomes the same value of output
84 | frequency. If it's checked, the synthesis frequency of FM module
85 | becomes 55kHz and output frequency becomes specified value.
86 | Higher frequency brings better sound, but CPU load becomes heavyer.
87 |
88 | - PPZ8 running frequency
89 | Specify the running frequency for PPZ8.
90 | Higher frequency brings better quality of sound at PPZ8 part.
91 |
92 | - First interpolation
93 | Specify if it uses first complement for each PPS/P86/PPZ8 part.
94 | First complement decreases noises, but CPU load becomes heavyer.
95 |
96 | # "Sound (2)" tab
97 |
98 | - Fadeout time
99 | Specify fadeout time in case the fadeout button is pushed or the song
100 | repeats specified times.
101 |
102 | - Auto fadeout and stop for each song
103 | Check this to fadeout and stop automatically when the song repeats
104 | the following "Loop count" times.
105 |
106 | - Loop count
107 | Specify the loop count for the continuous play or the above Auto
108 | Fadeout And Stop.
109 |
110 | - Compressor
111 | Specify if it compresses the output sound.
112 | Compressing increases the volume, but it may a bit change the quality
113 | of sound.
114 |
115 | - OPNA wait (nsec)
116 | Specify wait for outputting FM/SSG/Rhythm/ADPCM datas to each
117 | register. Usually you don't have to change it.
118 |
119 | # "Directory" tab
120 |
121 | - Wave directory for rhythm module
122 | Specify the directory including wave files (2608_BD.WAV, 2608_SD.WAV,
123 | 2608_HH.WAV, 2608_TOP.WAV, 2608_TOM.WAV and 2608_RIM.WAV�jfor rhythm
124 | module.
125 |
126 | - PCM directory
127 | Specify the reference directory for PPC/PVI/PZI/PPS/P86 and so on.
128 | You can specify it from more than two up to 64, and network drives
129 | are also allowed.
130 | The directory which contains the song data is certainly referred, so
131 | you don't have to specify it here.
132 |
133 | - Playing without PCM data by force
134 | Play by force even if PPC/PVI/PZI/PPS/P86 etc. are not found.
135 | The parts of PPC/PVI/PZI/P86 are not played without PCM. The part of
136 | PPS is played with internal SSG drums of PMD.
137 |
138 | # "Others" tab
139 |
140 | - Display parameters in 50 frames/sec (minimum requirement: PentiumPro)
141 | Display the parameter viewer in 50 frames per second. The work
142 | becomes quite heavy even if parameters aren't displayed.
143 | It works in 20 frames/sec without checking.
144 |
145 | - Sync control
146 | Adjust if the timing between sound output and parameter display don't
147 | accord. Turn right to delay the timing of parameter display.
148 | (Adjustable up to �}1 second)
149 |
150 | - Check playtime
151 | Check the playtime of the song and reflect it to the slider before
152 | start playing.
153 | Take off this check if you don't want a long wait.
154 |
155 | - Snap window
156 | The window size and positions are snapped in specified dot unit.
157 |
158 | - Show icon in tasktray
159 | Check it to show icon to tasktray.
160 |
161 | - Spectrum analyzer
162 | Specify the number of bands for the spectrum analyzer.
163 | Low : 8 band
164 | Middle : 16 band
165 | High : 32 band
166 | Sper : 64 band
167 | More bands make processing heavyer.
168 |
169 | - Use humming window
170 | Check it to use Humming Window for the spectrum analyzer processing.
171 | Resolution of the spectrum analyzer is improved but becomes heavy by
172 | this check.
173 |
174 |
175 |
176 | ------------------------------------------------------------------------------
177 | = Menu Operation
178 |
179 | # "File(F)" menu
180 | - Open File (O)
181 | Open the file or playlist.
182 |
183 | - Open folder (F)
184 | Open the folder and the register all songs in the folder. Songs in
185 | sub folders are also registered.
186 |
187 | - Load PCM for PMD (P)
188 | Load PCM data for PMD by force.
189 | Use when the song doesn't specify PCM for it.
190 |
191 | - Save PlayList (S)
192 | Save songs which registered at the current playlist. It is saved in
193 | m3u format. (Only file names are registered.)
194 |
195 | - Wav recording (W)
196 | Replay current song and write as wav file.
197 | Only one file is written even if it's on continuous play mode.
198 | Push Stop or Fadeout button or use Auto Fadeout in Environment Setting
199 | to stop writing.
200 | The frequency of wav file depends on the setting of synthesis
201 | frequency.
202 |
203 | - Environment setting (E)
204 | Open Environment Setting.
205 |
206 | - Exit (X)
207 | Finish FMPMD2000.
208 |
209 | # "Play (P)" menu
210 |
211 | - Start (S)
212 | Start playing.
213 | If there's no file in playlist, it starts file open dialogue.
214 | Also it cancels the pause when the song is suspended.
215 | * Japanese font (Msgothic.ttc) is required to display Japanese titles.
216 |
217 | - Pause (A)
218 | Pause the current song.
219 | It cancels the pause when it's suspended.
220 |
221 | - Fadeout (F)
222 | Fadeout and stop the current song.
223 |
224 | - Stop playing (S)
225 | Soon it stops the current song.
226 |
227 | - Next Music (N)
228 | Play the next song on playlist.
229 |
230 | - Previous Music (B)
231 | Play the previous song on playlist.
232 |
233 | - Random Play (R)
234 | Check it to enter random play mode.
235 | Cancel it to return to the normal play mode.
236 |
237 | - Loop Play (L)
238 | Check it to return the first song after it finishes the final song of
239 | playlist.
240 |
241 | # "Window (W)" menu
242 |
243 | - PlayList (L)
244 | Open playlist window.
245 | You can display and manage playlist.
246 |
247 | - Volume adjustment
248 | Open volume adjustment window.
249 | You can adjust volumes for each FM/SSG/Rhythm/ADPCM/PPZ part.
250 | FMP and PMD are managed separately.
251 |
252 | - PartMask (M)
253 | Open partmask window.
254 | You can mask parts by your mouse operation.
255 | Masking by keyboard operation is available without the window.
256 | (-> = Part Masking by Keyboard Operation)
257 |
258 | - Level indicator (E)
259 | Display volume level indicator.
260 |
261 | - Spectrum analyzer (S)
262 | Display spectrum analyzer.
263 | Both the frequency and the volume level are shown with the logarithm
264 | scale.
265 | The frequency at the left edge means about 100Hz, at the right edge
266 | means about 10000Hz, at the center means about 2000Hz.
267 | It omits some processing steps for the purpose of faster (realtime)
268 | processing. So it doesn't fit strict analyzing.
269 |
270 | - Parameter (P)
271 | Display parameter viewer based on text.
272 |
273 | - Console (C)
274 | Open cosole output screen.
275 | Display informations about memos and so on for FMP, KARAOKE and
276 | PMD.
277 |
278 | # "Help (H)" menu
279 | - Version Information (A)
280 | Display each version of FMPMD2000, WinFMP.dll, PMDWin.dll.
281 |
282 |
283 |
284 | ------------------------------------------------------------------------------
285 | = Tasktray Pop Up Menu Operation
286 |
287 | # Minimize(M) / Restore(V)
288 | Minimize / Restore a main window.
289 |
290 | # Open File (O)
291 | # Open folder (F)
292 | # Start (P)
293 | # Pause (A)
294 | # Stop (S)
295 | # Random Play (R)
296 | # Loop Play (L)
297 | # Environment setting (E)
298 | # Exit (X)
299 | Same as Main menu.
300 |
301 |
302 |
303 | ------------------------------------------------------------------------------
304 | = Main Window Operation
305 |
306 | # Buttons/Slider
307 | Play the song data, stop playing, etc.
308 | Just click eject button to select files. SHIFT + click to select
309 | folders.
310 |
311 | #Check Boxes
312 | - PPS
313 | Check to play K/R rhythm parts of PMD song data by using PPS.
314 | Without checking it plays with PMD internal SSG drums.
315 |
316 | #SSG+RHY
317 | Check to play OPNA rhythm module synchronisticly when it plays K/R
318 | rhythm parts of PMD song data.
319 | It equals /N option of PMDB2/PMD86/PMDPPZ.
320 |
321 | #PMD86 -> B2
322 | Check to make trying to fit the specification of PCM to ADPCM when
323 | it plays FMP song data.
324 | It equals /S option of PMD86.
325 |
326 | #PPZ8EM
327 | Check to play ADPCM parts by using PPZ8 when it plays FMP song data.
328 |
329 |
330 |
331 | ------------------------------------------------------------------------------
332 | = Playlist Operation
333 |
334 | # Mouse operation
335 | - Double Click
336 | Play the selected song.
337 |
338 | - Right Click
339 | Display popup menu. You can "Cut", "Copy", "Paste", "Select all" on
340 | playlist.
341 |
342 | # Keyboard operation
343 | - Enter Key
344 | Play the selected song.
345 |
346 | - Delete Key
347 | Delete the selected song from playlist.
348 |
349 | - CTRL + X Key
350 | Cut the selected song from playlist.
351 |
352 | - CTRL + C Key
353 | Copy the selected song to internal clip board.
354 |
355 | - CTRL + V Key
356 | Paste the selected song.
357 |
358 | - CTRL + A Key
359 | Select all songs on playlist.
360 |
361 |
362 |
363 | ------------------------------------------------------------------------------
364 | = Drag And Drop
365 |
366 | # Drag and drop to Playlist window
367 | Add the dropped file to playlist.
368 |
369 | # Drag and drop to other windows
370 | Delete current playrist and add the dropped song to playlist.
371 |
372 | ------------------------------------------------------------------------------
373 | = Part Masking by Keyboard Operation
374 |
375 | All means full keys (!ten keys).
376 |
377 | "1" - "6" : FM1 - FM6
378 | "7" - "9" : SSG1 - SSG3
379 | "0" : Rhythm
380 | "-" : ADPCM
381 | "Q" - "E" : FM3Ex1 - FM3Ex3
382 | "A" - "K" : PPZ1 - PPZ8 (for PMD only)
383 |
384 | Typing the above keys plus SHIFT key, it sounds the specified part only.
385 |
386 | "^" : Turn over all parts.
387 | "\" : Cancel all masked parts.
388 |
389 |
390 |
391 | ------------------------------------------------------------------------------
392 | = Command Line Options
393 |
394 | songfile name : Play the specified song. Full pathname is required.
395 | "/p" or "-p" : Restart the loaded song from the top.
396 | "/s" or "-s" : Stop playing.
397 | "/a" or "-a" : Pause / Cancel pausing.
398 | "/f" or "-f" : Fadeout playing.
399 | "/n" or "-n" : Play the next song.
400 | "/b" or "-b" : Play the previous song.
401 |
402 |
403 |
404 | ------------------------------------------------------------------------------
405 | = Confirmed Environments of Operations
406 |
407 | Selfmade AT clone (Asustek P4B266-E, Pentium4 1.8GHz, ELSA GLADIAC FX 534,
408 | AOpen AW744 Pro, etc.�j
409 |
410 | + WindowsXP SP1 synthesis frequency=55kHz
411 | + Windows98 synthesis frequency=55kHz
412 |
413 | SHARP Mebius FJ-200U(Celeron 600MHz, built-in YMF734)
414 | + Windows2000 SP4 synthesis frequency=55kHz
415 | + WindowsMe synthesis frequency=55kHz
416 |
417 |
418 |
419 | ------------------------------------------------------------------------------
420 | = Service Conditions And Reprints
421 |
422 | This is a free software. All copyrights are saved by C60. However, the
423 | copyright of original FMP is saved by Guu, the copyright of PMD98 is saved
424 | by KAJA, the copyright of PPZ8 is saved by Ukky, the copyright of FM
425 | synthesis engine is saved by cisc, the copyright of BrowseDialog component
426 | is saved by Maeda, the copyright of color changeable track bar is saved by
427 | fumika, the copyright of Trayicon component is saved by Yukio Tsujihara.
428 | (Modified and supported by Taro Kato.)
429 | The author doesn't accept any responsibilities even if WinFMP, PMDWin and
430 | FMPMD2000 cause troubles like data lost or machine broken.
431 | The author doesn't accept any duties to correct the program even if
432 | WinFMP, PMDWin and FMPMD2000 include bugs or troubles. (However I will
433 | make effort to correct when you'll bring reports of them.)
434 | I prohibit any reprints or any distributions. However, source codes of
435 | PMDWin/FMPMD2000 including changes are not the same if you contact the
436 | author before release them.
437 | Softwares including source codes of PMDWin/FMPMD2000 are allowed to
438 | release as free softwares if you contact the author before release.
439 | Feel free to release softwares which use WinFMP.dll/PMDWin.dll as free
440 | softwares. In the case of release it will be welcome for you contact to the
441 | author.
442 | To release commercial softwares (including shareware) which insert some or
443 | all parts of source codes of PMDWin/FMPMD2000, You have to get agreement
444 | from the author.
445 | To distribute changed PMDWin/FMPMD2000, you have to express clearly the
446 | copyright of PMDWin/FMPMD2000 and the contents of changes.
447 | Please open the source code to the public if you insert or change the part
448 | related to playing music from *.cpp or *.pas (except WinFMP.pas,
449 | PMDWin.pas, PCMMusDriver.pas and FMPMDdefine.pas).
450 |
451 |
452 |
453 | ------------------------------------------------------------------------------
454 | = Acknowledgments
455 |
456 | Thanks to Guu who developed the excellent music driver FMP and allowed to
457 | release this program, KAJA who developed the high-performance music driver
458 | PMD and allowed to release this program, Ukky who not only developed PPZ8
459 | to enlarge the possibilities of music driver but also provide the source
460 | code and allowed to release the program, cisc who not only developed the
461 | high-effective FM synthesis engine and allowed to use and release this
462 | program but also fixed bugs of PMDWin, Moonlight who allowed to use an
463 | algorithm of the compressor, TAN-Y who found many bugs, Mamiya who
464 | developed Winamp plug-in, Kigami who developed PMV, Maeda and fumika who
465 | released useful components, all the person who sent me bug reports,
466 | precious opinions and requests.
467 |
468 |
469 |
470 | ------------------------------------------------------------------------------
471 | = History
472 |
473 | ver.0.01 1999/08/02
474 | ver.0.02 1999/08/04
475 | ver.0.03 1999/08/08
476 | ver.0.04 1999/08/16
477 | ver.0.05 1999/08/29
478 | ver.0.06 1999/09/19
479 | ver.0.06b 1999/09/20
480 | ver.0.07 1999/10/03
481 | ver.0.08 1999/10/24
482 | ver.0.09 1999/11/20
483 | ver.0.10 1999/11/28
484 | ver.0.11 1999/12/18
485 | ver.0.12 2000/01/10
486 | ver.0.13 2000/02/28
487 | ver.0.14 2000/03/19
488 | ver.0.15 2000/06/11
489 | ver.0.16 2000/06/24
490 | ver.0.17 2000/06/25
491 | ver.0.18 2000/08/20
492 | ver.0.19 2001/01/21
493 | ver.0.20 2001/02/17
494 | ver.0.21 2001/05/06
495 | ver.0.22 2001/08/05
496 | ver.0.23 2001/09/16
497 |
498 | (omit details for the above)
499 |
500 | ver.0.24 2001/12/22
501 | It was crashed on WindowsXP + YMF744 - fixed.
502 |
503 | ver.0.25 2002/01/06
504 | Added FMP karaoke
505 | Added "Playing by force" option to play without PCM datas. (PVI, PPC, etc.)
506 | Changed UI for Main Window and Status Window. Now you can change the size
507 | of Status Window.
508 | Reduced the flicker of level meter. Now the size is adjustable.
509 | After start, it needed to play once to save wav file - fixed.
510 |
511 | ver.0.26 2002/01/14
512 | Installing FMP font to Win9x caused an access violation - fixed .
513 | Supported ADPCM part emulation of WinFMP.
514 | Reinforced an error check for the file name passing when it starts twice.
515 |
516 | ver.0.27 2002/06/16
517 | Graphical letters and ruled line letters of PC98 are now available at
518 | "Console"
519 | Fixed inaccurate vertical line location of "Console"
520 | Changed to play broken PCM file under "Playing without PCM data by force"
521 | mode.
522 | It might not allow to display Parameter viewer and PCM files under
523 | "Playing without PCM data by force" mode - fixed.
524 | It might not allow to get playtime from songs without PCM files under
525 | "Playing without PCM data by force" mode - fixed.
526 |
527 | ver.0.28 2002/07/13
528 | Now other sub windows move along with dragged main window.
529 | Now it can show icon to tasktray. (The switch is at "others" of
530 | "environment setting".)
531 | Status Window displays wrong file name in case it contains Kanji letters
532 | - fixed.
533 | Produced English version.
534 |
535 | ver.0.29 2002/08/18
536 | When pause is enabled, if stop the song and play again, Status window
537 | is freezed - fixed.
538 | Rename label in Partmask window. "PSG" -> "SSG".
539 |
540 | ver.0.30 2002/10/27
541 | It displayed whether the sub window would be open on the
542 | "window (W)" menu.
543 | The sub window was closed, when the sub window was open and the
544 | "window (W)" menu was chosen.
545 |
546 | ver.0.31 2003/09/28
547 | When eject button is clicked with pushing the SHIFT button,
548 | ignored the selecting folder - fixed.
549 |
550 |
551 |
552 | ------------------------------------------------------------------------------
553 | = Contact
554 |
555 | E-mail HQD00151@nifty.com
556 | Homepage http://www.fmp.jp/~c60/
557 | http://member.nifty.ne.jp/C60/
558 |
559 |
560 |
561 | C60
562 |
563 | * Those of you who don't read Japanese language, contact through VORC.
564 |
565 | E-mail info@vorc.org
566 | Homepage http://www.vorc.org
567 | ```
--------------------------------------------------------------------------------
/BIN/PLAYER2/WinFMP.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/PLAYER2/WinFMP.dll
--------------------------------------------------------------------------------
/BIN/PLAYER2/WinFMP018/WinFMP.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/BIN/PLAYER2/WinFMP018/WinFMP.txt
--------------------------------------------------------------------------------
/MML/MIKE.MML:
--------------------------------------------------------------------------------
1 | #Title Kitten of Great Fortune
2 | #Composer ZUN
3 | #Arranger RZF
4 | #Option /v/c
5 | #Filename .M2
6 | #Tempo 85
7 | #DT2Flag on
8 | #Memo Touhou 18 UM - Goutokuji Mike Theme
9 |
10 | @23 4 7 31 0 0 2 0 30 3 4 3 0 0 31 2 0 7 3 0 0 4 3 0 0 31 0 0 2 0 31 3 2 7 0 0 31 2 0 7 3 0 0 4 7 0 0
11 | @27 3 6 24 8 1 8 1 13 0 6 3 0 0 26 8 3 8 3 30 0 2 7 0 0 26 8 3 8 3 28 0 1 7 0 0 26 0 0 9 0 0 0 2 3 0 0
12 | @43 5 7 31 0 0 0 0 28 0 2 0 0 0 31 14 3 15 3 0 0 8 0 0 0 31 14 3 15 3 0 0 4 0 0 0 31 14 3 15 3 0 0 4 0 0 0
13 | @74 0 4 31 7 7 9 2 28 3 6 6 0 0 31 6 6 9 1 58 3 5 6 0 0 31 9 6 9 1 22 2 0 6 0 0 31 6 8 9 15 0 2 1 6 0 0
14 | @101 4 7 28 0 8 0 3 32 2 12 3 0 0 26 10 7 6 2 0 1 4 3 0 0 28 0 8 0 3 30 2 12 7 0 0 26 10 7 6 2 0 1 4 7 0 0
15 |
16 | ABCDEFGHIJ MXA0 MXB0 DF12 DS0 DR0 q0 _{+cf}
17 |
18 | ABCDEFG r1
19 | K R1
20 |
21 | ABCDEFGK L
22 |
23 | A @101 o2l8 V114 Q2 [b.>f.ae.c-.f.ba+.f-..f.ae.a.>c- c-c-df]2
26 | D @43 o4l16 V108 [r1]7 [r4]2 frfra+r>cr
27 | E @27 o3l2 V108 Q2 b>c-c-dQ8f+8r8a+8a16g+16 l16 [f8edec c-8g8f-d+f-d : f8edec d+8a+8g+fg+f-]2 d+8a+8g+fg+f- d8a8gf-ge
28 | F @74 o3l4 V114 Q4 frgrfra+r frgrbrQ7a+8r8[a+8]2 Q8 l8 frfr16f16 grgr16g16 frfr a+ra+r frfr16f16 grgr16g16 brbr a+rQ7a+a+ Q8
29 | G [r1]7 r2
30 | G E2,-1,0,1 o4l16 v13 frfra+r>cr
31 | K R2 R3
32 |
33 | A @23 o4l16 V114 Q8 r8frarfr
34 | BC @101 o2l2 V1 Q8 [r4]2
35 | D @43 o4l16 V108 Q8 r8frarfr
36 | E @27 o3l2 V108 Q8 [r4]2
37 | F @74 o3l8 V114 Q8 rfQ4af
38 | G E2,-1,0,1 o4l16 v13 r8frarfr
39 | K [R0]4
40 |
41 | A @23 o4l8 V114 [[br16.a+32b.a+32a32 fedc
ar :b4.a+32a32g+32g32 br16>e32f-32fr edccr defd c2
42 | B @101 o3l2 V108 [def.e4cd4e4f4a4]4
43 | C @101 o2l2 V108 [b>cd.c4c4d4e4]4
44 | D @43 o4l8 V96 [br16.a+32b.a+32a32 fedc
ar :b4.a+32a32g+32g32 br16>e32f-32fr edccr defd drfr>drcrccdcde dcf >dcc4]4
48 | G E2,-1,0,1 o4l8 v13 [[br16.a+32b.a+32a32 fedc
ar :b4.a+32a32g+32g32 br16>e32f-32fr edccr defd c2
49 | K R5 R6 [R7]2
50 |
51 | A @23 o3l8 V114 Q4 [b.>f.ae.c-.f.ba+.f-..f.ae.a.>c- c-c-df]2
54 | D @43 o4l8 V108 Q8 [f.b.>de.c-.ff-.ec-.e.gf.d.[c16d16]2c4]2
55 | E @27 o3l16 V108 Q8 [[f8edec c-8g8f-d+f-d : f8edec d+8a+8g+fg+f-]2 d+8a+8g+fg+f- d8a8gf-ge]2
56 | F @74 o3l4 V114 Q4 frgrfra+r frgrbrQ7a+8r8[a+8]2 Q8 l8 frfr16f16 grgr16g16 frfr a+ra+r frfr16f16 grgr16g16 brbr a+rQ7a+a+
57 | G E2,-1,0,1 o3l8 v13 [b.>f.ae.c-.f.ba+.f-..f.ae.a.>c- c.g+.>cc-.d c.c-8r8c-8c.ef.d.c.g+g.c-.c.fd.f.ag+.e.c[d+16e16]2d+4]2
64 | E @27 o3l16 V108 Q8 [[c8g+8fefd+ d8a8gf-ge : c8g+8fefd+ f-8>c-8c-8c-rc-r crcr c-rQ7c-c-]2
66 | G E2,-1,0,1 o4l8 v13 [c.g+.bf.d.c.g+.>cc-.d c.dddd4 e4.d+32d32c+32c32 er16a32a+32br agfd+ c+32d+32d+4 e4.d+32d32c+32c32]2 c32c+32d4 e4f4 gabg edd e4..d+32d32 refg
77 | A @23 o5l8 V117 [[br16.a+32br ab>defgabafgrf4g4a4]2 g4fg4f4f-32e32r16 geafbgae16f16 :bafrg4.f32f-32r16]2 gr>d+4e2.
78 | B @101 o3l2 V112 [efg.f4cd+e4f4g4a4]6
79 | C @101 o3l2 V112 [gab.a4efg4a4b4>d4]6
80 | D @43 o4l8 V96 [erer d4 :e4.r erbr agfd+
d+4e4.r]2 e4f4 gabg edd V102 l16 crgrdrbr >grfrcr
fffcgdagfdd[erer d4 :e4.r erbr agfd+
d+4e4.r]2 e4f4 gabg edd e4..r16 refg
83 | E @27 o5l8 V108 Q8 [brbr ab>defgabafgrf4g4a4]2 g4fg4f4r geafbgae16f16
d+4e2
84 | F @74 o4l2 V114 Q8 [cde.d4c4d+4e4f4]6
85 | G E2,-1,0,1 o5l8 v13 [er16.d+32e.d+32d32 d4 e4.d+32d32c+32c32 er16a32a+32br agfd+ c+32d+32d+4 e4.d+32d32c+32c32]2 c32c+32d4 e4f4 gabg edd e4..d+32d32 refg
86 | G E2,-1,0,1 o5l8 v13 [[br16.a+32br ab>defgabafgrf4g4a4]2 g4fg4f4f-32e32r16 geafbgae16f16 :bafrg4.f32f-32r16]2 gr>d+4e2.
87 | K R10 R11 R12
88 |
89 | AG r4
90 | BCDEF r2
91 |
92 | R0 l8 r
93 | R1 l16 r2 @192[c]4l32[c]8
94 | R2 l8 @1[[crr:r]2[c16]2]2[@1crr@256c]2@1cr[c16]2@256c@1c16[@128c16]3@1c16@128c16@512c
95 | R3 l16 @513c[@128c@258cr@1c@128c@258c@1c:c]7@513c@258[c]3[c32]8
96 | R4 l16 r8@1[cr]3
97 | R5 l8 @1c4r4.crc8c4r4.cr[c16]2@129c4.@128cc@1cr@129cc4@1c@128c@129c16@128[c16]3@129c@258c
98 | R6 l8 @1c4c@128cc@1cr@129cc4r@128c[c16]2@129c16@128c16c@256c@129c4r@128cc@1cr@129c@258c4c16@1[c16]3@258[c16]4c[c16]2
99 | R7 l8 @258c@128c@258c@128c@1[c16]3@1c16@258c@129cc16@128c16c16@1c16@258c@129cc16@128c16@129c16@1c16@258c@129c16@1c16@258c[c16]2cc@129[c16]2@128c@258c@129cc16@128c16c@258c@128c16@1c16@129c16@128[c16]2@1c16@258c@129c
100 | R8 l8 [@1025c@258c@129c16@128c16@258c]6 [@1025c@258c@129c16@128c16@258c@129c@258c@129c16@128c16@258c]4 @1025c@258c@129c16@128c16@258c[c16]4c[c16]2
101 | R9 l16 [[@1025c8@128cc@129c@128c@129c8@258c8:@128c@129c@128ccc@1c]2r@258c8.c8]3 @1025c8@128cc@129c@128c@129c8@258c8@128c@129c@128c@258[c]3c8.c8.c8c4@1[c]4
102 | R10 l8 @1[c2c2c4c2cc16c16:c2c4.cc4c4cccc16c16]2@129c4@1c@128c@129c@1cc@128c@258c4c4[c16]4c[c16]2
103 | R11 l8 [[@1025c@128c@258c@128c@129c16@1[c16]3@258c@128c@129c@128c16@1c16@258c@129c[c16]2c@258c@129c16@1c16@258c[c16]2cc@129[c16]3@1c16@258c@129c:c@128c16@1c16@258c@129c[c16]2@128c16@1c16@258c@129c]2 :@258ccc@129c@258c@128c@129[c16]3@1c16]2 @129c@128c16@1c16@258c@129c[c16]2@128c16@1c16@258c@129c
104 | R12 l16 @192[c]4l32[c]8
105 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # quick-pmd
2 | A program to quickly compile PC-98 .MML file using PMDDotNet and play it on FMPlayer or FMPMD2000. With necessary programs included you don't need to setup any DOS shenanigans.
3 |
4 | ## Installation
5 | 1. Clone this repo or [download it here](https://github.com/rzf45/quick-pmd/archive/refs/heads/main.zip).
6 | 2. Extract the files anywhere you want.
7 |
8 | ## How to use
9 | 1. Place your .mml file inside `MML` folder
10 | 2. Open command prompt on the folder where the `mml.exe` is.
11 | 3. Type `mml YOUR_MML_FILENAME` without the extension.
12 |
13 | Example using `MIKE.MML` included in the MML folder:
14 | ```
15 | mml MIKE
16 | ```
17 |
18 | ### Additional Usage
19 | - You can pass `-p2` to the argument to play it with FMPMD2000
20 |
21 | Example using `MIKE.MML` included in the MML folder:
22 | ```
23 | mml MIKE -p2
24 | ```
25 |
26 | ## How do I code the MML?
27 | - [pedipanol's guide to MML](https://mml-guide.readthedocs.io/)
28 | - [Youtube Playlist of mrnuage's PMD MML Tutorial](https://www.youtube.com/playlist?list=PLjDRNwIwhN8cgC0kppyueT_mplN-Wxc-r)
29 | - [Noyemi K.'s PMD Guide](https://web.archive.org/web/20211121010954/https://delmunsoft.com/PMD%20Programming.html)
30 | - [Translated `PMDMML.MAN` by Blaze and Pigu (if you have learned enough from guides/tutorials above)](https://pigu-a.github.io/pmddocs/pmdmml.htm)
31 |
32 | ### More information about PMD
33 | - [https://battleofthebits.com/lyceum/View/Professional+Music+Driver+%28PMD%29](https://battleofthebits.com/lyceum/View/Professional+Music+Driver+%28PMD%29/)
34 |
35 | ## Credit
36 | - [PMDDotNET](https://github.com/kuma4649/PMDDotNET) by [github/kuma4649](https://github.com/kuma4649)
37 | - [98FMPlayer](https://github.com/myon98/98fmplayer) by [github/myon98](https://github.com/myon98)
38 | - FMPMD2000 [http://c60.la.coocan.jp/fmpmd.html](http://c60.la.coocan.jp/fmpmd.html)
39 |
--------------------------------------------------------------------------------
/mml.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rzf45/quick-pmd/ec4e4d4b6c36f44f1d21c65876739ea89bdcc3cd/mml.exe
--------------------------------------------------------------------------------