자바 사운드 예제

Clip의 볼륨 수준 및 활동 상태(활성 및 비활성 상태)는 DataLine 메서드 getLevel 및 isActive를 각각 호출하여 모니터링할 수 있습니다. 활성 클립은 현재 사운드를 재생하는 클립입니다. 완전성을 위해, 여기에 내 응용 프로그램을 구축 할 때 내가 만드는 항아리 파일에서 자원으로 파일을 읽고 사운드 파일을 재생 내 현재 자바 응용 프로그램에서 실제 방법입니다 : 당신이 그 자바 코드에서 볼 수 있듯이, 나는 이리저리 사운드 파일을 검색 한 후 m 내 항아리 파일, 사운드 파일을 재생하는 과정은 내 이전 예제에서와 마찬가지로이 코드에서 동일합니다. 그 동안, 여기에 내가이 짧은 여행에서 발견 한 몇 가지 훌륭한 자바 사운드 파일 링크입니다 : 내가 언급 한 바와 같이, 난 그냥 자바 사운드 / 오디오 API 기능에 대해 배우고 있어요,하지만 이러한 클래스는 sun.audio 패키지에서 온 것이 재미 있어요 (대신의 java.sound 패키지와 같은 것을 제공합니다. 나는 더 많은 자바 사운드 예제를 찾기 위해 노력했고, 위에서 사용한 클래스에 대한 Javadoc을 사용하면이 두 클래스를 사용하는 동안이 클래스보다 전원이있을 수있는 javax.sound 패키지가 있음을 알 수 있습니다. 너무 많은 배울 … 내 자바 사운드 / 오디오 예 : 나는 시간의 특정 기간 (징의 소리) 후 사운드를 재생하는 간단한 «명상»응용 프로그램에서 작업하고, 그래서 나는이 같은 자바 응용 프로그램에서 사운드 파일을 재생하는 방법을 보여줍니다 여기에 몇 가지 소스 코드를 공유 할 것이라고 생각 . SourceDataLine이 열리면 사운드 재생을 시작할 수 있습니다. DataLine의 시작 메서드를 호출 한 다음 줄의 재생 버퍼에 반복적으로 데이터를 작성 하 여이 작업을 수행 합니다. 클립은 javax.sound.sampled 패키지에서 사용할 수 있으며 Java7에서 도입된 자바 인터페이스입니다. 다음 단계는 클립 오브젝트를 재생하기 위해 따라야 합니다. 이 그래프는 수직 축의 음압(진폭)과 수평 축의 시간을 플로팅합니다. 아날로그 음파의 진폭은 일정 속도로 주기적으로 측정되어 디지털 오디오 신호를 구성하는 이산 샘플(도면의 빨간색 데이터 포인트)이 생성됩니다.

중심 수평선은 진폭이 0을 나타냅니다. 선 위의 점은 양수 값 샘플이고 아래 점은 음수입니다. 아날로그 신호의 디지털 근사치의 정확도는 시간의 해상도(샘플링 속도) 및 양자화 또는 진폭의 해상도(각 샘플을 나타내는 데 사용되는 비트 수)에 따라 달라집니다. 참고로 컴팩트 디스크에 저장하기 위해 녹음된 오디오는 초당 44,100회 샘플링되며 샘플당 16비트로 표시됩니다. 이 경우 내가 재생하려고하는 사운드 파일은 «au»파일이지만,이 같은 기술은 대부분의 다른 사운드 파일 유형에서도 작동한다고 생각합니다. 줄이 열리거나 닫히거나 시작하거나 중지될 때마다 모든 수신기에 업데이트 메시지를 보냅니다. 개체는 수신하는 LineEvent를 쿼리할 수 있습니다. 먼저 LineEvent.getLine을 호출하여 중지된 줄이 관심 있는 줄인지 확인할 수 있습니다. 여기서 논의하는 경우 소리가 완료되었는지 알고 싶으므로 LineEvent가 STOP 형식인지 여부를 확인합니다. 이 경우 LineEvent 개체에 저장되는 사운드의 현재 위치를 확인하고 사운드 길이(알려진 경우)와 비교하여 사운드가 끝에 도달하고 다른 수단(예: 사용자의 중지 단추 클릭)에 의해 중지되지 않았는지 확인할 수 있습니다. 코드의 다른 곳에서 그 원인을 확인할 수 있을 것입니다.