JavaTM Platform
Standard Ed. 6

javax.sound.sampled
인터페이스 Clip

모든 슈퍼 인터페이스:
DataLine , Line


public interface Clip
extends DataLine

Clip 인터페이스는 특수한 종류의 데이터 라인을 나타내, 그 오디오 데이터는 리얼타임에 스트림화하는 것이 아니라, 재생전에 로드할 수 있습니다.

데이터는 프리로드 되고 길이가 인식되고 있기 (위해)때문에, 클립을 설정하면(자) 그 오디오 데이터내의 임의의 위치로부터 재생을 개시할 수 있습니다. 또, 루프를 작성해, 클립을 반복해 재생할 수도 있습니다. 루프를 설정하려면 , 재생하는 회수와 개시 및 종료 샘플 프레임을 지정합니다.

클립은 이 타입의 라인을 지원하는 Mixer 로부터 취득할 수 있습니다. 클립을 열면(자) 데이터가 클립에 로드 됩니다.

오디오 클립의 재생은,startstop 메소드를 사용해 개시 및 정지할 수 있습니다. 이러한 메소드는, 미디어의 위치를 리셋 하지 않습니다. 즉,start 메소드를 사용하면(자), 마지막에 정지한 위치로부터 재생이 재개됩니다. 클립의 오디오 데이터의 선두로부터 재생을 개시하려면 ,stop 를 호출한 다음에 setFramePosition(0)를 호출하는 것으로 미디어를 클립의 선두에 되감습니다.

도입된 버젼:
1.3

상자의 클래스의 개요
 
인터페이스 javax.sound.sampled. DataLine 로부터 상속된 상자의 클래스/인터페이스
DataLine.Info
 
필드의 개요
static int LOOP_CONTINUOUSLY
          루프는 특정 회수 반복해 실행된 다음에 종료하는 것이 아니라 무제한하게 계속하는 것을 나타내는 값
 
메소드의 개요
 int getFrameLength ()
          미디어의 길이를 샘플 프레임수로 가져옵니다.
 long getMicrosecondLength ()
          메디아듀레이션을 마이크로 세컨드 단위로 가져옵니다.
 void loop (int count)
          현재의 위치로부터 루프 재생을 개시합니다.
 void open (AudioFormat  format, byte[] data, int offset, int bufferSize)
          클립을 열어, 필요한 system resource를 획득해 조작 가능하게 되어 있는 것을 나타냅니다.
 void open (AudioInputStream  stream)
          지정한 오디오 입력 스트림내에 제시되고 있는 형식 및 오디오 데이터로 클립을 엽니다.
 void setFramePosition (int frames)
          미디어의 위치를 샘플 프레임수로 설정합니다.
 void setLoopPoints (int start, int end)
          루프내에서 재생되는 최초 및 마지막 샘플 프레임을 설정합니다.
 void setMicrosecondPosition (long microseconds)
          미디어 위치를 마이크로 세컨드 단위로 설정합니다.
 
인터페이스 javax.sound.sampled. DataLine 로부터 상속된 메소드
available , drain , flush , getBufferSize , getFormat , getFramePosition , getLevel , getLongFramePosition , getMicrosecondPosition , isActive , isRunning , start , stop
 
인터페이스 javax.sound.sampled. Line 로부터 상속된 메소드
addLineListener , close , getControl , getControls , getLineInfo , isControlSupported , isOpen , open , removeLineListener
 

필드의 상세

LOOP_CONTINUOUSLY

static final int LOOP_CONTINUOUSLY
루프는 특정 회수 반복해 실행된 다음에 종료하는 것이 아니라 무제한하게 계속하는 것을 나타내는 값

관련 항목:
loop(int) , 정수 필드치
메소드의 상세

open

void open(AudioFormat  format,
          byte[] data,
          int offset,
          int bufferSize)
          throws LineUnavailableException 
클립을 열어, 필요한 system resource를 획득해 조작 가능하게 되어 있는 것을 나타냅니다. 클립은, 지정된 형식과 오디오 데이터로 열립니다. 이 조작이 정상적으로 완료하면(자), 라인은 열려 있는 상태로서 마크 되어OPEN 이벤트가 라인의 청취자에게 발송 됩니다.

벌써 열려 있는 라인으로 이 메소드를 호출하는 것은 올바르지 않은 액션이기 (위해)때문에, IllegalStateException 가 표시되는 일이 있습니다.

라인에 따라서는, 한 번 닫으면(자) 재차 열 수가 없는 경우가 있습니다. 이러한 라인을 재차 열려고 하면(자), 항상 LineUnavailableException 가 throw 됩니다.

파라미터:
format - 지정된 오디오 데이터의 형식
data - 클립에 로드하는 오디오 데이터를 포함한 바이트 배열
offset - 배열의 처음부터바이트수로 나타내지는, 카피의 개시 지점
bufferSize - 배열로부터 클립에 로드하는 데이터의 바이트
예외:
LineUnavailableException - 자원의 제약을 위해서(때문에) 라인을 열지 않는 경우
IllegalArgumentException - 버퍼 사이즈가 샘플 frame size 배수가 아닌 경우, 혹은 format 의 지정이 불완전 또는 무효인 경우
IllegalStateException - 라인이 벌써 열려 있는 경우
SecurityException - 시큐리티의 제약을 위해서(때문에) 라인을 열지 않는 경우
관련 항목:
Line.close() , Line.isOpen() , LineListener

open

void open(AudioInputStream  stream)
          throws LineUnavailableException ,
                 IOException 
지정한 오디오 입력 스트림내에 제시되고 있는 형식 및 오디오 데이터로 클립을 엽니다. 클립을 열면(자), 필요한 system resource를 획득해 조작 가능한 상태가 된 것을 나타냅니다. 이 조작이 정상적으로 완료하면(자), 라인은 열려 있는 상태로서 마크 되어OPEN 이벤트가 라인의 청취자에게 발송 됩니다.

벌써 열려 있는 라인으로 이 메소드를 호출하는 것은 올바르지 않은 액션이기 (위해)때문에, IllegalStateException 가 표시되는 일이 있습니다.

라인에 따라서는, 한 번 닫으면(자) 재차 열 수가 없는 경우가 있습니다. 이러한 라인을 재차 열려고 하면(자), 항상 LineUnavailableException 가 throw 됩니다.

파라미터:
stream - 오디오 데이터가 클립에 읽히는 오디오 입력 스트림
예외:
LineUnavailableException - 자원의 제약을 위해서(때문에) 라인을 열지 않는 경우
IOException - 스트림의 read중에 입출력 예외가 발생했을 경우
IllegalArgumentException - 스트림의 오디오 형식의 지정이 불완전 또는 무효인 경우
IllegalStateException - 라인이 벌써 열려 있는 경우
SecurityException - 시큐리티의 제약을 위해서(때문에) 라인을 열지 않는 경우
관련 항목:
Line.close() , Line.isOpen() , LineListener

getFrameLength

int getFrameLength()
미디어의 길이를 샘플 프레임수로 가져옵니다.

반환값:
샘플 프레임수로 나타내지는 길이, 또는 라인이 열려 있지 않은 경우는 AudioSystem.NOT_SPECIFIED
관련 항목:
AudioSystem.NOT_SPECIFIED

getMicrosecondLength

long getMicrosecondLength()
메디아듀레이션을 마이크로 세컨드 단위로 가져옵니다.

반환값:
마이크로 세컨드 단위로 나타내지는 메디아듀레이션, 또는 라인이 열려 있지 않은 경우는 AudioSystem.NOT_SPECIFIED
관련 항목:
AudioSystem.NOT_SPECIFIED

setFramePosition

void setFramePosition(int frames)
미디어의 위치를 샘플 프레임수로 설정합니다. 위치는 제로로부터 시작됩니다. 즉, 최초의 프레임은 프레임 번호 제로가 됩니다. 클립이 다음번 재생을 개시하면(자), 이 정도치의 프레임으로부터 재생이 개시됩니다.

현재의 위치를 샘플 프레임수로 가져오려면 ,DataLinegetFramePosition 메소드를 사용합니다.

파라미터:
frames - 샘플 프레임수로 나타내지는, 필요한 신규 미디어 위치

setMicrosecondPosition

void setMicrosecondPosition(long microseconds)
미디어 위치를 마이크로 세컨드 단위로 설정합니다. 클립이 다음번 재생을 개시하면(자), 이 정도치로부터 재생이 개시됩니다. 정밀도의 레벨은 보증되지 않습니다. 예를 들어, 구현에서는, 현재의 프레임 위치 및 오디오 샘플 frame rate로부터 마이크로 세컨드 위치가 계산되는 경우가 있습니다. 마이크로 세컨드 단위의 정밀도는, 1 샘플 프레임 근처의 마이크로 세컨드수에 제한됩니다.

현재의 위치를 마이크로 세컨드 단위로 가져오려면 ,DataLinegetMicrosecondPosition 메소드를 사용합니다.

파라미터:
microseconds - 마이크로 세컨드수로 나타내지는, 필요한 신규 미디어 위치

setLoopPoints

void setLoopPoints(int start,
                   int end)
루프내에서 재생되는 최초 및 마지막 샘플 프레임을 설정합니다. 종점은 시점보다 큰가 또는 동일하게 할 필요가 있습니다. 또, 어느 쪽의 지점도 로드 된 미디어의 사이즈내에 들어가 있을 필요가 있습니다. 시점을 0 이라고 하는 값으로 하면(자), 로드 된 미디어의 선두를 나타냅니다. 같이 종점을 -1 의 값으로 하면(자), 미디어의 최종 프레임을 나타냅니다.

파라미터:
start - 루프의 개시 위치 (샘플 프레임수, 제로로부터 시작된다)
end - 루프의 최종 위치 (샘플 프레임수, 제로로부터 시작된다), 또는 최종 프레임을 나타내는 경우는 -1
예외:
IllegalArgumentException - 요구되었다 루프 지점을 설정할 수 없는 경우. 일반적으로은, 개시 및 최종의 양쪽 모두 또는 어느 쪽인지가 미디어의 듀레이션외에 있기 (위해)때문에, 혹은 최종 지점이 개시 포인트의 전에 어느 원인

loop

void loop(int count)
현재의 위치로부터 루프 재생을 개시합니다. 루프의 종점까지 재생하고 나서 루프의 시점에 count 회 돌아와, 그 후는 클립의 끝까지 재생합니다.

이 메소드를 호출했을 때에 현재의 위치가 루프의 최종 지점보다 커지는 경우는, 루프는 실행되지 않고, 클립의 끝까지 그대로 재생됩니다.

count 치를 0 으로 하면(자), 현재의 루프를 정지해 클립의 끝까지 재생을 계속하는 것을 나타냅니다. 루프의 조작중에 다른 값을 지정해 이 메소드를 호출했을 때의 동작은 정의되고 있지 않습니다.

루프중에 재생을 정지하면(자), 현재의 루프 모양태는 해제됩니다. 후속의 루프와 개시 요구의 동작은, 중단된 루프 조작에 의해 영향을 받지 않습니다.

파라미터:
count - 루프의 종점으로부터 루프의 시점까지 재생을 루프백 하는 회수, 또는 루프가 중단될 때까지 루프를 계속하는 것을 나타내는 경우는 LOOP_CONTINUOUSLY

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.