2015-01-02 3 views
1

jFugue를 사용하여 netBeans에서 알고리즘 음악을 만들고 C 주 스케일의 한 옥타브에서 음표를 사용하여 정수 배열을 만들려고합니다.jFugue에서 정수 변수/정수 배열 변수를 사용할 수 있습니까

String scaleNotesC[] = {"[60]", "[62]", "[64]", "[65]", "[67]", "[69]", "[71]", "[72]"}; 

C를 재생하려고 시도하기 위해 아래 코드를 실행할 때 아무 일도 일어나지 않습니다.

Player playerOne = new Player(); 
playerOne.play("scaleNotesC[0]"); 

정수 배열을 사용해 보았지만 작동하지 않았습니다.
jFugue에서 배열의 세트에서 임의의 노트를 재생할 수있는 방법이 있습니까?
편집 :
나는 시도하고 배열에서 여러 음을 연주하기 위해 위의 플레이어 코드를 변경하지만 첫 번째 예에서

playerOne.play(scaleNotesC[2] scaleNotesC[3] scaleNotesC[2]); 
+0

는 따옴표를 제거 :'playerOne.play (scaleNotesC [0]);' – BackSlash

+0

감사합니다! @BackSlash, 또한 시도하고 여러 노트 (위의 편집 내 예시)를 재생할 때 아직 작동하지 않는다면 작동합니다. – TheStuka

답변

1

,

playerOne.play("scaleNotesC[0]"); 

당신이 작동하지 않습니다 Java 표현식을 문자열로 전달하려고합니다. 그러나 문자열 자체는 Java 표현식으로 평가되지 않습니다. 대신 JFugue는 "scaleNotesC [0]"자체를 음악 문자열로 파싱하려고 시도합니다. 음악 문자열은 아니므로 음악을 듣지 않습니다. 따옴표를 제거하면 Java는 scaleNotesC [0]을 "[60]"으로 평가하고 JFugue는 "[60]"을 중간 C로 성공적으로 구문 분석하여 재생합니다.

현재 사용중인 JFugue 버전에는 문자열 목록을 매개 변수로 사용하는 play() 메소드가 없습니다 (차후 릴리스에는이 기능이 있음). 나는 제안 할 수 있음 :

Pattern pattern = new Pattern(); 
pattern.add(scaleNotesC[2], scaleNotesC[3], scaleNotesC[2]); 
Player playerOne = new Player(); 
playerOne.play(pattern); 
+0

JFugue v5.0 이상에 대한 업데이트 : 대괄호는 더 이상 사용되지 않습니다. 수치 노트의 경우, 다음과 같이 말할 수 있습니다 :'String scaleNotesC [] = { "60", "62", "64", "65", "67", "69", "71", "72"}; '(대괄호는 템플리트를 위해''[Adagio] ''와 같이 사전에 키가있는 문자열을 나타내는 데 사용됩니다) –

관련 문제