├── .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>d
efgabafgrf4g4a4]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>d
efgabafgrf4g4a4]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 --------------------------------------------------------------------------------