Q&A

  • 멀티미디어 부분입니다.
아직은 초보라고 생각하고 있습니다.
고수님들의 따뜻한 가르침을 기다리고 있겠습니다.

윈앰프 등의 프로그램을 사용해 보면 소리의 크기에 따라
막대그래프 같은 것이 오르락 내리락 하는것을 보게 되는데
델파이에서는 어떻게 구현하는지 알고 싶습니다.
마이크나 라인-인으로 들어오는 소리를 LEFT, RIGTH로
구분하여 시각적인 표현을 해 볼려고 하는데 도무지 갈피조차
못잡고 있습니다. 여러 고수님들께 부탁합니다. 아주 초보라
가능하면 설명을 풀어서 해 주길 간곡히 부탁합니다.
2  COMMENTS
  • Profile
    박상윤 2002.04.04 06:35
    쩜 복잡한 데...
    우선 오디오 포맷을 정확하게 이해를 하구계셔야 하구여...
    그리구 그것을 변환해서 뿌려야 하니까...
    오디오는
    가장 기본적인포맷이 Wave입니다.
    그럼 Wave를 이해하면..다른것두 자연스럽게 되겠지여.
    MSDN 원문입니다.

    DirectSound and DirectSoundCapture work with waveform audio data, which consists of digital samples of the sound at a fixed frequency. The particular format of a sound can be described by a WAVEFORMATEX structure. This structure is documented in the Multimedia Structures section of the Platform SDK documentation, but is briefly described here for convenience:

    typedef struct {
        WORD  wFormatTag;
        WORD  nChannels;
        DWORD nSamplesPerSec;
        DWORD nAvgBytesPerSec;
        WORD  nBlockAlign;
        WORD  wBitsPerSample;
        WORD  cbSize;
    } WAVEFORMATEX;

    The wFormatTag member contains a unique identifier assigned by Microsoft Corporation. A complete list can be found in the Mmreg.h header file. The only tag valid with DirectSound is WAVE_FORMAT_PCM. This tag indicates Pulse Code Modulation (PCM), an uncompressed format in which each sample represents the amplitude of the signal at the time of sampling. DirectSoundCapture can capture data in other formats by using the Audio Compression Manager.

    For information on using non-PCM data with DirectSound, see Compressed Wave Formats.

    The nChannels member describes the number of channels, usually either one (mono) or two (stereo). For stereo data, the samples are interleaved. The nSamplesPerSec member describes the sampling rate, or frequency, in hertz. Typical values are 11,025, 22,050, and 44,100.

    The wBitsPerSample member gives the size of each sample, generally 8 or 16 bits. The value in nBlockAlign is the number of bytes required for each complete sample, and for PCM formats is equal to (wBitsPerSample * nChannels / 8). The value in nAvgBytesPerSec is the product of nBlockAlign and nSamplesPerSec.

    Finally, cbSize gives the size of any extra fields required to describe a specialized wave format. This member is always zero for PCM formats.

    복잡하지여..
    기본적으로 체널은 모노는 1개 스테레노는 2개 3D는 3개 또는 그이상입니다.
    좌우로 나누시려면 스테레오가 되어야 겠지여..
    다음은 데이터를 크기를 알어서...데이터를 얻어 분리하는 것입니다.

    좌우를 분리하시려면 체널데이터를 나누어 받으셔야 하고...
    이를 FFT(페스트 퓨리에 트렌폼)으로 주파수 별로 분리 하셔서
    그래픽으로 나타 내셔야 합니다.

    아무래도 초보자이시라면..좀 힘들듯 합니다..
    제가 설명 드리는 것도 한계가 있구여...

    가장 빠른 방법은 믹서같은 컴포를 찾아보시는 것이구여..
    다음은 FFT컴포를 찾아서 데이터를 그래픽으로 나타내보는 거구여.

    아니면 FFT 소스두 많이 돌아 다니거든여....
    소스가지구 직접 해보기는 두 한방법일것 같네여..

    두서없이 적어서 죄송합니다.
    설명할께 넘많아서...

  • Profile
    소재영 2002.04.04 09:51
    감사합니다.
    제가 워낙 초보라서 사실 이해하기가 곤란합니다.
    그래서 부탁을 하나 하고자 합니다.
    믹스라고 하는것과 FFT 라고 하는 컴퍼넌터를 좀 주실 수 없나요?
    아니면 어디에서 찾을 수 있는지 알려주시면 안될까요?
    오늘 밤을 새워 찾아보기는 하겠지만 힘이 들어도 간곡히 부탁하겠습니다.
    감사합니다.