사운드 VI
- 업데이트 날짜:2025-08-27
- 5분 (읽기 시간)
사운드 VI를 사용하여 사운드 파일과 함수를 사용자의 VI에 통합할 수 있습니다. 이 VI로 다음 태스크를 수행할 수 있습니다:
- 사용자의 특정 행동에 대하여 녹음된 경고음과 같은 사운드 파일을 재생하는 VI를 만듭니다.
- VI가 실행을 시작하거나 끝낼 때, 또는 VI의 특정 위치에 도달했을 때 사운드 파일을 재생하는 VI를 만듭니다.
- 사운드 데이터를 수집하기 위해 사운드 입력 디바이스를 설정합니다. 사운드 데이터를 수집하기 위해 사운드 입력 VI를 사용합니다. 또한 디바이스를 통해 들어오는 모든 사운드 정보를 읽을 수 있습니다.
- 다른 사운드 VI에서 사운드 데이터를 받도록 사운드 출력 디바이스를 설정합니다. 장치에 전달되는 사운드의 볼륨을 컨트롤하고, 사운드를 재생 또는 일시 정지하며, 시스템에서 사운드를 제거할 수 있습니다.
(Windows) 사운드 VI를 사용하려면 DirectX 8.0 또는 이후 버전이 설치되어 있어야 합니다. (Linux) 사운드 VI를 사용하려면 Open Sound System(OSS) 드라이버가 있어야 합니다.
사운드 출력 태스크
사운드 출력 VI를 사용하여 스피커나 헤드폰과 같은 출력 사운드 디바이스에서 사운드를 생성하고 컨트롤합니다. 간단한 작업의 경우, 웨이브폼 재생 익스프레스 VI를 사용하여 사운드 출력 디바이스에 사운드 데이터를 재생합니다.
보다 복잡한 작업의 경우, [사운드 출력 설정] VI를 사용하여 새 사운드 출력 태스크 ID를 생성하고 설정합니다. 태스크 ID를 생성한 후, [사운드 출력 시작] VI를 사용하여 사운드가 재생을 시작하는 때를 컨트롤하고, [사운드 출력 정지] VI를 사용하여 사운드를 정지하고, [사운드 출력 볼륨 설정] VI를 사용하여 사운드의 볼륨을 컨트롤하고, [사운드 출력 쓰기] VI를 사용하여 사운드를 사운드 디바이스에 보내고, [사운드 출력 정보] VI를 사용하여 태스크 ID에 대한 정보를 얻기 위해 사운드 디바이스를 쿼리합니다. [사운드 출력 지우기] VI를 사용하여 태스크 ID가 사용한 모든 리소스를 해제합니다.
사운드 입력 태스크
사운드 입력 VI를 사용하여 마이크와 같은 사운드 입력 디바이스에서 LabVIEW로 사운드 데이터를 수집합니다. 사운드 입력 디바이스로부터의 단순한 사운드 수집 작업은 사운드 수집 익스프레스 VI를 사용합니다. 보다 복잡한 작업의 경우, [사운드 입력 설정] VI를 사용하여 새 사운드 입력 태스크 ID를 생성하고 설정합니다.
태스크 ID를 생성한 후, [사운드 입력 시작] VI와 [사운드 입력 정지] VI를 사용하여 각각 사운드의 상태를 실행 또는 유휴로 변경할 수 있습니다. [사운드 입력 읽기] VI를 사용하여 사운드 입력 디바이스에서 데이터를 읽습니다. [사운드 입력 지우기] VI를 사용하여 태스크 ID가 사용한 모든 리소스를 해제합니다.
사운드 데이터
LabVIEW는 사운드 데이터를 웨이브폼의 배열로 저장합니다. 배열의 각 웨이브폼은 하나의 채널을 나타냅니다. 예를 들어, 두 웨이브폼으로 구성된 배열은 스테레오 또는 두 채널 데이터를 포함합니다. 각 채널이 동시에 재생되므로, 각 웨이브폼에서 dt와 t0 값이 Y 배열의 원소 개수와 일치하도록 합니다.
웨이브폼의 Y 배열은 Pulse Code Modulated (PCM) 데이터를 포함합니다. PCM 데이터에서, Y 배열의 각 원소는 신호의 진폭에 비례합니다. Y 배열 데이터 타입이 부호있는 16 비트 또는 부호있는 32 비트 정수일 경우, 값은 0을 중심으로 하여 데이터 타입에 대한 최소값과 최대값 사이의 범위입니다. 0의 값을 갖는 각 원소의 버퍼는 소리가 없는 상태를 나타냅니다. 배열 데이터 타입이 8비트 부호없는 정수이면, Y의 범위는 127을 중심으로 0에서 255입니다. 127의 값을 가진 각 원소의 버퍼는 0의 값을 갖는 각 원소의 버퍼가 아닌 소리가 없는 상태를 나타냅니다. 이로 인해 8 비트 부호없는 정수에서 처음에 클릭 소리가 들릴 수도 있습니다. 부동소수 데이터의 경우, 값은 -1.0에서 1.0의 범위(경계 포함)입니다. 데이터는 이 범위로 강제 변환됩니다. 스케일링은 없습니다.
태스크 ID
[사운드 출력 설정], [사운드 입력 설정], [사운드 재생] VI는 태스크 ID를 반환합니다. 이 ID는 현재 사운드 태스크를 참조하기 위해 VI가 생성한 숫자입니다. 블록다이어그램에서 이후의 사운드 VI는 태스크 ID를 사용하여 특정한 사운드 작업에서 데이터를 수정합니다. 생성한 VI를 다시 실행하기 전에 반드시 메모리에서 태스크 ID를 삭제해야 합니다. [사운드 출력 지우기] VI를 사용하여 사운드 출력 작업의 태스크 ID를 삭제합니다. [사운드 입력 지우기] VI를 사용하여 사운드 입력 작업의 태스크 ID를 삭제합니다.
사운드 디바이스
사운드 디바이스는 컴퓨터에 연결된 사운드 카드 또는 기타 하드웨어입니다. [사운드 출력 설정]과 [사운드 입력 설정], [사운드 파일 재생] VI의 디바이스 ID 입력값은 사용할 사운드 디바이스를 지정합니다. 컴퓨터의 기본 사운드 디바이스를 사용할 경우 디바이스 ID에 0을 입력합니다. 다른 디바이스를 사용하려면 1, 2, 3 등을 입력합니다.
사운드 버퍼
사운드 입력과 사운드 출력 작업은 LabVIEW와 사운드 디바이스 사이에 버퍼를 사용할 수 있기 때문에 사운드 데이터의 원활한 전송을 제공합니다. 사운드 데이터를 읽고, 쓰고, 설정하는 사운드 VI를 사용하여 사운드 버퍼를 조작합니다. 이러한 VI가 생성하는 태스크는 버퍼와 사운드 디바이스 사이에 사운드 데이터를 전송합니다. 태스크는 사용자가 태스크를 정지하거나 에러가 발생할 때까지 계속 실행됩니다.
입력 작업은 사운드 데이터를 입력 디바이스에서 버퍼로, 버퍼에서 블록다이어그램으로 전송합니다. [사운드 입력 읽기] VI를 사용하여 디바이스에서 데이터를 수집합니다. 버퍼에 요청된 모든 샘플을 읽을만한 충분한 데이터가 있는 경우, LabVIEW는 즉시 샘플을 읽습니다. 준비된 샘플보다 요청된 샘플이 많은 경우, VI는 요청이 완료될 때까지 실행을 일시 정지합니다.
출력 작업은 사운드 데이터를 블록다이어그램에서 버퍼로, 버퍼에서 출력 디바이스로 전송합니다. [사운드 출력 쓰기] VI를 사용하여 데이터를 사운드 출력 작업의 버퍼에 전송합니다. 버퍼에 충분한 공간이 있는 경우, LabVIEW는 데이터를 버퍼에 복사합니다. 버퍼에 충분한 공간이 없고 버퍼가 연속 모드로 설정되어 있는 경우, VI는 모든 데이터를 버퍼에 복사할 때까지 실행을 일시 정지합니다.
사운드 데이터 설정은 버퍼된 데이터의 포맷을 설정합니다. LabVIEW는 자동으로 LabVIEW 데이터의 포맷을 변환하여 버퍼 데이터 포맷에 맞춥니다. 예를 들어, 출력 태스크를 설정하여 스테레오 데이터를 사용하나 하나의 채널에만 데이터를 쓰는 경우, LabVIEW는 두 스테레오 채널 모두에 사용자가 쓰는 데이터를 보냅니다.
사운드 파일 재생하기
[사운드 파일 재생] VI와 While 루프를 사용하여 다음 블록다이어그램과 같이 연속적으로 사운드 파일을 재생합니다. [사운드 파일 재생] VI는 사운드 파일 경로 입력에 지정된 파일을 읽고 디바이스 ID 입력이 지정하는 사운드 디바이스를 통해 사운드를 재생합니다. VI는 태스크 ID를 반환하며 While 루프는 사운드 재생이 완료되거나, 에러가 발생하거나, 사용자가 프런트패널의 정지 버튼을 누를 때까지 연속적으로 태스크 ID를 전달합니다. [사운드 출력 지우기] VI는 컴퓨터 메모리에서 태스크 ID를 삭제합니다.
사운드 VI를 사용하여 파일의 비트 속도와 같은 사운드 재생 방법과 사운드가 재생되는 채널(모노, 스테레오 등)을 설정합니다. 또한 런타임에 파일을 일시 정지, 정지, 재생할 수 있습니다.
사운드 데이터 생성에 대한 예제는 labview\examples\Graphics and Sound\Sound 디렉토리에 있는 Sound File to Sound Output VI를 참조하십시오.
사운드 데이터 생성하고 재생하기
다음 블록다이어그램에서 보이는 것처럼, [웨이브폼 생성] VI와 [신호 시뮬레이션] 익스프레스 VI를 사용하여 사운드 데이터를 생성합니다. [신호 시뮬레이션] 익스프레스 VI는 사인파를 생성하며, [웨이브폼 재생] 익스프레스 VI는 디바이스 입력에서 지정한 사운드 디바이스를 통해 생성된 사운드 데이터를 재생합니다.
생성한 사운드 데이터를 더욱 정밀하게 컨트롤하려면 [사운드 출력] VI를 사용하십시오. 예를 들어, [사운드 출력 설정] VI를 사용하여 비트 속도, 샘플 속도, 사운드의 채널 개수를 컨트롤하고, [사운드 출력 볼륨 설정] VI를 사용하여 다음 블록다이어그램과 같이 사운드의 볼륨을 컨트롤합니다.
사운드 데이터 생성에 대한 예제는 labview\examples\Graphics and Sound\Sound 디렉토리에 있는 Generate Sound VI를 참조하십시오.
데이터를 사운드 파일에 쓰기
[단순한 사운드 파일 쓰기]와 [사운드 파일 쓰기] VI를 사용하여 수집하거나 생성한 데이터를 사운드 파일에 씁니다. 다음 블록다이어그램은 [단순한 사운드 파일 쓰기] VI를 사용하여 각각 50,000 샘플의 사인파 톤과 삼각파 톤으로 구성된 스테레오 사운드를 경로 입력에서 지정된 파일에 저장합니다.
사운드 파일의 생성을 더 세심하게 컨트롤하려면 [사운드 파일 쓰기] VI를 사용하십시오. [사운드 파일 쓰기] VI는 사용자가 [사운드 파일 열기] VI로 기존 사운드 파일의 참조를 열거나 새 사운드 파일을 생성하고 [사운드 파일 닫기] VI로 사운드 파일 참조를 닫을 것을 요구합니다. 사운드 파일을 닫지 않는 경우, 파일은 메모리에 남게되며 다른 어플리케이션이나 다른 사용자가 이에 접근할 수 없습니다.
사운드를 수집하고 사운드 파일에 저장하는 예제는 labview\examples\Graphics and Sound\Sound 디렉토리에 있는 Sound Input to File VI를 참조하십시오.