2011-11-03 2 views
1

나는 소리를 재생할 수 있습니다 :어떻게 소리의 음량을 천천히 내릴 수 있습니까?

channel.noteOff(noteNumber); 

channel.noteOff(noteNumber); 

하지만 소리가 멈추어야합니다. 2000ms를 재생 중이고 소리의 음량이 1000ms (1000ms 후에 음량이 0이됩니다)보다 낮아지고 사운드가 을 멈추게합니다.이 코드를 찾았습니다.

channel.noteOff(noteNumber, velocity); 

하지만 아무 것도하지 않습니다. volumedown effekt. 도와주세요! 감사

+1

"페이드 아웃"이라는 용어를 사용하는 것이 좋습니다. 조금 더 명확해질 것입니다. –

답변

-1

확인 the JavaDoc for that method. 효과는 사용 된 도구에 따라 달라질 수 있다고 명시되어 있습니다. 그래서 다른 악기를 가지고 실험하고 거기에서 일어나는 일을보고 싶어 할 것입니다.

어쨌든, 나는 setPolyPressure 방법이 더 많은 것을 찾을 수 있었다고 생각합니다. 그러나 부드러운 페이드 아웃을 구현하려면 감소하는 압력으로 메서드를 여러 번 호출해야합니다. 그건 Timer이나 다른 비동기 유틸리티를 사용해야 할 것입니다. 조금 어색한 것 같지만 Java MIDi 인터페이스 전체에서 직접 사용할 수있는 것은 없습니다.

+0

내가 볼 : "... 일반적으로 볼륨 등의 기능을 변경하는 데 사용됩니다 ...", 하지만 난 할 수 없어,이 코드를 작성 : channel.setPolyPressure (noteNumber, 100),하지만 아무것도 변경 : ( 나는 channel.noteon .. 코드 앞에 썼다. 그러나 그 후에는 작동하지 않는다. (how ????:( – victorio

+0

@victorio 나는 MIDI에 익숙하지 않지만 나는 놀 것이다. 오늘은 조금 뒤쳐져서 페이드가 진행되는지 확인해보십시오. 그동안 SSteve의 답변은 공식 MIDI 스펙 사이트에 제안 된 내용과 일치합니다. 그걸로 뭘 할 수 있는지보십시오. –

+0

폴리 애프터 터치 (압력)에 아무것도 없습니다. – Brad

0

노트 오프의 벨로 시티 사용은 패치가 노트 오프 벨로 시티에 응답하도록 프로그램 된 경우에만 효과가 있습니다. 나는 당신의 시스템이 얼마나 프로그래머블인지 잘 모르겠지만, 노트 오프 속도가 진폭 엔벨로프의 릴리스 타임에 영향을 미칠 수있다.

옵션이 아닌 경우 Volume (컨트롤러 7) 및 Expression (컨트롤러 11)을 사용해보십시오. 트레이드 오프는 해당 채널의 모든 음표에 영향을줍니다.

+0

예를 들어 주시겠습니까? – victorio

+0

저는 거의 10 년 동안 Java를 사용하지 않았기 때문에 사용할 구문을 모르지만 컨트롤러와 함께 컨트롤러 이벤트를 보냅니다. 7 또는 11이고 값은 0 (묵음)에서 1 27 (최대 볼륨). 해당 채널에서 재생되는 모든 음표에 영향을 미칩니다.원활한 변경을 원한다면 값이 감소하는 여러 명령을 보내도록 타이머를 설정해야합니다. – SSteve

1

두 가지 방법이 있습니다.

첫 번째 (권장) 방법은 환경을 조정하는 것입니다. release timeCC72으로 설정하십시오. 신디사이저를 사용하면이 파라미터를 조정하여 해당 음이 릴리즈 후 페이드 아웃되는 시간을 선택할 수 있습니다.

두 번째 방법은 CC7을 사용하여 간단히 채널의 볼륨을 낮추는 것입니다.

어떤 방법을 선택 하느냐는 필요에 따라 다릅니다.

관련 문제