본문 바로가기
도스 및 윈도우98머신

OPL3duo 구입 및 사용기 - 도스박스 OPL2/3 패스스루 및 미디모듈(인터페이스) 기능 등

by 월반장 2021. 1. 23.

아래 언급되는 달링톤님 opl2보드는

9632024.tistory.com/1469 참조

 

최근에 모님께서 언급해주신 OPL3duo 를 구입했습니다.

아래는 소개 및 구입처

OPL3duo - https://www.tindie.com/products/cheerful/opl3-duo/

 

OPL3 Duo! by Cheerful Electronic on Tindie

Synthesizer for Arduino compatible boards with dual OPL3 chips

www.tindie.com

*배송료 포함 7만원정도면 구입할 수 있습니다. 페이팔이 가능하다 보니 편하게 구입하긴 했는데 페이팔이 안된다면 조금 난감할 수 있겠습니다.)

일단 이 제품의 용도는 여러가지 인데요...

도스박스중 DOSBOX-X에서 정식으로 OPL2/3의 패스스루 기능을 지원하고

미디인터페이스로서의 기능을 합니다.(OPL음원모듈이 되겠네요. 단 Teensy에만 해당)

이 제품은 단독으로는 쓸 수 없고 아두이노, Teensy, 라즈베리파이, 오렌지파이, NodeMCU 에 연결하여 사용합니다.

이렇게 담담히 쓰고 있지만 아래 사용기를 보면 참으로 파란만장한 일화가 많으니 ... 읽어보시고 딱 하나만 골라서 연결하세요....

이 제품은 참 먼곳에서 날아왔습니다.

POSTNL... 네덜란드

일요일인 1월3일에 입금 후 다음날 배송을 넣었다는 소식이 왔는데요.(1월 4일 배송시작)

배송번호도 없고 (없다고 미리 예고는 되어 있습니다.) 예전에 POSTNL에 40일 걸린걸 경험해봐서

잊으려고 노력했는데 10일만에 왔더군요. 1월 14일 우편함에 도착...

 

*두번째 구입한 제품은 18일이 걸렸습니다. 1월 29일에 출발해서 2월 15일에 도착, 설날이 포함되어서 이 3일과 낀 주말 2일을 합해서 뺀다면 13일 정도가 되겠네요. 빠르면 10일 늦어도 20이정도라고 예측이 가능한데 코로나까지 감안하면 저렴한 우편배송치고는 빠른편입니다.(오히려 코로나 이전에 40일 걸린 상황보다 더 빠르네요.)

배송료가 하도 저렴해서 그렇지 이러한 포장상태는 흐음...

 

뭐 그래도 내용물이 멀쩡하니 된 것이지요.

본품과 메뉴얼이 전부입니다.

 

아래는 본품

듀오답게 YMF262가 두개

출력은 라인아웃과 스피커이고 볼륨은 스피커출력용입니다.

이 출력단들은 일단 잡음면에서 합격선입니다.

 

아래는 메뉴얼

아래 내용이 전부라 ....

 

 

연결은 그리 어렵지 않습니다.

https://github.com/DhrBaksteen/ArduinoOPL2/wiki/Connecting-the-OPL3-Duo!

 

DhrBaksteen/ArduinoOPL2

Arduino library for use with the OPL2 board (YM3812) and OPL3Duo (YMF262) - DhrBaksteen/ArduinoOPL2

github.com

 

 

 

아두이노나 틴지나 위의 표대로 연결하면 됩니다. 6 7 8 11 13 10 9

이런 번호는 아두이노 등 개발보드들의 D6 D7~ D11, D13 에 연결하시면 됩니다.

표에서 빠진 GND와 VCC(5v 혹은 3.3v)은 너무나 당연하거라 빠져있는데 개발보드의 기판이나 핀맵을 보고 연결하면 됩니다.

바꿔 연결하면 저처럼 아두이노의 다이오드를 태워먹는 비극이 발생하니 조심합시다.

아래는 제가 사용했던

아두이노 나노, 아두이노 듀에, TEENSY 4.0의 연결방법입니다.

좌측부터 아두이노 듀에, 아두이노 나노(FT232RL), 아두이노 나노(CH340), TEENSY 4.0 입니다.

*CH340와 FT232RL는 USB to UART 칩인데 이 중에 FT232RL 가 좀더 USB쪽 호환성이 좋다고 알려져 있습니다.

 

 

아두이노 나노

아래의 핀맵에서 GND는 표기된 아무곳이나 VCC(5v 혹은 3.3v) 둘 중 하나에 연결, VIN(인풋)에 연결하지 마세요.

나머지는 D6~D11, D13 를 보면서 연결

위의 ICSP는 아래 나노보드의 하단에 있는 6핀을 말합니다.

*5V 에 연결하세요. 볼륨이 약간 더 크더군요.

 

 

아래는 아두이노 듀에

역시 GND는 표기된 아무곳에, 5V 혹은 3.3V도 찾아서 연결하고 VIN(인풋)에 연결하지 마세요.

usb는 프로그래밍용 단자 아래 그림상 좌측의 usb와 연결합니다. (USB PROG)

USB 단자가 마이크로 타입인데 구형 스마트폰에 쓰인 단자입니다.

듀에는 MOSI와 SCK에 해당하는 D11과 D13을 아래 표의 우측 번호를 보고 연결하면 안되고

SAM3X8E 칩셋 밑에 있는 ICSP에 연결해야 합니다.

D6~D10 는 아래 그림의 우측 헤더, MOSI와 SCK인 D11과 D13는 중앙하단 6핀 중 MOSI와 SCK에 연결

파워어뎁터는 별도 연결하지 않아도 됩니다.

*5V 에 연결하세요. 볼륨이 약간 더 크더군요.

 

 

아래는 TEENSY 4.0 입니다.

아두이노 듀에와 비슷하게 USB 단자가 마이크로 타입인데 구형 스마트폰에 쓰인 단자입니다.

A나 D구분없이 번호대로 연결하면 됩니다. GND도 표기된 곳에 연결,

단 VCC는 3.3v에만 연결해야 합니다.

5v 표기된 곳은 VIN이라서 연결하면 안됩니다.

문제는 국내에 재고가 잘 없더군요. 해외딱지가 안 붙은 곳에 한 3군에 연락했는데 국내재고가 있는 곳을 찾아서 구입했었습니다. 문제는 재고가 있는 제품은 핀헤더가 없어서 핀헤더도 별도 구입해서 납땜했네요....

핀헤더가 달린 제품은 재고가 해외라 10일정도 걸린다고 합니다....

 

 

간편한(?) 연결을 위해 천원미만의 반찬통을 개조 ....처참한...

(달링톤님 보드를 넣었던 반찬통입니다.)

보드의 헤더를 점퍼선(암-수)를 이용해 반찬통 상단으로 꺼낸 후 점퍼선의 수(핀)와 헤더소켓(암)의 뒷 핀부분에 납땜했습니다.

 

인두기로 지진 후 칼로 자른 처참한 자태......

 

여기가 틴지를 삽입하는 곳입니다.

 

합체... 이 위험한 노출을 가려야 하는데...

 

.....

애네들을 연결하고는 아두이노IDE에 라이브러리를 받아서 예제를 업로드 해야 합니다.

TEENSY는 아두이노 호환이라 동일 프로그램에서 라이브러리 업로드가 가능합니다.

아래 링크에서 아두이노IDE 다운로드 및 설치

https://www.arduino.cc/en/software

 

Software

Open-source electronic prototyping platform enabling users to create interactive electronic objects.

www.arduino.cc

틴지를 사용하는 경우 아래 링크에서도 틴지두이노를 받아서 설치합니다.

위의 아두이노IDE를 설치하고 틴지두이노를 설치하세요.

https://www.pjrc.com/teensy/td_download.html

 

Teensyduino: Download and Install Teensy support into the Arduino IDE

Download Teensyduino, Version 1.53 Teensyduino is a software add-on for the Arduino software. Teensyduino 1.53 supports Arduino versions 1.8.5 and 1.8.9 and 1.8.11 and 1.8.12 and 1.8.13. Future versions of Teensyduino will drop support for Arduino 1.8.11 O

www.pjrc.com

그리고 아래 링크에서 틴지 로더 어플도 다운로드

https://www.pjrc.com/teensy/loader.html

 

Teensy Loader Application - available for Windows, Linux and Macintosh systems

Step #2: The Teensy Loader Application The Teensy Loader program communicates with your Teensy board when the HalfKay bootloader is running, so you can download new programs and run them. Update: Teensy LC & 3.x are supported by Teensyduino. After installa

www.pjrc.com

 

여기까지 설치가 되었으면

아두이노IDE를 실행합니다.

그리고 스케치 - 라이브러리 포함하기 - 라이브러리 관리 에 들어갑니다.

 

OPL2를 쳐서 검색 하면 아래 아두이노 OPL2가 뜹니다.

2021년 1월 23일 현재 최신버전은 2.0.5입니다. 골라서 설치해줍니다.

*2.0.4는 설치시 핀번호 이슈가 있어서 굉음이 나니 절대 설치하지마세요.

 

그리고 툴에 들어가서 개발보드를 설정해줍니다.

아두이노 나노의 경우 아래처럼

보드 - 아두이노 나노

프로세서 - ATmega328p로 설정하는데 올드부트로더의 경우 통신속도가 다르기 때문에 잘못 고르면 라이브러리 예제의 업로드가 되지 않습니다. 57600이 올드부트로더에 해당하고 아닌경우가 115200 가 됩니다.

달링톤님의 OPL2보드에 달린 아두이노 나노가 올드부트로더 더군요. 이 경우 올드부트로더를 선택하면 되고

제가 구입한 FT232RL는 올드부트로더가 아니었습니다.

프로세스를 골랐다면 포트는 제어판 - 장치관리자 - 포트(COM & LPT) 에서 번호를 확인해도 되고

아래 그림의 포트를 클릭해보면 나오는 번호가 있습니다. 여러 시리얼 장치를 사용하지 않는다면 연결한 하나만 뜨겠지요.

 

아두이노 듀에는

먼저 툴 - 보드 - 보드매니저를 실행합니다.

보드매니저에서 DUE로 검색하면 아래 처럼 뜹니다. 최신버전으로 설치해줍시다.

 

설치가 된다음

툴-보드에서 아두이노 ARM 32비트 보드가 추가 됩니다. 아두이노 듀에 프로그래밍 포트를 선택

그리고 포트도 나노와 동일한 방법으로 찾아 선택

 

틴지는 위에서 틴지두이노를 설치했다면

아두이노IDE의 툴-보드에서 아래처럼 틴지두이노가 나타납니다.

저는 4.0을 사용해서 여기서는 4.0을 선택

 

USB타입은 도스박스 패스스루용도라면 시리얼

미디모듈(인터페이스)라면 미디를 골라주면 됩니다. 일단 시리얼을 골라주었습니다.

(시리얼+미디 가 있는데 예제가 하나만 작동하므로 둘중 하나만 됩니다.)

 

포트설정입니다.

아래처럼 시리얼포트번호를 선택해주면됩니다. 찾는 방법은 위의 아두이노들이랑 동일합니다.

단 처음 틴지를 구입하고 연결해보니 시리얼모드가 아닌지 아래 사진처럼 나오지 않습니다.

 

아래처럼 장치번호 비슷한 것이 나타나더군요(아래 사진은 미디모드로 선택하고 해당 예제를 업로드한 상태)

USB타입을 시리얼로 골랐는데 아래 사진처럼 나와도 아래 사진의 것처럼 선택해줍니다.

 

여기까지 왔다면 이제 라이브러리 예제를 업로드 하면 됩니다.

아두이노 IDE

파일-예제-아두이노OPL2를 골라주면 아래 사진처럼 두가지가 보입니다.

OPL3DUO를 골라주면 여러가지 예제가 나옵니다.

SearialPassthrough이 도스박스의 OPL패스스루용으로 쓸 수있습니다. 골라줍니다.

 

아래의 창이 뜨면 오른방향 화살표를 눌러 업로드 해줍니다.

 

그리고 틴지는 미디모듈(인터페이스용)으로도 가능합니다.

먼저 아두이노 IDE에서 툴 - 보드에서 틴지를 골라주고 USB타입을 MIDI로 선택

*포트는 이전에 시리얼이었다면 틴지포트의 것을 골라주면 됩니다.

파일-예제에서 아래처럼 TEENSYMIDI를 골라주고 역시 업로드 해줍니다.

업로드 후에 보면 아래처럼 포트가 미디로 변경 되어 있습니다.

제어판-장치관리자에서 아래처럼 미디장치가 나타 납니다.

미디플레이어에서도 확인가능하고

 

쿨소프트 미디매퍼에서도 확인 가능합니다.

 

다음 설정은 도스박스 입니다.

먼저 OPL패스스루

도스박스는 DOSBOX-X를 사용해야합니다. 0.83.9 버전 이상을 사용하세요.

https://dosbox-x.com/

 

DOSBox-X - Complete DOS emulation package

DOSBox-X emulates a PC necessary for running many DOS games and applications that simply cannot be run on modern PCs and operating systems, similar to DOSBox. However, while the main focus of DOSBox is for running DOS games, DOSBox-X goes much further than

dosbox-x.com

도스박스를 설치했다면

dosbox-x.conf을 메모장으로 열어서

(없는 경우 dosbox-x.reference.conf를 파일명 변경하면 됩니다.)

[sblaster] 을 찾아들어가 수정해줍니다.

oplemu를 ​opl3duoboard

그외 oplmode는 auto로 두어도 되고 opl3로 두어도 됩니다.

oplport는 아래 그림처럼 포트번호를 찾아 적어줍니다.

*아두이노IDE에서 이미 포트번호는 확인하셨을 겁니다.

아니면 도스박스 실행후

main-Confiruration Tool에 들어가서 사운드블라스터를 골라준 후 같은 설정들을 변경하고 세이브하면 됩니다.

설정변경 후에는 종료후 재시작을 해야 적용됩니다.

틴지미디로 한 경우 아래 처럼 설정합니다.

먼저 틴지미디의 번호를 찾습니다.

도스박스 실행후

mixer /listmidi 를 실행하면 아래처럼 미디장치가 나타납니다.

9번 OPL3Duo MIDI 입니다.

 

아래 처럼

도스박스 실행후

main-Confiruration Tool에 들어가서 MIDI를 선택한후

midiconfig를 장치의 번호(위의 그림대로라면 9)

mididevice는 win32를 골라줍니다. (실제 미디장치를 이용하겠다는 설정)

 

dosbox-x.conf 에서는 아래처럼 설정(장치가 9번인 경우)

설정변경 후에는 종료후 재시작을 해야 적용됩니다.

아래는 제품 공식위키의 설명

 

 

아래는 테스트영상입니다.

예전에 달링톤님표 OPL2보드 테스트했을때 USB칩셋에 따라서 호환성이나 출력 중 이슈가 나타날 수 있다고 했는데요

역시 비슷한 이슈들이 나타납니다.

아에 보드인식조차 안되는 경우가 있고,

음이 늘어지는 경우, 음의 일부 템포가 안맞고 틀어지는 경우가 있습니다.

먼저 음의 일부가 템포가 안맞고 틀어지는 경우 입니다.

OPL2인 프린세스메이커2

 

 

OPL3 스테레오인 디센트(OPL3는 동급생같은것도 있습니다만 OPL3스테레오로 돌아가는 것은 소수인데 디센트가 대표적입니다.)

 

그리고 아래가 음이 늘어지는 경우입니다.

 

 

 

 

그리고 아래가 정상적인 경우

 

 

 

-디센트의 경우 Dosbox-x의 sdl2에서는 초기 약간 멈칫하는 경우가 있습니다. SDL1으로 구동하세요.

이 증상들은 개발보드와 USB칩셋의 조합에 따라 달라지는데요.

 

아두이노나노, 아두이노 듀에와

인텔 USB 3.0(Z77칩셋), ASM3242(아마도 1142, 3142도 동일할 것으로 추측) 조합에서 나타나고

AMD(X570칩셋)의 USB3.x포트들과 VIA VL805 usb3.0 은 OPL2/OPL3 게임에서는 정상

OPL3 스테레오에서는 이슈가 나타납니다.

Teensy 4.0의 경우에도

인텔 USB 3.0(Z77칩셋)에서 동일이슈

AMD(X570칩셋)의 USB3.x포트에서는OPL2/OPL3 게임에서는 정상, OPL3스테레오에서 이슈

VIA VL805 usb3.0은 인식자체가 안되고

ASM3242(아마도 1142, 3142도 동일할 것으로 추측) 에서는 OPL3 스테레오까지 정상입니다.

 

 

 

*본문을 쓸 당시의 Dosbox-x 버전은 0.83.9로 0.83.10 부터는 이부분에 수정이 있었습니다. 음이 밀리거나 타이밍이 맞지 않는 부분을 위해 버퍼를 넣었다고 합니다. 테스트해보니 인텔과 AMD(X570칩셋)의 USB3.x포트에서 디센트의 OPL3 스테레오에서 조금 완화되었습니다. 아직 Teensy 4.0 + ASM3242에 SDL 버전을 사용한 만큼은 아닙니다.

그리고 MINGW버전에는 문제가 있는지 OPL3DUO 출력이 되지 않습니다.(인식은 됨) VS(VC, 비쥬얼스튜디오) 로 빌드된 버전의 경우에는 문제가 없습니다. 이 부분도 0.83.11(2021.2.15일 현재 소스코드만 있음.)에서 고쳤다고는 하는데 해보니 안되더군요. 아직은 MINGW버전은 피해야할 것 같습니다.

*2021년 2월 16일 해당 부분이 수정되었습니다. mingw 버전에서도 OPL3DUO가 정상출력됩니다.

 

아래 영상이 0.83.10(영상은 11버전, 10과 동일) 녹화

45초까지가 영상이 늘어지는 것, 이후가 드롭(버벅임)

틴지4.0의 경우 인식이 안되는 비아의 usb3.0 칩외에는 괜찮아졌고(그래도 면밀히 들어보면 ASM3242보다는 조금 덜 부드러운 느낌이납니다.)

아두이노 나노와 듀에는 ASM3242조합시 늘어지는 현상, 비아와 인텔, AMD(X570gt8)와 조합하변 군데군데 드롭이 나타납니다. 아직은 틴지 4.0과 ASM3242조합에 DOSBOX-X는 SDL1(SDL2는 뭔가 거슬립니다.)을 사용하는 것이 가장 베스트입니다.

 

 

 

가지고 있는 장치 중

Teensy 4.0 + ASM3242(아마도 1142, 3142도 동일할 것으로 추측) 조합이 가장 좋습니다.

현재까지 테스트했을때 이상이 없었습니다.

Teensy 4.0는 국내재고를 확인해야하지만

ASM3242칩을 쓴 USB 확장카드는 국내에서 구할 수 있습니다.

문제는 둘다 3만원대로 추가지출이 필요하다는 점이겠네요.

하지만 OPl2/3를 USB에 연결해서 도스박스 패스스루로 한다라는 개념의 첫 주자인 일본의 모 제품은...

가격이 100만원대라는 것을 생각해보면.....

아래부터는

Teensy 4.0 + ASM3242 조합 영상입니다.

아 디센트는 셋업에서 체인지 뮤직카드를 보시면 OPL3가 있는데 이걸 골라주면

OPL3 스테레오로 구동됩니다.

 

 

 

아래는 노부나가의 야망 무장풍운전

 

 

무장풍운전은 실행시 EMS를 해제해주어야 됩니다.

dosbox-x.conf 에서 아래처럼 EMS를 설정

 

아래 영상은 대항해시대1

 

대항해시대는 LOADFIX 를 실행해주어야 정상실행됩니다.

LOADFIX.exe는 별도로 구하지 않아도 DOSBOX-X에서 기본내장되어 있습니다.

 

아래는 둠1 OPL3 스테레오 모드

 

둠의 OPL3스테레오 모드는 아래처럼

Set dmxoption=-opl3

를 실행해주고 게임을 해야합니다.

물론 둠의 셋업에서 음악설정은 사운드블라스터

 

아래는 동급생2입니다.

OPL3 게임으로 달링톤님의 OPL2보드 및 OPL3duo(OPL2 예제를 업로드한 경우), 같은 제작자의 OPL2보드에서는 소리가 출력되지 않습니다.

 

 

 

아래는 미디 플레이입니다.

프린세스메이커2 GM설정 후 플레이

 

 

 

아래는 dosmid로 디센트의 미디파일 플레이 DESCENT(Level 4) - D_cent09.mid

플레이어와 미디파일 첨부합니다.

DOSMID.7z
0.33MB

 

 

 

 

도스박스에서 이 OPL3Duo를 미디인터페이스(음원모듈) 이용시 문제점이 있는데요

곡 중간에 멈춤, 혹은 곡이 끝나고 난 뒤에도 리셋되지 않고 음이 남습니다.

이때문에 리셋을 해주어야 하는데요.

윈도우의 미디플레이어, 윈도우미디어플레이어에서는 나타나지 않는 문제입니다.

틴지4.0의 리셋방법은 버턴을 누르면 되는 것이 아니라서(버튼은 수동프로그래밍용) 조금 번거로운데

일단 버튼을 누르면 반대쪽 LED가 빛이 납니다. 이상태에서

아까 받아둔 틴지 로더 어플을 실행합니다.(teensy.exe)

그러면 아래 화면이 나오는데요

틴지보드의 버튼을 누른 상태라면 녹색이ㅡ 오른쪽 방향의 화살표(메뉴로 본다면 오퍼레이션-리부트) 가 활성화 됩니다.

이 활성화된 화살표버튼을 눌러주면 리부트/리셋이 됩니다.

*이 방법 외에는 usb케이블을 뽑아야 하니 소프트하게 이렇게 합시다.

 

 

더해서

OPL3Duo는 동일제작자의 opl2오디오보드용 예제를 업로드 할 수 있는데요

이렇게 해주면 달링톤님이 제공한 도스박스를 사용할 수 있게되고

OPL3Duo 제작자의 OPL2오디오보드용 예제들도 사용할 수 있습니다. 아직 OPL2오디오보드용 예제가 더 많다보니 이쪽으로 변경해서 사용하는 경우가 있긴 하겠지요.(적용방법에 따라 달링톤님에 제공해주신 예제들도 업로드 가능해집니다.)

방법은 2가지입니다.

_________________________________________________________

Running OPL2 Audio Board Example Code on the OPL3 Duo

Maarten Janssen edited this page on 24 Oct 2020 · 4 revisions

The OPL3 Duo board is backward compatible with the OPL2 Audio board. However with the current hardware and software there are two simple steps that you need to go through before the OPL2 Audio Board examples will work on your OPL3 Duo.

1. Constructor

The OPL2 Audio board has different default connections from the OPL3 Duo. Therefore we must change the pinout when we create the OPL2 library instance to tell the library we're going to be using different pins.

Hardware solution

If you rather leave the code as is then you need to change how some of the OPL3 Duo pins are connected the the Arduino. Two pins are swapped:

/IC is connected to Arduino pin 8

A0 is connected to Arduino pin 9

All other pins remain the same, no software changes are needed

Software solution

If you want to keep using the OPL3 Duo pinout, for example because you connect the board with a ribbon cable with a fixed connector, then you need to make a small change to the example code. In every example you will see the following line of code:

OPL2 opl2;

This creates an instance of the OPL2 library with the default pinout. To make it work with the OPL3 Duo pinout we replace this line as follows:

OPL2 opl2(9, 8, 10);

Now you can connect the OPL3 Duo board as you usually would.

2. Address lines

There are two address lines, A1 and A2, that the OPL2 Audio Board does not have. Therefore we must put these line into a fixed state if we want to run the OPL2 Audio Board examples as to not 'confuse' the OPL3 Duo.

Hardware solution

The simplest way to do this is to connect both the A1 and A2 line to GND. No code changes are needed and you can use the two free Arduino pins for your project.

Software solution

You can also fix it in the software, but then you must keep A1 and A2 connected to the Arduino. In that case you add the following lines of code above OPL2.begin(); in the setup() function of the example:

setup () { pinMode(7, OUTPUT); pinMode(8, OUTPUT); digitalWrite(7, LOW); digitalWrite(8, LOW); opl2.begin();

This has the same effect as the hardware solution, but it keeps the way the OPL3 Duo is connected the same.

_________________________________________________________

라이브러리 예제를 건들이는 것과 개발보드쪽에 연결하는 핀을 건들이는 것입니다.

예제는 위의 아두이노IDE에서 설치한 아두이노OPL2 라이브러리 - OPL2오디오보드의 예제들 내용을 수정하는 것입니다.

1. OPL2오디오보드쪽 예제에 보면

_____________________________

OPL2 opl2; 가 있는데요

OPL2 opl2(9, 8, 10); 로 수정해줍니다.

_____________________________

2. OPL2오디오보드쪽 예제의 setup() 과 OPL2.begin(); 사이에

______________________________

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

digitalWrite(7, LOW);

digitalWrite(8, LOW);

______________________________

를 삽입해줍니다.

아래 처럼 ...

setup () {

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

digitalWrite(7, LOW);

digitalWrite(8, LOW);

opl2.begin();

두번째는 핀의 위치를 변경하는 겁니다.

1. /IC에 해당하는 핀을 D8번, A0에 해당하는 핀을 D9번에 연결해줍니다.

*아두이노/틴지쪽 D8과 D9번을 바꿔주면 됩니다.

2. A1와 A2 핀을 GND쪽에 연결해줍니다. D6과 D7로 가는 것을 GND에 연결해줍니다.

예제를 바꾸는 것이나 핀의 위치를 변경하는 것이나 효과는 같습니다.

OPL2예제를 업로드 가능하다는 것입니다.

장단이 있긴한데요

예제를 바꾸는 것은 한번 해두고 HEX를 찾아두면 간단하게 배치파일로 변경가능합니다.

하지만 달링톤님이 올려주신 예제(펌웨어)를 사용할 수 없습니다.

핀을 바꾸는 것은 변경할때마다 핀을 바꿔끼워야 합니다만

이 경우 달링톤님이 올려주신 예제(펌웨어)를 사용할 수 있습니다.

그리고 OPL2오디오보드용으로 변경할 경우 위의 usb칩셋별 호환성이슈들이 좀 완화됩니다.

아두이노나노나 듀에 모두 비아나 asm, 인텔가리지 않고 대체적으로 잘되고,

단 프린세스메이커2가 asm3232(1142 및 3142포함)에서만 초기 약간 버벅이는 것 없이 잘 되고 틴지도 경우 비아 usb에 인식이 되지 않는 점 빼고는 동일합니다.

그리고 아래 첨부한 파일은 시리얼패스스루를 HEX파일로 만들어 간단한게 변경하도록 만든 것입니다.

avrdude.exe 를 사용한 배치파일을 만들면 간단해지겠죠.(예시로 달링톤님이 제공해주신 배치파일이 있습니다.)

https://www.nongnu.org/avrdude/

 

AVRDUDE - AVR Downloader/UploaDEr

Command-line driven user interface for all downloading and uploading features (including handling fuse bytes), for easy automation e. g. by inclusion into Makefiles. Interactive examination and modification of various memory regions in so-called terminal m

www.nongnu.org

 

예제펌웨어.7z
0.28MB

 

첨부파일의

OPL2AudioBoard.hex 는 OPL3duo제작자의 OPL2오디오보드 용 시리얼패스스루용 예제

opl3duo.hex 는 OPL3duo용 시리얼패스스루용 예제

opl2to3board.hex 는 OPL3duo에 OPL2오디오보드용 예제를 씌우기 위해 수정한 예제입니다.

사용법은 달링톤님의 배치파일 내용을 살펴보시고 간단히 수정해 사용하시면 되겠습니다.

opl3duo.hex 를 올린다면

avrdude -C avrdude.conf -v -p atmega328p -c arduino -P COM%COM% -b 57600 -D -U flash:w:opl3duo.hex":i

이런식입니다. 여기서 57600은 개발보드의 통신속도인데 올드부트로더인경우 57600, 아닌경우 115200으로 수정해야 합니다. atmega328p는 아두이노나노인 경우 설정하시면 됩니다. 듀에나 틴지는 어떤 것으로 설정해야하는지 모르겠네요. 아두이노IDE가 익숙해지니 avrdude 를 안 쓰게 되버려서리...........

다른 예제의 HEX파일을 만들기 위해서는

Arduino IDE에서 예제부르기를 한 후 스케치-확인/컴파일 을 실행하면 임시폴더에 나타납니다.

이 임시폴더는 Arduino IDE 의 업로드과정(아래창)에 주루륵 나오는 메세지들을 살펴보면 정확히 알 수 있습니다.

예를 들어 제 컴에서는 C:\Users\이름\AppData\Local\Temp\arduino_build_66095 에 들어있었습니다.

HEX파일 중 bootloader가 붙은 것은 사용하시면 아두이노의 부트로더가 손상될 수 있으니 쓰지마세요.

아 마지막으로 잡음에 대한 테스트입니다.

스피커단자와 오디오인터페이스를 연결하고(인프라소닉 윈디6) 볼륨을 최대로 올린다음 녹음한 결과 입니다.

아래에서 Maximum sample value(dB)와 RMS level(dB) 가 있는데요

최대 혹은 실효치 잡음에 해당하는데 아래 내용에서는

최대치가 좌우 -61.682/-61.061

실효치 -75.349/-75.554

입니다. RMS는 긴 녹음의 경우 평균치료 계산하기 곤란하지만 짧은 경우 평균으로 봐도 되는데요.

평균적으로 -75정도의 잡음 최대 -61정도의 잡음을 가지고 있습니다.

-수치가 클수록 잡음이 적고 -수치가 적을수록 잡음이 많습니다.

이정도면 시끄러울 정도로 올리지 않는 한 잡음이 들리지 않는 수준입니다.

제 주관으로 시끄러울 정도 - 귀가 스트레스를 받을 정도 혹은 소리로 인해 신경의 예민해지는 정도가 되겠습니다.

위의 녹음물들이 모두 최대볼륨으로 스피커출력한 것을 녹음한 것이니 참고하세요.

 

 

 

 

글 읽어주셔서 감사합니다.

댓글