오늘의 네시간짜리 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로 전송하는데 이 때 딜레이가 발생한다. 특히 리듬게임을 하면 정확도가 차이날 정도로 딜레이 발생.

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

parted 사용 정리

사용할 때 마다 구글링하게되어 남기는 단순 메모목적 글.

– 파티션 테이블 초기화
mklabel [msdos | gpt | etc…]

– 파티션 생성
mkpart [primary | logical | extended] [btrfs | ext2~4 | fat32 | fat16 | etc…] start end
시작이 0이면 정렬되지 않은 파티션이라는 경고가 나온다.
2048s 이런식으로 s를 붙여서 윈도와 호환을 위한 정렬 된 파티션 생성 가능.
메뉴얼에서는 단위를 MiB로 지정하는데 이유는 몰라도 MiB로 지정하면 4K 섹터 정렬이 되는가보다(…)
ex)
mkpart p fat16 2048s 32MiB
mkpart p ext4 32MiB 512MiB
mkpart p ext4 512MiB -1s
위와같이 생성하면 경고 없이 잘 만들어졌다.

– 부팅가능 플레그 지정
set 1 boot on

– 결과
Disk /home/iruis/RPiCM3.img: 839MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 1049kB 33.6MB 32.5MB primary boot, lba
2 33.6MB 537MB 503MB primary
3 537MB 839MB 302MB primary

좀 더 알아보고 싶지만 귀찮다. 그냥 이쯤에서 끝.

나무커머스 일본 선불유심 사용후기

사용해보고 확인된 유심은 두종류.

직접 써본건 5일 1기가.

가족단위로 일본에 가게되어 여분을 둘 겸 네개 구입하였다. 받아보니 유효기간이 2018년 10월 31일이라 여유롭게 내년에 가볼일이 있으니 쓰게될듯.

아이폰에서도 갤럭시에서도 꼽자마자 잘 인식되었다. 아이폰은 처음엔 3G였다가 LTE로 5~10분정도 지나면 바뀌게된다. 2년정도 전 안드로이드는 3G로만 되다가 데이터 로밍을 끄고 다시 키니까 LTE로 인식이 되었다. 이 유심은 번호가 할당되지않고 데이터 통신만 된다. (장기간 사용자용 유심이 아니면 데이터만 된다고 보면 된다.) 상품 페이지에도 기술되어있지만 데이터 소진 후 256kbps속도로 통신이 된다.

 

이주 전 친구가 써본 7일 4기가.

이건 꼽자마자 개통되지않고 몇분 지나고나서 데이터 사용이 가능했다고한다. 이건 전화번호가 할당되지만 역시나 데이터 통신만되는 유심. 위 5일짜리 유심은 비행기에서 바로 한국 유심으로 교체하여 잘 모르겠지만 이 유심은 한국에서도 데이터통신이 된다. 아래처럼 SKT로 잡히고 무려 4G로 표시된다. 하지만 데이터만 되니까 그리 이득이라고 하기가 힘들다는게 함정. 이건 소진후 128kbps로 속도 제한이 걸린다. (8bps는 초당 1바이트. 128kbps는 초당 16KB, 256kbps로 속도 제한일경우 모바일 페이지가 하나 열리는데 3~6초 정도가 보통 걸리지 않을까 생각된다.) Continue reading 나무커머스 일본 선불유심 사용후기