목차

이전 항목

조건문

다음 항목

동영상

링크


원문 보러 가기
오역 신고하기
Created using Sphinx.

오디오

렌파이에서는 아래의 오디오 파일 형식을 사용하는 음악이나 표과음을 백그라운드에서 재생할 수 있습니다.

  • OGG Vorbis
  • MP3
  • WAV (비압축 PCM 전용)

또한 수 많은 오디오 채널도 지원합니다. 기본적으로 세 가지 채널이 정의되어 있습니다.:

  • music - 음악을 재생할 채널.
  • sound - 효과음을 재생할 채널.
  • voice - 음성 채널.

새 채널은 renpy.music.register_channel() 함수로 등록할 수 있습니다.

인게임 환경설정 메뉴에 있는 '배경음 크기 ', '효과음 크기', '음성 크기' 설정은 이 세 가지 채널의 소리 크기를 따로 설정하기 위해 사용됩니다.

버튼, 선택지, 이미지맵에 접근할 때에 효과음이 재생되도록 설정할 수도 있습니다. 자세한 내용은 Button Style Properties 를 참고하세요. config.main_menu_musicconfig.game_menu_music 설정 변수로 메인 메뉴와 게임 메뉴에서 재생시킬 음악 파일을 지정할 수도 있습니다.

렌파이 게임 내에서 음악이나 효과음을 재생하는 방법은 음악/효과음과 연관 있는 세 가지 명령문을 사용하는 것입니다.

play문

play문은 효과음과 음악을 재생합니다. 어떤 소리 파일이 현재 재생 중이라면 재생을 중단시키고 새 파일을 재생합니다.

play 키워드 다음에는 채널 이름을 입력해야 합니다. (보통 채널 이름은 "sound", "music" 또는 "voice" 가운데 하나입니다.) 이 다음에는 소리 파일 이름 하나 혹은 파일 이름을 리스트 형태로 적어야 합니다. 리스트를 입력하면, 리스트에 적힌 순서대로 파일이 재생됩니다.

fadeinfadeout 절을 입력하는 것은 선택입니다. fadeout 절에는 현재 재생하는 음악의 크기가 서서히 줄어들어 종료할 때까지 소모되는 시간을 초 단위로 입력해야 하며 fadein 절에는 새로운 음악이 서서히 음량을 키워가며 재생되기까지 소모되는 시간을 입력해야 합니다. fadeout 절을 입력하지 않으면 config.fade_music 의 값을 사용합니다.

loopnoloop 절 입력도 선택입니다. loop 절은 음악을 반복 재생시키고 noloop 절은 음악을 한 번만 재생시킵니다. 두 절 모두 입력하지 않았다면 반복 여부는 해당 채널의 기본값에 따라 결정됩니다.:

play music "mozart.ogg"
play sound "woof.mp3"
play myChannel "punch.wav" # 'myChannel' 채널은 renpy.music.register_channel() 로 정의해야 합니다.

"효과음의 리스트나 음악을 재생할 수도 있어."
play music [ "a.ogg", "b.ogg" ] fadeout 1.0 fadein 1.0

stop문

stop 명령문은 stop 키워드로 시작하며 그 다음에는 소리 재생을 중단시킬 채널 이름을 적어야 합니다. fadeout 절을 추가로 입력할 수 있습니다.

stop sound
stop music fadeout 1.0

queue문

queue문은 소리 파일을 대기열에 추가할 때 사용합니다. 지정한 채널에서 재생 중인 파일이 재생을 종료한 다음에 재생되도록 합니다.

queue문은 queue 키워드로 시작하며 그 다음에는 음악을 재생할 채널 이름을 적어야 합니다. 추가로 loopnoloop 절을 받습니다.

queue sound "woof.ogg"
queue music [ "a.ogg", "b.ogg" ]

이 명령문을 사용해서 얻을 수 있는 이점은 프로젝트에 없는 효과음 파일과 음악 파일을 오류 검사를 할 때 검색한다는 점입니다. 아래 항목에 적힌 함수들로는 파이썬으로 음악과 효과음에 접근할 수 있으며 (자주 사용하지 않는) 상급 기능들을 활용할 수 있습니다.

함수

renpy.seen_audio(filename)

지정한 파일이 현재 사용자의 시스템에서 한 번이라도 재생된 적이 있다면 True를 반환한다.

renpy.music.get_playing(channel='music')

지정한 채널에서 재생 중인 음악 파일이 있다면 해당 파일 이름을 반환한다. 그 외에는 None을 반환한다.

renpy.music.is_playing(channel='music')

지정한 채널에서 현재 음악을 재생하고 있다면 True를 반환하며, 사운드 시스템이 작동하지 않거나 음악 재생 중이 아니라면 False를 반환한다.

renpy.music.play(filenames, channel='music', loop=None, fadeout=None, synchro_start=False, fadein=0, tight=None, if_changed=False)

지정한 채널에서 재생 중인 파일을 중지시키고, 대기열에 있는 모든 음악을 대기 해제한 다음에, 지정한 파일(들)을 재생시킨다.

filenames
재생할 파일 이름 하나, 혹은 파일의 리스트.
channel
음악을 재생할 채널.
loop
True이라면 대기열에 남은 마지막 음악인 경우에 반복 재생한다.
fadeout
None이라면 페이드아웃 할 초 단위 시간이다. 그 외에는 페이드 아웃 시간을 config.fade_music 에서 받는다.
synchro_start
synchro_start 값이 참인 모든 채널이 동시에 재생될 수 있도록 한다. synchro_start 는 둘 이상의 소리 파일이 동시에 재생되어야 할 때 참값으로 설정해야 한다.
fadein
첫 번째 반복 재생할 때에만 적용되는 페이드인이 진행될 초 단위 시간이다.
tight
True라면, 대기열에 추가된 음악들이 사이에 페이드 아웃이 적용된다.
if_changed
이 값이 참이고 음악파일이 현재 재생중이라면 중지되거나 페이드아웃되지 않고, 계속 재생될 것이다. (음악을 반복재생하기 위해 계속 대기열에 추가할 것이다.)
renpy.music.queue(filenames, channel='music', loop=None, clear_queue=True, fadein=0, tight=None)

지정한 채널에 지정한 파일들을 대기열에 추가시킨다.

filenames
재생할 파일 이름 하나 또는 파일 이름의 리스트.
channel
음악을 재생할 채널.
loop
True이라면 대기열에 남은 마지막 음악인 경우에 반복 재생한다.
clear_queue
True면 대기열을 초기화하고, 현재 재생 중인 파일이 재생을 종료할 때 이 함수로 추가시킬 파일들이 재생하도록 한다. False면 이 함수로 추가시킬 파일들은 대기열 끝에 추가된다. True든 False이든 현재 재생 중인 파일이 없다면 이 파일들을 즉시 재생시킨다.
fadein
첫 번째 반복 재생할 때에만 적용되는 페이드인이 진행될 초 단위 시간이다.
tight
True라면, 대기열에 추가된 음악들이 사이에 페이드 아웃이 적용된다.
renpy.music.register_channel(name, mixer=None, loop=None, stop_on_mute=True, tight=False, file_prefix='', file_suffix='', buffer_queue=True)

name 이라는 이름으로 새로운 소리 채널을 등록한다. play 또는 queue 명령문에 채널 이름을 적으면 소리를 해당 채널에서 재생시킬 수 있다.

mixer
해당 채널이 사용할 음량 조절기의 이름. 기본적으로 렌파이에는 "music", "sfx", "voice"가 존재한다. 다른 이름을 사용할 수도 있으나, 환경설정 스크린을 변경해야 할 수도 있다.
loop
True라면 이 채널에서 재생되는 소리가 기본적으로 반복재생된다.
stop_on_mute
참이면 채널이 음소거되었을 때 이 채널에서 재생되는 음악은 중지된다.
tight
True면 페이드아웃이 진행되는 동안에도 효과음이 반복 재생된다. 효과음이나 음악이 끊임없이 재생되어야 하는 채널이라면 True, 음악 파일 자체가 페이드 아웃한다면 False 이어야 한다.
file_prefix
이 채널에서 재생될 소리 파일의 이름 앞에 붙는 접두사.
file_suffix
이 채널에서 재생될 소리 파일의 이름 뒤에 붙는 접미사.
buffer_queue
대기열에 추가된 첫 번째~두 번째 파일을 재생할 때 버퍼를 추가해야 할 필요가 있는가? 효과음 채널이라면 True, 영상 재생용이라면 False로 설정해야 한다.
renpy.music.set_pan(pan, delay, channel='music')

지정한 채널에서 소리가 재생되는 위치를 이동시킨다.

pan
소리의 위치를 제어하는 -1 과 1 사이의 정수. 이 값이 -1이면 이 채널에서 재생되는 모든 소리는 왼쪽에서만 들린다. 이 값이 0이면 두 채널이 동일한 음량으로 재생된다. 이 값이 1이면 모든 소리는 오른쪽에서만 들린다.
delay
소리가 재생되는 위치를 이동시킬 때 소요되는 시간.
channel
소리 재생 위치를 변경할 채널. 효과음 또는 음악 채널일 수 있다. 대개 이 채널은 기본 음악 채널인 7번 채널이다.
renpy.music.set_queue_empty_callback(callback, channel='music')

대기열이 비었을 때 호출될 콜백을 설정한다. 이 콜백은 대기열이 비었을 때 처음으로 호출되어, 대기열이 비어있는 동안에는 인터렉션마다 호출된다.

콜백은 아무런 매개변수 없이 호출된다. renpy.music.queue 에 적당한 인수를 적어 호출하면 재생할 소리 파일을 대기열에 추가할 수 있다. 대기열이 비어있기만 하다면 소리가 재생되고 있다 하더라도 콜백이 호출될 수 있다는 점을 기억해야 한다.

renpy.music.set_volume(volume, delay=0, channel='music')

지정한 채널의 음량을 설정한다. 해당 채널에서 음량을 제어할 때 사용하는 음량 조절기의 값을 비율로서 음량을 지정한다.

volume
0.0에서 1.0 사이의 값이며 지정한 채널에서 사용하는 음량 조절기의 값으로 해석된다.
delay
이전 값에서 변경한 값으로 음량 크기를 변경할 때 소요되는 초단위 시간을 값으로 받는다. 이 값은 세이브 파일에 저장되며 롤백 과정에 참여한다.
channel
음량을 설정할 채널.
renpy.music.stop(channel='music', fadeout=None)

재생 중인 음악을 종료하고 대기열에 추가된 모든 음악을 대기열에서 제거한다. fadeout 이 None이라면 음악을 페이드할 때 소요될 시간은 config.fade_music 에 설정된 시간을 따르며, 그 외에는 fadeout에 지정한 시간만큼 페이드아웃한다.

이 함수는 마지막으로 대기열에 추가된 파일을 None으로 설정한다.

channel
소리 재생을 중단할 채널.
fadeout
None이 아니라면 페이드아웃하기까지 소요되는 초단위 시간이다. 그 외에는 config.fade_music 에서 페이드아웃 시간 값을 받는다.

sound 함수

renpy.music 함수로 사용할 수 있는 기능 대부분은 renpy.sound 함수에서도 사용할 수 있습니다. 차이점으로는 renpy.sound가 music 채널이 아닌 sound 채널을 기본적으로 사용하고, 소리 파일을 반복 재생하지 않는다는 점이 있습니다.