Skip to content

Releases: jihodaya/jmplayer

JMPLAYER V3.1.1

Choose a tag to compare

@jihodaya jihodaya released this 28 Sep 03:20

X68000과 PC-98 음악 포맷을 새로 지원하고, VGM 칩을 크게 늘린 버전입니다.

새로 지원하는 포맷

🎼 Recomposer .rcp (PC-98 / X68000)

  • 곡 옆의 .GSD 셋업 파일까지 읽어 파트 음색, 드럼 맵, 리버브·코러스를 원곡대로 맞춥니다.
  • 참조용 .MID가 딸린 303곡과 비교해 96 %가 음표까지 일치합니다.
  • 사운드폰트, MIDI 장치, Nuked SC-55, 내장 MT-32 어디로든 연주됩니다.

🎹 Ballade .sng (PC-98)

  • 다이나웨어 Ballade · ミュージくん · ミュージ郎의 곡 파일을 읽습니다.
  • Recomposer와 확장자가 같아서 파일 내용을 보고 구분합니다.

🕹️ X68000 .mdx (MXDRV)

  • YM2151(Nuked-OPM) + ADPCM으로 연주합니다. .PDX 샘플 뱅크가 곡 옆에 있으면 드럼·효과음이 함께 나옵니다.
  • 원본 드라이버로 렌더링한 결과와 101곡을 대조해 박자와 음정을 맞췄습니다.
  • F12 가상 스테레오와 DSP 버튼이 MDX에도 적용됩니다.

🕹️ X68000 .mdz (MLD)

  • MIDI 파트는 MIDI 음원으로, FM/PCM 파트는 YM2151로 함께 연주합니다.
  • 두 파트는 같은 박자로 맞춰 재생되며, 일시정지·탐색·F7–F11도 양쪽에 함께 적용됩니다.
  • CM-32L용 곡에 들어 있는 음색 데이터를 내장 MT-32로 보냅니다.
  • Volume 아래에 FM/MIDI 균형 줄(MIDI◀ ▶FM)이 생겼습니다.

🎮 VGM 칩 확대

YM2413, AY-3-8910, SegaPCM, YM2610, QSound가 추가되어 MSX · 아케이드 · 네오지오 · CPS2 계열 파일이 소리를 냅니다. VGM 곡 제목(GD3 태그)의 일본어도 제대로 나옵니다.

고친 것

  • MIDI 탐색 후 음색이 바뀌던 문제 — 탐색하면 리버브·코러스·팬·뱅크와 셋업 SysEx가 빠져 다른 악기처럼 들렸습니다. 모든 컨트롤러와 NRPN/RPN을 복원합니다.
  • SysEx가 많은 MT-32 곡(예: Prince of Persia)이 외부 장치에서 한참 멈췄다가 몰아서 나오던 문제 — 이제 도입부가 빨리 감기지 않고, 전송하는 동안 창도 멈추지 않습니다.
  • 리듬 파트를 10번이 아닌 채널로 옮긴 GS 곡에서 드럼이 악기 소리로 나던 문제
  • 일본어(Shift-JIS) 곡 제목이 한글 깨진 글자로 나오던 문제
  • 녹음 버튼이 재생 중 비활성이던 문제 — 재생 중에 누르면 처음부터 녹음합니다
  • 폴더 스캔이 멈춘 것처럼 보이던 문제 — 진행 상황(12,431 / 114,727)을 표시합니다
  • 재생목록 새로 고침(L)이 빠진 곡 제목을 채웁니다
  • F1 도움말의 지원 확장자 목록을 실제와 맞췄습니다

알려진 문제

  • 일부 .mdx / .mdz는 곡이 요구하는 .PDX 뱅크가 없어 드럼이 나오지 않습니다. 뱅크는 함께 배포하지 않습니다.
  • 곡이 매우 많은 재생목록에서는 새로 고침(L)이 오래 걸립니다.
  • 재생 중 플레이리스트 폴더를 이동하면 화면이 잠깐 멈출 수 있습니다.

라이선스

  • JMPlayer는 이제 MIT 라이선스입니다. 배포본에 LICENSE.txt가 함께 들어 있습니다.
  • 새로 들어간 에뮬레이션 코어(Nuked-OPM, Nuked-OPN2, emu2413, emu2149, ymfm, qsound-hle)와 munt의 라이선스는 LICENSES.md에 정리되어 있습니다.
  • MT-32 롬과 Nuked-SC55 에뮬레이터는 포함되어 있지 않습니다.

English — Adds Recomposer .rcp (with its .GSD setup; 96 % note-exact
against 303 reference files) and Ballade .sng from the PC-98, and Sharp X68000
.mdx (YM2151 via Nuked-OPM + ADPCM with .PDX banks) and MLD .mdz, whose
FM/PCM and MIDI parts play together in step, with a new FM/MIDI balance row
under Volume. VGM gains YM2413, AY-3-8910, SegaPCM, YM2610 and QSound. Fixes
instruments changing after a MIDI seek, SysEx-heavy MT-32 songs stalling then
rushing on external devices, GS drums on channels other than 10, garbled
Japanese titles, and more. JMPlayer is now MIT-licensed; third-party cores are
listed in LICENSES.md. MT-32 ROMs and the Nuked-SC55 emulator are not included.
Use the _eng zip for the English UI.

JMPLAYER V3.0.0 beta

Choose a tag to compare

@jihodaya jihodaya released this 21 Aug 08:15

정식 V3.0.0 전의 베타 테스트 버전입니다.

새 기능

🎹 MT-32 / CM-32L 내장

롤랜드 MT-32와 CM-32L을 프로그램 안에서 직접 소리 냅니다.
출력 장치 목록에서 [MT32 JMP] 를 고르면 됩니다.

  • SC-55와 달리 별도 프로그램이 뜨지 않습니다 — 음원이 라이브러리로 들어 있어 JMPlayer 자체가 MT-32가 됩니다. 가상 MIDI 포트도 필요 없습니다.
  • 실기의 20자 디스플레이 창이 함께 뜹니다. 곡이 보내는 문구, 연주 중인 파트, MIDI 수신 램프가 실제 기기처럼 움직입니다.
  • 롬이 여러 벌 있으면 패널에서 기계를 골라 쓸 수 있습니다.

⚠️ 롬은 포함되어 있지 않습니다. 롤랜드의 저작물이라 제공할 수 없습니다.
프로그램 폴더의 MT32ROMs 안에 컨트롤 롬과 PCM 롬을 한 쌍 넣으면 그때부터 장치 목록에 나타납니다.

🎛 F5 악기 변경 창에 GM / MT-32 전환

.gyb / .oka를 MIDI 음원으로 연주할 때, 어느 음원에 맞출지 고를 수 있습니다.
MT-32를 고르면 곡에 저장된 배정을 GM으로 옮기지 않고 원래 번호 그대로 씁니다.

고친 것

  • .ims / .rol / .sop 재생 중 박자가 불규칙하게 흔들리던 문제 — 음표 타이밍이 오디오 버퍼 단위로 뭉개지고 있었습니다. 이제 PC 사양과 무관하게 같은 소리가 납니다.
  • F5를 누를 때마다 창이 하나씩 새로 뜨던 문제
  • MT-32 롬을 재생 중에 바꾸면 소리가 일그러지던 문제 — 곡을 멈췄다가 처음부터 다시 시작합니다
  • .gyb / .oka를 FM ↔ MIDI로 전환할 때 엉뚱한 곡이 재생되던 문제

알려진 문제

재생 중 플레이리스트 폴더를 이동하면 화면이 잠깐 멈출 수 있습니다. 곧 풀립니다.
원인을 찾는 중입니다 — 겪으시면 어떤 상황이었는지 알려주시면 도움이 됩니다.

문서

사용자 매뉴얼에 MT-32 관련 12절이 새로 들어갔습니다 (한국어 / English).

라이선스

MT-32 음원은 munt(mt32emu, LGPL-2.1)를 DLL로 사용합니다 — https://github.com/munt/munt


English — a beta ahead of the final V3.0.0. Adds a built-in Roland MT-32 /
CM-32L through munt, selectable as [MT32 JMP], with the twenty-character front
panel and a ROM selector. ROMs are not included (they are Roland's); put a
matching control + PCM ROM pair in the MT32ROMs folder. The F5 instrument list
gains a GM / MT-32 switch for .gyb / .oka played through MIDI. Fixes an
uneven, drifting tempo on .ims / .rol / .sop, F5 stacking a new window on
every press, and the sound breaking up when the MT-32 ROM is changed mid-song.
Known issue: the window can freeze briefly when moving between playlist folders
during playback. Use JMPlayer_v3_beta_eng.zip for the English UI.

JMPLAYER R2.7d

Choose a tag to compare

@jihodaya jihodaya released this 19 Aug 22:33
Fix the MIDI button acting on the wrong song while paused

Reported as "the previous song plays when switching between FM and
MIDI". patchTargetPath() asked only isPlaying, but a paused song has
isPlaying false while still being the song on screen - so pausing moved
the button's target to whatever row was highlighted in the playlist,
which during playback is usually a different song. Toggling wrote the
mode onto that file, left the loaded one alone, and the next play
started the highlighted song.

m_pausedByUser is what separates a pause from a stop, so the target is
now chosen by "isPlaying || m_pausedByUser".

The same guard had a second effect: toggling while paused changed the
flag but not the loaded stream, and playPause() would resume the old
engine under the new label. A paused song is now stopped, so the next
play loads it through the engine actually selected. F5's
rebuild-on-close carried the identical guard and got the same fix.

Also brings in midiall, the fourth test tool: MidiPlayer's parse, tempo
map, sound-mode verdict and lyric decoding over 7,884 containers and a
sample of the 116,085 .mid files. It would not have caught this one -
transport state is in the UI, which none of the tools can see.

JMPLAYER R2.7c

Choose a tag to compare

@jihodaya jihodaya released this 19 Aug 08:49

R2.7b was tagged on the R2.6b commit by mistake, so the tag pointed at
a tree with none of this work in it - no MIDI mode, and the two SC-55
launch bugs still present. Several R2.7b binaries were also built during
the day as fixes landed, the last of which differs from the first in
whether MIDI mode works on a non-ASCII path.

Renaming rather than re-tagging so there is exactly one binary per
version number.

JMPLAYER R2.6b

Choose a tag to compare

@jihodaya jihodaya released this 18 Aug 05:07

gyb , oka 등 oksori 포맷 재생 방식 변경

JMPLAYER R2.5i

Choose a tag to compare

@jihodaya jihodaya released this 07 Aug 05:19

OPL 파일 재생시 뱅크 문제 수정

JMPLAYER R2.5h

Choose a tag to compare

@jihodaya jihodaya released this 05 Aug 23:00

JMPlayer R2.5h

🆕 휴대용(포터블) 모드 — USB에 넣어 쓰기

실행 파일과 같은 폴더에 cfg 라는 폴더를 직접 만들면, 설정과 플레이리스트를 그 안에 저장합니다. 내 문서에는 아무것도 만들지 않습니다.

E:\JMPlayer\
    JMPlayer_R2.5h.exe
    cfg\        ← 직접 만드세요. 이 폴더가 있으면 휴대용 모드
    Music\      ← 자동 생성. 여기에 음악을 넣으세요
    BK\
  • cfg는 프로그램이 만들지 않습니다. 사용자가 만드는 것이 곧 스위치라, 기존 사용자에게는 아무 변화가 없습니다.
  • cfg를 지우면 다음 실행부터 다시 내 문서를 씁니다.
  • 음악은 Music 폴더에 넣으세요. USB가 E:에서 F:로 바뀌어도 목록이 그대로 유지됩니다. 실행할 때마다 다시 훑으므로 파일을 넣고 재실행하면 목록에 나타납니다.
  • Music 밖이라도 같은 드라이브 안이면 유지됩니다.
  • 현재 어느 위치를 쓰는지는 F1 도움말 맨 아래에 표시됩니다.
  • 이제 설정 폴더는 실제로 저장할 내용이 생길 때 만들어집니다. 한 번 실행해 보기만 해서는 흔적이 남지 않습니다.

참고: 프로그램이 쓰는 파일은 모두 자기 폴더 안에 들어가지만, Windows 자체가 남기는 기록(최근 문서 목록 등)까지는 어떤 프로그램도 막을 수 없습니다.

🔧 중요한 버그 수정

USB에서 새로고침(L)을 누르면 재생목록이 통째로 사라지던 문제 — 이동식 드라이브의 준비 상태를 확인하는 코드가 잘못된 방식으로 호출돼 항상 실패하고 있었습니다. 그래서 USB에 있는 모든 항목이 "사라진 파일"로 판정되어 삭제됐습니다. 하드디스크에서는 그 코드가 아예 실행되지 않아 멀쩡했습니다.

한글이 들어간 경로·파일명에서 .GYB/.OKA가 재생되지 않던 문제 — 경로를 백엔드로 넘기는 인코딩과 받는 쪽 인코딩이 달라 파일을 찾지 못했습니다. 영문 이름은 두 인코딩이 같아 드러나지 않았습니다.

재생목록이 손실되던 두 가지 경로 — 저장 도중 문제가 생기면 파일이 0바이트가 되었고, 그 빈 파일이 "이미 초기화됨"으로 취급돼 다시는 복구되지 않았습니다. 이제 임시 파일에 다 쓴 뒤 한 번에 교체하며, 빈 목록은 사용자가 직접 지운 경우가 아니면 저장하지 않습니다.

🎵 MIDI 개선

  • .mid 가사 표시 — 한글 가사가 깨지거나 세로로 쌓이던 문제를 고치고, 음절 단위로 정확히 따라갑니다. 전주 동안 가사가 미리 진행되지 않습니다.
  • .mid 제목 — 파일에 제목이 들어 있으면 목록과 제목창에 표시합니다(일본어 포함). 제목이 없으면 예전처럼 파일명입니다.
  • .IMS 제목 뒤 네모(□) 제거 — 제목 칸의 문자열 끝 표시까지 글자로 읽던 문제입니다. 이전 제목의 잔여물이 붙어 보이던 것도 함께 사라집니다.

📊 채널 모니터 — 음원 판정 정확도

GM/GS/XG/MT-32 판정이 크게 정확해졌습니다. 1,278곡으로 확인한 결과, 리셋 메시지가 명시된 파일 94개에 대해 **68% → 100%**가 되었습니다.

예전에는 32%(415곡)를 MT-32으로 표시했는데, 실제로 MT-32 리셋을 담은 파일은 1곡뿐이었습니다. 이제 근거 없이 MT-32으로 판정하지 않습니다.

파일이 스스로 밝히지 않은 경우에는 GM (assumed) 으로 회색 표시합니다. GM으로 읽고 있다는 뜻이며, 파일이 실제로 GM이라고 선언한 경우와 구분됩니다.

🐞 문제 신고에 도움

프로그램이 예기치 않게 종료되면 jmp_crash.log 를 설정 폴더(휴대용은 cfg\)에 남깁니다. 이 파일을 첨부해 주시면 원인 파악이 훨씬 빨라집니다.

📦 포함/미포함

동봉: 실행 파일과 Qt 라이브러리, STANDARD.BNK, 기본 사운드폰트, 기본 제공 곡(BK), 매뉴얼, Nuked-SC55 패치 스크립트.

미포함: Nuked-SC55 실행 파일과 SC-55 롬. 라이선스상 배포할 수 없습니다 — emulator-patch\ 안의 안내를 참고해 직접 빌드하시면 됩니다.

📖 매뉴얼: 한국어 · English


English

Portable mode. Create a folder named cfg next to the executable and settings and playlist live there instead of Documents, which is left untouched. Nothing creates that folder for you — you creating it is the switch, so existing installs are unaffected. Delete it to go back. Keep songs in the Music folder so the list survives the stick being E: on one machine and F: on the next; it is rescanned at every launch. Songs elsewhere on the same drive follow along too. The location in use is shown at the bottom of the F1 help, and the settings folder is now created only when there is something to save.

Refresh no longer wipes a playlist on removable drives. The drive-readiness probe was called incorrectly and failed unconditionally, so every item on a USB stick was judged missing and deleted. Hard disks never ran that code, which is why only USB users saw it.

.GYB / .OKA now play from paths containing non-ASCII characters. The path was handed to the backend in one encoding and read back in another; they agree only for ASCII.

Two ways the playlist could be lost are closed — it is now written to a temporary file and swapped in, and an empty list will not overwrite a populated one.

MIDI: lyrics in .mid files display and follow correctly, titles stored in the file are shown, and the stray box after .IMS titles is gone.

Sound-mode detection in the channel monitor went from 68% to 100% on the 1,278-file test set (files carrying an explicit reset). Files that declare nothing now read GM (assumed) rather than claiming GM outright.

Crashes now leave jmp_crash.log in the settings folder — please attach it when reporting.

Not included: the Nuked-SC55 executable and SC-55 ROMs; build instructions are in emulator-patch\.

JMPLAYER R2.5f

Choose a tag to compare

@jihodaya jihodaya released this 03 Aug 03:53

Fixed standard title and lyrics display for .mid files.

Fixed an error when file paths or filenames contain Korean characters.

JMPLAYER R2.5e with Nuked SC-55

Choose a tag to compare

@jihodaya jihodaya released this 31 Jul 01:14

What's new

🎹 Nuked-SC55 playback (no loopMIDI)

Play through the Nuked-SC55 SC-55 emulator directly — no virtual MIDI
cable needed. Pick Nuked SC-55 in the device list and JMPlayer drives
the emulator over a pipe.

The emulator is not included (it isn't public domain; JMPlayer is), and a
stock build stays silent. The emulator-patch/ folder has everything to make
it work:

  • build_patched_sc55.bat — clones, patches, builds and installs the
    emulator in one step (needs Git, CMake, a MinGW toolchain and the SDL2 dev
    package; see emulator-patch/README.md).
  • Then drop your own SC-55 ROM files into NukedSC55\. Any model is
    auto-detected. ROMs are Roland's — supply your own.

🛠️ Fixes

  • Crash on truncated MIDI files — a damaged/incomplete .mid could hang
    and close the app. It now stops cleanly at the bad point.
  • SC-55 display banners & GS reset now take effect (SysEx was being sent
    without its leading marker).
  • Leftover temp files from an abnormal exit are cleared on the next start.

Downloads

The release ZIP contains JMPlayer_R2.5e.exe, the NukedSC55\ drop folder
and emulator-patch\. Unzip and run — Nuked-SC55 is optional.

JMPLAYER R2.5

Choose a tag to compare

@jihodaya jihodaya released this 27 Jul 23:01

[JJoMe MIDI Player v2.5]

  1. 재생 시계가 리셋 전송 "전"에 시작되고 있었습니다.
    전송에 걸린 시간이 이미 흘러간 연주 시간으로 계산되어,
    곡 첫머리 이벤트가 한꺼번에 쏟아졌습니다.
    → 모든 사전 전송이 끝난 뒤 시계가 시작되도록 수정했습니다.

  2. 지연시간이 "리셋 메시지 사이"에만 적용되고 있었습니다.
    그래서 GM이나 GS 하나만 켜면 지연이 아무 일도 하지 않았습니다.
    → 마지막 리셋 뒤에도 적용되도록 수정했습니다.

■ 설정 (F6)

  • 권장값 안내를 설정 창에 표시해두었습니다.