2016-07-19 1 views
-1
song = "choy_san_dou.ogg" 
pygame.init() 
pygame.display.set_mode((200,100)) 
pygame.mixer.init() 
pygame.mixer.music.load(song) 
pygame.mixer.music.set_volume(0.1) 
pygame.mixer.music.play(0) 

노래를 불러올 때 볼륨을 페이드 아웃하는 방법을 찾을 수 없다는 것은 노래의 음량이 처음부터 최대 음량에서 소리가 날 때까지 최대 음량까지 서서히 증가하도록하는 것을 의미합니다. 그것을하는 방법?파이썬 pygame 어떻게 볼륨을 페이드?

또 다른 문제는 이것이다, 나는

pygame.display.set_mode((200,100)) 

를 선언해야하거나 사운드가 재생되지 않습니다. 사운드가 지나간 후에 프로그램의 후속 단계가 계속 진행되므로 실제로 프로그램이 실행 중입니다. 왜 이렇게 될까요? 나는 나무 딸기 파이에 그것을 나중에 옮기기 의향으로 창 PC에 그것을, 시험하고있다.

+0

안녕하세요 @ LPK, 이것은 내가 원하는 것이 아니라 정확히 반대입니다. 페이드 인 – sam

+0

@ 샘 : 그것은 당신이 놀이 기능의 옵션을 사용할 수있는 것 같습니다. 당신은 이것을 찾고 있습니까 : http://gamedev.stackexchange.com/questions/62023/crossfade-between-two-music-tracks-in-pygame? –

+0

@ HoàngLong, 이건 내가 생각하는 것 같아.하지만 프로그래밍에 아주 익숙하기 때문에 거기에 주어진 예제를 이해하지 못한다. 설명하고 코드를 어떻게 보여줄까요? 클래스에서 정의해야하는 이유는 무엇입니까? – sam

답변

0

pygame.mixer 모듈에는 파일 이름을 입력으로 사용하여 파일 내용을 Sound 객체로 변환하는 Sound 클래스 (doc : http://www.pygame.org/docs/ref/mixer.html)가 있습니다. 사운드 객체에는 사운드가 페이드 인되는 시간을 지정할 수있는 play() 메서드가 있습니다. 사운드의 실제 길이보다 훨씬 짧게 만들려고합니다. 나는 당신이 pygame.mixer가 어떻게 동작하는지에 대한 요지를 얻기 위해 문서를 읽을 것을 제안한다. fade-in 또는 fade-out을 추가하는 것과 같이 Sound 객체를 변경하려면 Sound 객체를 numpy 배열로 변환 할 수있는 pygame.sndarray 모듈이 있으며 그 반대의 경우에도 numpy 나 scipy를 사용해야합니다. 그 배열로 물건을 만드는 것 (나는 무료 아나콘다 패키지를 추천한다).
음악과 믹서 모듈의 차이점은 음악 모듈이 재생할 데이터를 STREAMS하고 믹서 모듈이 주 메모리에 저장된 데이터를 처리한다는 것입니다.