2024년 3월 23일 토요일

PSG 3채널로 BGM과 효과음 공유

PSG 3채널로 BGM과 효과음 공유


아시다시피 PSG에는 3채널(Ch.A, Ch.B, Ch.C)의 출력단이 들어있는데요.

이 3채널만으로 배경음악(BGM)과 효과음을 함께 출력할 때는 보통 2가지 선택지에 놓이게 됩니다.

1) 배경음 2채널, 효과음 1채널 각각 할당

2) 배경음 3채널 기본 사용. 효과음 출력 시 배경음 1채널을 대신 사용


1)은 코나미 게임에서 종종 보이는 형태입니다.

게임 시작할 때는 3채널로 멋지구리하게 음악이 나온 후,

스테이지가 나오고 주인공이 움직이기 시작하면 배경음악은 2채널로 고정되는거죠.

효과음은 따로 1채널을 독점하구요.


BGM 2채널이라 단조롭게 들릴 수는 있지만, 멜로디가 잘 들리니까 뇌리에 팍팍 꽂히는 장점도 있어요 ㅎ.ㅎ



2)는 평소에 3채널로 BGM을 우렁차게(ㅋ) 출력합니다.

만약 효과음 출력이 필요하게 되면, BGM의 채널 1개를 삭제(출력 MUTE)하고 여기에 효과음을 넣게 되는거죠.

보통 BGM의 주 멜로디의 출력은 유지한 상태에서 베이스 또는 드럼 출력 용 채널을 삭제하게 됩니다.

아무래도 멜로디가 끊어지면 좀 어색하니까요 ㅎ.ㅎ


조금 특이한 경우로는 THEXDER가 있는데요.

일단 BGM은 3채널로 출력합니다.

여기서 효과음이 추가되면, BGM 채널 한개를 그냥 삭제하는 것이 아니라, BGM 채널 2개를 교대로 삭제하더라구요.

효과음를 PSG의 Ch.B, Ch.C으로 빠르게 전환하면서 출력합니다.

결국 해당 채널의 BGM도 빠르게 끊어졌다 출력했다 반복되겠죠.

실제로 들어보면 BGM이 살짝 끊어지듯 들리지만, 채널이 완전히 사라지는 게 아니라서 배경 음악이 대충 들립니다 ㅎ.ㅎ


참고로, 제가 예전 만든 그래픽/사운드 데모용 프로그램(테트리스)에서는.

BGM의 베이스 라인과 효과음이 하나의 채널(Ch.C)을 공유해서 출력합니다.

아래는 2016년에 찍은 영상인데, 심심하시면 구경하셔요 ㅎ.ㅎ



.

.

.


사실 이 글을 쓰게 된 이유가....

최근 토시탈드님이 공유해주신 남코의 사운드 관련 인터뷰 내용 때문이었습니다요~


BGM과 효과음이 PSG 채널을 공유해야 한다면 어떻게 해야될까?

저는 BGM의 멜로디가 사라지면 동시(BGM + 효과음)출력의 의미가 없지않을까? 싶었거든요.

뭐, 지극히 공돌이의 마인드라고 볼 수 있겠네요ㅋㅋ


근데 남코의 인터뷰를 보면 아래의 내용이 나옵니다. (한글 번역기의 출력이라 조금 어색할 수 있어요.)


나카가타:「효과음에 몇 음 사용할 수 있어」라고 하는 이야기도 하고 있었지요. 나는 SE(효과음)에 채널이 먹히는 경우는 항상 BGM은 베이스와 드럼(리듬)이 남는 조립으로 하고 있었습니다.


오자와: 그것도 스스로 결정 되었습니다. BGM 안의 어느 소리를 지워 효과음을 태울 수 있을까 하는 것도 사운드 크리에이터 측에서 조립하고 있었습니다.


케이노: 항상 퍼즐처럼…


오쿠보 : (케이노 씨가 다룬) '팩랜드'에서는 효과음에 따라 멜로디와 채널이 쓰여 있고, 효과음이 울릴 때에는 BGM이 베이스와 리듬대만이 되는군요. 효과음이 울리고 끝나면 멜로디의 소리가 곧바로 복귀하고 울리기 시작할 때는 MIDI 제어로는 할 수 없는 사양이므로, 인터랙티브에 특화한 게임만이 가능한 사운드 시스템이 인상적이었고, 그것을 엄청 잘 사용하고 있었습니다 그래.


케이노 : 비행기가 나오고 호퍼가 나와서… 에서 하고, 물건에 따라서는 BGM의 멜로디 라인을 마스킹하고 있었습니다.


오자와:플레이 스테이션 이후(CD로부터의 스트리밍 재생을 할 수 있게 됨) BGM이 사라지지 않고 울리게 되고 나서도, 「일부와 멜로디를 지운다」라고 하는 연출상의 효과는 사용하고 싶었네요.


케이노: 음소거(=무음)하는 것으로 소리가 서, 소리가 빛난다고 하는 것이 있기 때문에.


나카가타: 정말 그렇네요.


오자와: 지울 때 어떤 것을 깎는지에 따라 연출이 바뀌기 때문에…



요약하면, 효과음 출력 시 채널이 부족하면 BGM의 멜로디를 지운다는거죠.

저의 생각 -> BGM과 효과음을 어울리게 출력한다 -> 베이스/드럼 삭제하고 효과음을 출력

남코 생각 -> 효과음이 더 잘 들리도록 BGM의 멜로디를 삭제하고 베이스/드럼을 살린다 -> 멜로디를 지우는 것도 연출


재밌는 인터뷰였습니다 ㅎ.ㅎ


그럼, 즐거운 주말되세요~


2024년 3월 2일 토요일

지난 20년 개발의 추억 #7 - AudioFactory

월간 추억팔이 #7편이 나왔습니다~ ㅎ.ㅎ


이전글을 보시려면, 아래 링크를 눌러주세요!

https://sharksym.blogspot.com/2023/07/20-1.html

https://sharksym.blogspot.com/2023/08/20-2.html

https://sharksym.blogspot.com/2023/10/20-3.html

https://sharksym.blogspot.com/2023/10/20-4-mmcsd-drive-v3.html

https://sharksym.blogspot.com/2023/11/20-5-paramsx-r.html

https://sharksym.blogspot.com/2024/01/20-6-paramsx-r-v11.html



2017년, MMC/SD V3를 3년째 쓰고 있군요~~

아시다시피 구버전(V2.x 등)에서 롬매퍼+사운드를 담당하던 SCC칩이 V3에서 제거되었습니다.


당시에 SCC-I 카트리지 또는 사운드 전용으로 개조한 SCC 카트리지를 쓰는 분이 많아서,

V3에 외부 SCC 사운드를 지원하는 방식으로 바뀐 것 자체가 큰 문제는 아니었는데요.

근데 이 방식은 기존 프로그램을 MMCSD가 자동패치해서 구동하는 방식이라서, 지원이 완벽하지 않다는 문제가...

암튼 다음번 MMC/SD V4에서는 SCC 사운드를 구현해서 넣기로 계획을 합니다. 흙흙...


좀 여담이지만...

2000년초에 레트로 사운드가 유행하면서, 각종 PSG, FM 계열의 에뮬로 뮤직플레이도 함께 유행했는데요.

저는 주로 윈도용 윈앰프를 썼는데, KSS, MGS 등의 음악 파일을 윈도에서 바로 들을 수 있어서 좋았지요.

그 때 윈앰프용 IMS 플러그인도 제가 만들었는데, 기억하시는 분들 계실지 모르겠네요ㅋ

회사에서 개발하면서 이어폰 꽂고 칩사운드를 즐기는 것도 나름 맛이 있었어요.


근데, 작년(2016년)에 MSX계에 어떤 S/W가 혜성처럼 등장하게됩니다. 바로 VGMPLAY

제가 GT를 쓰면서 MIDI, MP3 음악을 듣거나, 게임 오프닝을 보면서 사운드를 즐기는 경우가 많았거든요.

이젠 MSX용 VGMPLAY가 나오면서, PSG, SCC, OPLL, OPL4, DCSG 등 본체의 사운드 칩으로 음악을 쉽게 즐길 수 있게 되었네요.

실기를 켜는 즐거움이 2배로 더 늘어났다고 하면... 조금 과장이려나요? ㅎ.ㅎ


서론이 길었는데, 그렇게 AudioFactory 프로젝트가 시작됩니다.



13 AudioFactory


이름만 봐도 아시겠지만, 사운드 통합 기기가 되겠습니다.

현재 제가 쓰는 MSX 환경에서 슬롯 점유를 최소화하고 필요한 사운드를 추가하는 것이 목표입니다.



13.1 SCC-I


MMC/SD V4에 넣기 위한 SCC-I 에뮬입니다.

사운드만 넣어도 되겠지만, 어차피 슬롯 한개를 점유하는 기기니까... SCC-I 메모리도 128KB FULL로 넣어봅니다.



13.2 DCSG (SN76489)


세가 게임(오락실 기판 및 게임콘솔)에서 주로 쓰였는데요. 이제 MSX에서도 VGM 음악으로 즐길 수 있습니다.

저는 현재까지는 DCSG가 들어있는 SEGA VDP 카트리지(Franky)를 쓰고 있습니다.

이걸 대체하기 위한 DCSG(SN76489) 에뮬이 되겠네요.



13.3 Sec-PSG


일명 세컨더리 PSG가 되겠습니다 ㅎ.ㅎ

이쪽은 활용도가 높진 않지만, 오락실 기판에서 PSG 여러개를 쓰는 경우에 VGM 플레이를 즐길 수 있구요.

그 외 Sec-PSG를 쓰는 자작 게임에서도 활용할 수 있겠습니다요.



13.4 OPM (YM2151)


MSX용 기본 사운드는 아니지만, 야마하 뮤직 컴퓨터에서 사용된 SFG 카트리가 있습니다. 여기에 OPM이 포함되어있어요.

Memory Mapped I/O로 되어있어서 SCC-I랑 슬롯이 겹치니까, 이걸 넣으려면 고민을 좀 해야겠는데요.

근데 막상 기존에 즐겨듣던 VGM들이 OPM + ADPCM로 구성된 경우가 대부분이라, OPM 하나만으로는 그닥 쓸모가 없겠더라구요.

고민할 필요도 없이 OPM 기능은 삭제합니다 ㅎ.ㅎ



13.5 프로토타입 제작


paraMSX-R에서 쓰였던 보드 한장을 개조해서 만들어봅니다.




열심히 에뮬을 구현해보아요~ ㅎ.ㅎ

로직 소모를 줄이기 위해 짱구를 요리조리 돌려서 VHDL 코딩을!

기존의 음악환경에서 불편했던 것들이 해결되니 좋네요. 특히 DCSG 때문에 큼지막한 Franky를 꽂아둘 필요가 없어져서 최고!ㅋ


근데, 갑자기 이런 생각이 머리를 스칩니다.

MMC/SD V4에 SCC-I와 DCSG, Sec-PSG 에뮬을 몽땅 넣으면 어떨까? 으흠...



암튼, 요렇게 AudioFactory 프로젝트는 종료됩니다.

참고로, 이 기기는 제가 다른 분들에게 제작해드린 적은 없습니다.

아마 나중에 만들어지는 기기들을 보시면, 이유를 알 수 있을거에요 ㅎ.ㅎ/


.

.


2017년에 재밌는 작업을 했던 게 있어서 하나 더 적어봅니다.


IOBox라는 건데요.

이건 별도의 주변기기를 의미하는 것은 아니고 시리얼 포트를 활용한 프로그램입니다.


MSX에서 VGMPLAY를 쓰다보니, 예전 486 도스에서 썼던 SOP 음악이 생각나더라구요.

OPL3를 사용하는 음악이라서 재밌는 것들이 많았는데, MSX에는 SOP 플레이어가 없죠 ㅎ.ㅎ


그래서, 요상한걸 하나 구상하게 됩니다.

윈도의 DOSBOX 프로그램을 수정해서 OPL3 I/O를 MSX로 전송해서 들어보면 어떨까? 였죠.


PC와 MSX 간의 통신은 RS-232C 카트리지를 사용합니다.

DOSBOX의 OPL3 에뮬코드에 시리얼포트로 데이터 입출력을 넣습니다.

사실 이건 예전에 TV 내장된 리눅스용 paraMSX 에뮬에서 썼던 방식이긴합니다.

그 때는 PSG와 키보드(PPI) I/O를 본체쪽으로 시리얼포트를 이용해서 구현했었죠.


암튼 그렇게 구현해서 만든 DOSBOX용 외장 리얼 사운드카드가 되겠습니다.

PAC-V의 불꽃쇼도 나오면 좋으니, 함께 넣어봅니다ㅋ



아래는 NOTEW 프로그램으로 SOP 음악을 재생하는 모습이네요.




요렇게 2017년은 마무리되었습니다.


그럼, 다음편에서 뵙겠습니다! ㅎ.ㅎ