윈도 10에서 음향 출력이 외곡될 때

집에서는 주로 효과를 끄고사용하기때문에 문제없이 음악을 듣고있지만 회사 노트북에서 음악을 들으면서 뭔가 이상하다는 느낌을 받아서 확인해보니 역시나… 윈도의 사운드 효과 때문이였다.

해당 옵션을 확인하기 위해서는 작업표시줄의 트레이아이콘 영역의 스피커 아이콘에서 우클릭하여 재생 장치를 클릭하여 설정창을 연다.

재생 장치에서 기본장치로 설정된 장치를 더블클릭하거나 우클릭하여 속성을 클릭하여 속성창을 연다.

회사 노트북은 아래와같이 해당 설정 페이지가 한글로 표시되어있다. (이미 옵션을 꺼두었기때문에 모든 사운드 효과 사용 안함이 체크되어있다.)

하지만 집 컴퓨터는 아래와같이 영어로 되어있다.

둘 다 같은 기능을 하는 페이지이니 해당 페이지에서 모든 사운드 효과 사용 안함을 체크하고 확인이나 적용을하면 외곡되지않은 원음을 들을 수 있다. (리스트에서 체크되어있는것이 없음에도 외곡되는걸 보면 기본적으로 활성회되어있는 효과가 있는거같다.)

지금은 회사에서 포스팅하느라 광 출력도 외곡이 되는지 확인을 못하지만 귀찮으니 퇴근하더라도 확인은 패스한다(…).

윈도 7을 쓸 때 게임을 하다보면 여러 소리가 섞일 때(아마 peak수치까지 사운드가 올라갈 때 일듯하다.) 자동으로 gain이 내려가버리는 효과같은것이 있었는데 그 때 이것저것 건들다 이 옵션을 알게되었다. 저것을 끄고나서는 지금까지 이상한점 없이 문제없이 사용하고있는것같다.

일단 소프트웨어로 무언가 처리를 한다는것은 출력에 딜레이를 발생시키는것이니 리듬게임을 한다거나 매우매우 미묘하게 싱크가 안맞는다 싶으면 이런 소프트웨어 사운드 효과는 끄도록 해보자.

이상 끗.

덧. 그런데 왜 MS는 멀쩡한 하드웨어에다가 이상한 소프트웨어 처리를 끼얹고있는걸까? 외곡으로 느껴지지않게 자연스러운 음향효과가 들어가는건 좋은데 외곡으로 느껴질 정도로 음향효과를 주니 문제(…).

두근두근 문예부 맥에서 한글패치 적용하기

1.1.7버전 한패방법은 이쪽글 참고

Doki Doki! 활기찬 타이틀의 이 음성과는 뭔가 다른 반전들이 있는거같은데 이미 채널 섬네일과 인터넷 방송에서 도네 영상으로 중요한 몇몇 장면을 스포당한거같다 ㅠㅠ

그건 그거고 한국에서 맥 사용자 많지 않을거같지만 그냥 올려보는 잡다한 팁(?) 쉘 스크립트로 만들면 맥용으로도 배포할 수 있겠지만 그런건 한글패치 제작자에 대한 예의가 아닐테니 직접 수작업으로 패치하는 방법을 적어본다.

1. 먼저 최신버전의 한글패치를 받는다.
https://sites.google.com/view/dokidokikor/home

2. renpy 최신버전을 받는다.
https://www.renpy.org/latest.html
dmg파일로 받을필요 없이 tar.bz2 확장자 파일로 받는다. 그 후 다운로드 폴더에서 tar.bz2 파일을 더블클릭하여 압축을 풀어놓는다.

3. 게임 폴더를 연다.
– 한글 패치 다운 페이지를 참고하여 [로컬 컨텐츠 폴더]를 연다.
– 한글 패치의 파일 중 game 폴더 안의 파일 세개를 복사하여 [로컬 컨텐츠 폴더]의 game 폴더에서 덮어씌운다.

(모두 적용을 체크 후 대치를 클릭. game 폴더를 복사 후 병합을 하게되면 파일의 날짜가 대상폴더의 날짜보다 이전일 경우 덮어씌우지 않기때문에 이렇게 파일을 세개 선택하여 덮어씌우도록 한다.)
올바르게 복사되었다면 game폴더안의 fonts.rpa 파일의 크기가 2메가 미만에서 아래와같이 10메가가 넘는 파일로 변경된다.

– 한글 패치의 파일 중 renpy폴더를 [로컬 컨텐츠 폴더]에 붙여넣어 대치한다.

– [로컬 컨텐츠 폴더]에서 DDLC 패키지 폴더를 연다.

– 패키지 폴더에서 Contents – MacOS – lib – Darwin-x86_64 – Lib 폴더를 연다. 그럼 아래와같은 파일이 보인다.

– renpy 홈페이지에서 받은 sdk폴더에서 lib – darwin-x86_64 – lib – python2.7 폴더를 열면 아래와같은 파일이 보인다.

– 마지막으로 열어놓은 sdk의 python2.7폴더의 renpy폴더를 DDLC 패키지 폴더의 Lib폴더에 붙여넣어 기존 파일들을 대치한다.

4. 실행한다.

완료.

나중에 버전업데이트가 되어서 안되는 때가 있을지도 모르지만… 그럴리 없으려나? 암튼 이쯤에서 끝!

덧. 1차 플레이 후기(?)
엔딩 크레딧까지 봤는데 크레딧에서 나오는 CG의 절반정도밖에 못봤다. 첨부터 다시 해봐야겠다(…). 참고로 고어틱한거 싫어하는 사람은 플레이 전에 한번 상기하고 해보길. (어차피 지금 시점에 트위치 시청자라면 중요한거 다 스포 당했으려나?)

오늘의 네시간짜리 QtMultmedia QAudioInput 뻘짓.

format은 아래와같이

QAudioFormat formatAudio;
formatAudio.setSampleRate(44100);
formatAudio.setChannelCount(2);
formatAudio.setSampleSize(24);
formatAudio.setCodec("audio/pcm");
formatAudio.setByteOrder(QAudioFormat::LittleEndian);
formatAudio.setSampleType(QAudioFormat::SignedInt);

audio device info는 아래와같이

QAudioDeviceInfo getAudioDevice(const QString &name)
{
  foreach(const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioInput))
  {
    if(deviceInfo.deviceName() == name)
    {
      return deviceInfo;
    }
  }
  return QAudioDeviceInfo();
}

audioDevice = getAudioDevice(“hw:CARD=G5,DEV=0”);

그 후 start하면 iodevice에 어떠한 데이터가 수신되지 않는다. 결론은 이유가 Qt는 24비트 셈플은 S24_LE로 초기화 하기때문이였다.

쉘에서 아래처럼 정보를 확인해보면 지원하는 포맷은 S24_3LE(…)

$ cat /proc/asound/card2/stream0
Creative Technology Ltd Sound BlasterX G5 at usb-3f980000.usb-1.3.1, high speed : USB Audio

Playback:
  Status: Stop
  Interface 1
    Altset 1
    Format: S24_3LE
    Channels: 2
    Endpoint: 1 OUT (ASYNC)
    Rates: 44100, 48000, 88200, 96000
    Data packet interval: 500 us

Capture:
  Status: Stop
  Interface 2
    Altset 1
    Format: S24_3LE
    Channels: 2
    Endpoint: 2 IN (ASYNC)
    Rates: 44100, 48000, 88200, 96000
    Data packet interval: 500 us

좀 더 깔끔하게 코딩하기위해 Qt의 Multmedia를 사용하려했지만 결국 alsa api를 써야할거같다. 아… 왜 저런 차이를 생각하지 못하고 네시간을 삽질했을까… PulseAudio를 활성화 시키면 리셈플링 되어 처리가 가능할거같은데 lite 이미지에서 PulseAudio를 활성화 하는 방법이 구글링되지않아 그건 포기해야겠다.

TV 리모컨으로 USB DAC 볼륨조절

TV의 광 출력 -> USB DAC -> 스피커로 구성 된 환경.
TV가 광으로 소리를 출력할 경우 자체 볼륨조절이 안된다. (PCM출력일 경우 조절 되어서 출력되면 좋을텐데…)

몇번 헛돈을 쓴 끝에 SoundBlasterX G5가 광 입력을 USB 인터페이스와 관계없이 아날로그 출력이 가능하다는것을 알게되어 라즈베리 파이에 IR 수신기를 연결하고 리모컨으로 광 출력의 볼륨을 조절. 단점이있다면 전력 부족인지 정식적으로 리눅스에서 제품이 보장되지 않아서인지 DAC의 초기화가 잘 안된다. USB를 여러번 뽑고 꼽아봐야 인식된다. 라즈베리 파이를 재부팅시키면 USB 전원이 끊어졌다 연결되는데 이 때 인식이 안될경우 약 1분정도 뽑고 다시 꼽으면 대체로 인식되는 듯 하다. (내부 전원이 완전 방전되지 않아서 그런가?) 즉 왠만하면 리즈베리 파이는 끄지 말아야한다(…). 이 부분은 나중에 윈도 10 환경의 라떼판다 제품으로 때워 볼 예정.

일단 이정도로 해놓고 천천히 UI를 제외한 소스코드를 정리해서 올려봐야겠다.

덧.
볼륨조절을 노브(knob)로 돌려서 해야하는 제품은 스피커 볼륨 조절기로 조절하는것과 다를바 없으므로 의미가 없고, 그런 DAC가 아닐경우 보통 USB 인터페이스에서 OS로 신호를 받고 다시 DAC로 전송하는데 이 때 딜레이가 발생한다. 특히 리듬게임을 하면 정확도가 차이날 정도로 딜레이 발생.

덤으로 몇달이나 제품을 찾아봤지만 이 제품만큼의 가격으로 믿을만한 음질에 이런 구성이 가능한 하드웨어를 찾지 못했다. 스피커와 궁합이 꽤나 맞는건지 아날로그 출력도 상당히 만족 중.