오디오

Ren'Py는 다음 오디오 파일 형식으로 배경 음악과 효과음을 재생할 수 있습니다.

  • Opus

  • Ogg Vorbis

  • MP3

  • MP2

  • FLAC

  • WAV (압축하지 않은 16비트 부호 있는 PCM만 지원)

웹 브라우저에서 Ren'Py는 오디오 형식 목록을 확인하고, 브라우저가 목록의 모든 형식을 지원하면 더 빠르고 소리가 끊길 가능성이 적은 모드를 사용합니다. 게임에서 mp3만 사용하며 Safari에서 소리가 끊긴다면 config.webaudio_required_types 변경을 고려하세요.

Ren'Py는 원하는 수만큼 오디오 채널을 지원합니다. 기본적으로 일반 채널 두 개가 정의되어 있습니다.

  • music - 음악 재생용 채널입니다.

  • sound - 효과음용 채널입니다.

일반 채널은 오디오 재생과 재생 대기열을 지원하지만 한 번에 오디오 파일 하나만 재생합니다. renpy.music.register_channel()로 새 일반 채널을 등록할 수 있습니다.

게임 내 환경설정 메뉴의 음악 음량(Music Volume), 효과음 음량(Sound Volume), 음성 음량(Voice Volume) 설정으로 이 채널들의 음량을 각각 조절합니다. 자세한 내용은 음량을 참조하세요.

일반 채널 외에 특수 채널 두 개도 있습니다.

  • audio - 여러 오디오 파일을 동시에 재생할 수 있는 채널이지만,

    재생 대기열이나 재생 중지는 지원하지 않습니다.

  • voice - Ren'Py의 음성 시스템이 사용하는 채널입니다. Ren'Py가 캐릭터의 대사에 맞추어 음성 파일을 자동으로 재생하고 중지하며, 이 채널의 음량을 조절할 수도 있습니다.

버튼, 메뉴 선택지, 이미지맵이 호버 상태나 활성화 상태가 될 때 소리를 재생하도록 설정할 수도 있습니다. 버튼 스타일 속성을 참조하세요. config.main_menu_music와 config.game_menu_music 설정 변수는 지정한 음악 파일을 각각 메인 메뉴와 게임 메뉴의 음악으로 재생하게 합니다.

Ren'Py 게임 안에서는 일반적으로 세 가지 음악/효과음 문으로 음악과 소리를 재생합니다. 오디오 파일은 문자열로 직접 지정하거나 audio 네임스페이스에 정의한 이름으로 지정할 수 있습니다.

오디오 디렉터리와 네임스페이스

Ren'Py는 오디오 문이나 함수에서 사용하는 파일을 먼저 game 디렉터리에서 찾습니다. 없으면 game/audio 디렉터리에서도 찾습니다. 예를 들어:

play music "opening.ogg"

먼저 game/opening.ogg를 찾습니다. 없으면 game/audio/opening.ogg를 찾습니다. 더 깊은 하위 디렉터리의 오디오 파일도 같은 방식으로 처리합니다. 다음 문은:

play music "my_music/opening.ogg"

먼저 game/my_music/opening.ogg를 찾고, 없으면 game/audio/my_music/opening.ogg를 찾습니다.

Ren'Py는 game/audio 디렉터리와 그 하위 디렉터리에서 지원하는 확장자(현재 .wav, .mp2, .mp3, .ogg, .opus)로 끝나는 파일을 audio 네임스페이스에도 자동으로 추가합니다. 따라서 game/audio/Town_theme.ogg를 다음과 같이 재생할 수 있습니다.

play music town_theme

사용할 이름은 확장자를 제거하고 나머지 파일명을 소문자로 바꾸어 정합니다. Python 변수로 표현할 수 있는 이름의 오디오 파일만 해당합니다. 예를 들어 my song.mp3, 8track.opus, this-is-a-song.ogg는 사용할 수 없습니다. 둘 이상의 파일이 같은 이름으로 정의될 경우에는 확장자를 포함한 경로와 파일명의 사전순으로 첫 번째 파일만 정의합니다.

호환되지 않는 이름이나 다른 디렉터리에 있어서 audio 네임스페이스에 자동으로 추가되지 않는 파일도 define 문으로 직접 추가할 수 있습니다.

예를 들어 다음과 같이 작성한 뒤:

define audio.sunflower = "my_music/sun-flower-slow-jam.ogg"

다음과 같이 사용할 수 있습니다.

play music sunflower

play 문과 queue 문은 항상 audio 네임스페이스에서 인수를 평가합니다. 함수는 그렇지 않으므로 sunflower로는 동작하지 않지만 audio.sunflower로는 동작합니다.

play 문

play 문은 효과음과 음악을 재생하는 가장 일반적인 방법입니다. 일반 채널에서 파일을 재생 중이면 중단하고 새 파일로 교체합니다.

play 키워드 뒤에는 채널 이름을 지정합니다. 일반적으로 "sound", "music", "voice", "audio" 중 하나입니다. 이어서 파일 하나 또는 파일 리스트로 오디오 파일을 지정합니다. 리스트이면 항목을 순서대로 재생합니다.

fadein 및 fadeout 절은 선택 사항입니다. fadeout은 현재 음악의 페이드아웃 시간을 초 단위로 지정하고, fadein은 새 음악의 페이드인 시간을 지정합니다. fadeout을 지정하지 않으면 config.fadeout_audio를 사용합니다.

loop 및 noloop 절도 선택 사항입니다. loop는 음악을 반복 재생하고 noloop는 한 번만 재생합니다. 둘 다 지정하지 않으면 채널의 기본값을 사용합니다.

play music "mozart.ogg"
play sound "woof.mp3"
play myChannel "punch.wav" # 'myChannel' needs to be defined with renpy.music.register_channel().

"효과음이나 음악을 목록으로 재생할 수도 있어요."
play music [ "a.ogg", "b.ogg" ] fadeout 1.0 fadein 1.0

if_changed 절을 지정했고 같은 트랙이 이미 해당 채널에서 재생 중이면 play 문이 재생을 중단하지 않습니다.

label market_side:
    play music market
    "시장에 들어가고 있어요."
    jump market_main

label market_main:
    play music market if_changed
    "방금 시장에 들어왔을 수도 있고, 이미 시장 안에 있었을 수도 있어요."
    "이미 시장 안에 있었다면 음악은 멈췄다가 처음부터 다시 시작하지 않고 계속 재생돼요."
    jump market_main

volume 절도 선택 사항이며 트랙의 상대 진폭을 0.0에서 1.0 사이로 지정합니다. 이를 통해 트랙을 재생할 때마다 재생 진폭을 조절할 수 있습니다.

play sound "woof.mp3" volume 0.5

audio 채널에서는 여러 play 문으로 여러 소리를 동시에 재생할 수 있습니다.

play audio "sfx1.opus"
play audio "sfx2.opus"

문자열 대신 변수를 사용할 수 있습니다. audio 네임스페이스에 변수가 있으면 기본 네임스페이스보다 우선합니다.

play music illurock

audio 네임스페이스에 추가되는 파일은 이와 같이 사용할 수 있는 변수를 자동으로 정의할 수 있습니다.

Ren'Py는 오디오 파일들을 동시에 재생하기 시작하도록 하는 기능을 지원합니다. music처럼 반복하는 오디오 채널에서는 기본적으로 켜져 있습니다. renpy.music.register_channel() 또는 renpy.music.play()의 synchro_start 옵션으로 켤 수도 있습니다.

동기화 시작이 켜진 상태에서 여러 play 문이 동시에 실행되면 각 채널의 오디오가 동기화되어 시작합니다. 구체적으로는 다음 시점에 시작합니다.

  • 모든 채널의 오디오 파일 로딩이 끝나고 오디오 샘플을 사용할 수 있을 때.

  • 모든 채널의 페이드아웃이 끝났을 때.

두 조건이 모두 충족되면 새 오디오의 재생이 시작됩니다.

stop 문

stop 문은 키워드 stop 뒤에 재생을 중지할 채널 이름을 지정합니다. 선택적으로 fadeout 절을 붙일 수 있습니다. 지정하지 않으면 config.fadeout_audio를 사용합니다.

stop sound
stop music fadeout 1.0

queue 문

queue 문은 오디오 파일을 재생 대기열에 넣습니다. 채널에서 현재 파일의 재생이 끝나면 재생합니다.

queue 문은 키워드 queue 뒤에 소리를 재생할 채널 이름을 지정합니다. 선택적으로 fadein, loop, noloop 절을 받습니다.

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

queue 문도 volume 절을 받습니다.

play sound "woof.mp3" volume 0.25
queue sound "woof.mp3" volume 0.5
queue sound "woof.mp3" volume 0.75
queue sound "woof.mp3" volume 1.0

상호작용 없이 queue 문을 여러 번 실행하면 모든 소리 파일을 대기열에 추가합니다. 상호작용이 한 번 발생한 뒤에는 첫 queue 문이 대기열을 비웁니다. 단, play 문이나 stop 문이 이미 비웠다면 다시 비우지 않습니다.

문자열 대신 변수를 사용할 수 있습니다. audio 네임스페이스에 변수가 있으면 기본 네임스페이스보다 우선합니다.

define audio.woof = "woof.mp3"

# ...

play sound woof

이 문들을 사용하면 린트 실행 시 누락된 효과음 및 음악 파일을 검사한다는 장점이 있습니다. 아래 함수들은 Python에서 음악과 소리를 제어하거나 거의 사용하지 않는 고급 기능에 접근할 수 있도록 제공합니다.

부분 재생

Ren'Py는 오디오 파일의 일부만 재생할 수 있습니다. 파일명 앞에 꺾쇠괄호로 감싼 재생 설정을 넣습니다. 부분 재생 설정에는 속성 이름과 값의 쌍을 번갈아 작성하며 모두 공백으로 구분합니다.

값은 항상 파일 시작부터의 초 수로 해석합니다. 속성은 다음 세 가지입니다.

from

처음 재생할 때 시작할 파일 내 위치를 지정합니다. 기본값은 0.0초입니다.

to

파일 재생을 끝낼 위치를 지정합니다. 기본값은 파일의 전체 길이입니다.

loop

두 번째 이후 재생에서 시작할 파일 내 위치를 지정합니다. from을 지정했다면 해당 시작 시간이 기본값이고, 그렇지 않으면 파일의 처음이 기본값입니다.

예를 들어:

play music "<from 5 to 15.5>waves.opus"

waves.opus의 5초 지점부터 10.5초 동안 재생합니다. 다음 문은:

play music "<loop 6.333>song.opus"

song.opus 전체를 한 번 재생한 뒤 6.333초 지점으로 돌아가 끝까지 반복 재생합니다.

시작 위치 동기화

"<sync channelname>track.opus" 같은 파일명으로 클립의 재생 시작 위치를 현재 트랙이 재생 중인 다른 채널과 동기화할 수도 있습니다. channelname은 "music", "sound" 또는 다른 등록된 채널의 이름입니다.

여러 레이어로 구성된 반복 트랙들을 동기화하는 데 사용할 수 있습니다. 예를 들면 다음과 같습니다.

play music_2 [ "<sync music_1>layer_2.opus", "layer_2.opus" ]

첫 번째 재생에서는 layer_2.opus의 시작 시간을 music_1 채널의 현재 트랙과 동기화하고 이후 반복에서는 전체 트랙을 재생합니다. 기본적으로는 이후 반복에서도 layer_2.opus의 변경된 시작 시간이 유지됩니다.

음량

트랙의 재생 음량은 여러 값에 따라 결정됩니다.

  • "main" 믹서의 음량

  • 채널에 연결된 믹서의 음량

  • 채널의 음량

  • 트랙 자체의 상대 진폭

  • 파일명에 지정한 상대 진폭

이 네 음량은 0에서 1 사이의 값이며, 모두 곱한 결과가 트랙의 재생 음량이 됩니다.

예를 들어 main 음량이 80%(0.8), 믹서 음량이 100%, 채널 음량이 50%(0.5), 트랙의 상대 음량이 25%(0.25), 파일명의 상대 음량이 50%(0.5)이면 최종 음량은 .8*1.*.5*.25*.5 = .0.5, 즉 5%입니다.

이 음량들은 모두 진폭이지만 환경설정 메뉴에서는 믹서를 데시벨로 표시합니다.

믹서의 음량은 preferences.set_mixer(), SetMixer() 액션 또는 "mixer <mixer> volume" 키를 사용하는 Preference() 액션으로 설정할 수 있습니다. "audio"와 "sound" 채널은 "sfx" 믹서, "music" 채널은 "music" 믹서, "voice" 채널은 "voice" 믹서에 연결됩니다. 앞서 설명한 것처럼 모든 채널은 추가로 "main" 믹서에도 연결됩니다.

채널의 음량은 renpy.music.set_volume()으로 설정할 수 있습니다. 여러 채널이 같은 믹서를 사용할 때만 유용합니다. renpy.music.register_channel() 함수의 mixer 매개변수는 등록할 채널이 연결될 믹서를 설정하며, 해당 믹서가 없으면 새로 만듭니다.

트랙의 상대 음량은 play 문의 volume 절로 설정합니다.

파일명의 상대 음량은 "<volume 0.5>track.opus"처럼 꺾쇠괄호 안의 volume 절로 설정합니다.

이 음량 값들 외에 채널에 연결된 믹서의 음소거 플래그도 있습니다. 켜져 있으면 재생 음량이 0이 됩니다. SetMute()나 ToggleMute() 액션, "mixer <mixer> mute" 키를 사용하는 Preference() 액션 또는 preferences.set_mute() 함수로 설정할 수 있습니다.

무음 재생

"<silence 3.0>" 같은 파일명으로 지정한 시간 동안 무음을 재생할 수 있습니다. 3.0은 원하는 무음 시간의 초 수입니다. 소리 파일의 재생 시작을 늦추는 데 사용할 수 있습니다. 예를 들면 다음과 같습니다.

play audio [ "<silence .5>", "boom.opus" ]

0.5초 동안 무음을 재생한 뒤 폭발음을 재생합니다.

액션

오디오 액션을 참조하세요.

함수

class AudioData(data, filename)

이 클래스는 오디오 또는 비디오 데이터를 담은 bytes 객체를 감싸 오디오/비디오 재생 시스템에 전달할 수 있게 합니다. 데이터는 Ren'Py가 지원하는 형식이어야 합니다. 예를 들어 단순한 샘플 데이터가 아니라 RIFF WAV 형식 헤더를 포함해야 합니다.

이름과 달리 오디오 데이터뿐 아니라 비디오 데이터도 표현할 수 있습니다.

data

오디오 파일 데이터를 담은 bytes 객체입니다.

filename

이 데이터에 연결할 가상의 파일명입니다. data의 형식을 알려 주는 데 사용할 수 있으며 오류 메시지에도 표시됩니다.

꺾쇠괄호로 시작하면 from 및 to 시간 같은 오디오 속성을 지정할 수 있습니다.

생성한 뒤에는 오디오 파일명을 받는 모든 곳에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.

define audio.easteregg = AudioData(b'...', 'sample.wav')
play sound easteregg
renpy.mark_audio_seen(filename)

지정한 파일명이 현재 사용자의 시스템에서 이미 재생된 것으로 기록합니다.

renpy.mark_audio_unseen(filename)

지정한 파일명이 현재 사용자의 시스템에서 아직 재생되지 않은 것으로 기록합니다.

renpy.play(filename, channel=None, **kwargs)

효과음을 재생합니다. channel이 None이면 config.play_channel이 기본값입니다. 스타일에 정의한 소리인 hover_sound와 activate_sound를 재생하는 데 사용합니다.

renpy.seen_audio(filename)

지정한 파일명이 현재 사용자의 시스템에서 한 번 이상 재생되었다면 True를 반환합니다.

renpy.music.channel_defined(channel)

채널이 있으면 True, 없으면 False를 반환합니다.

renpy.music.get_all_mixers()

사용 중인 모든 믹서를 가져옵니다.

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

channel에서 재생 중인 오디오 또는 비디오 파일의 길이를 반환합니다. channel에 재생 중인 파일이 없거나 길이를 알 수 없으면 0.0을 반환합니다. MP3를 비롯한 일부 형식은 Ren'Py가 읽을 수 있는 방식으로 길이 정보를 제공하지 않습니다.

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

channel에서 반복 중인 파일명 리스트를 반환합니다. 반복 중인 파일이 없으면 None을 반환합니다. 반복 트랙이 대기열에 있지만 아직 재생되지 않았다면 현재 음악이 아니라 반복 트랙을 반환합니다.

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

channel의 일시 정지 플래그를 반환합니다.

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

지정한 채널이 재생 중이면 재생 중인 파일명을 반환합니다. 그렇지 않으면 None을 반환합니다.

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

channel의 오디오 또는 비디오 파일에서 현재 위치를 초 단위로 반환합니다. channel에서 재생 중인 오디오가 없으면 None을 반환합니다.

채널의 재생이 시작되기 전이나 해당 오디오 채널이 음소거된 경우 None을 반환할 수 있으므로, 이 함수를 호출하는 코드는 항상 None 값을 처리해야 합니다.

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

채널에서 현재 소리를 재생 중이면 True를 반환합니다. 재생 중이 아니거나 소리 시스템이 작동하지 않으면 False를 반환합니다.

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

해당 번호의 채널에서 현재 음악을 중지하고 대기열의 음악을 모두 제거한 뒤 지정한 파일 또는 파일들의 재생을 시작합니다.

filenames

재생할 파일 하나 또는 파일 리스트입니다.

channel

소리를 재생할 채널입니다.

loop

True이면 트랙들이 대기열의 마지막 항목인 동안 반복 재생합니다.

fadeout

None이 아니면 페이드아웃 시간을 초 단위로 지정합니다. 그렇지 않으면 config.fadeout_audio의 시간을 사용합니다. 음악을 재생할 때 채널이 일시 정지 상태이면 무시합니다.

synchro_start

True이면 synchro_start가 참으로 설정된 모든 채널이 정확히 같은 시점에 재생을 시작합니다. 시작하기 전에 잠시 기다릴 수 있습니다. 서로 동기화해야 하는 두 오디오 파일을 재생할 때 유용합니다.

None이면 채널의 설정값을 사용합니다.

fadein

첫 번째 반복에서만 적용할 음악 페이드인 시간으로, 초 단위입니다.

tight

True이면 페이드아웃이 대기열의 다음 소리까지 이어집니다. None이면 loop가 True일 때 참, 그 밖에는 거짓입니다.

if_changed

True이고 해당 음악 파일이 현재 재생 중이면 중지하거나 페이드아웃 후 다시 페이드인하지 않고 계속 재생합니다. 이 경우에도 음악을 한 번 더 반복하도록 항상 대기열에 추가합니다.

relative_volume

현재 채널 음량에 대한 상대 음량입니다. 지정한 파일은 이 상대 음량으로 재생합니다. 생략하면 항상 1.0이 기본값이며, 믹서와 채널 및 보조 음량으로 결정되는 원래 음량으로 재생합니다.

channel의 일시 정지 플래그를 해제합니다.

renpy.music.pump()

오디오 시스템을 즉시 갱신합니다. 일반적으로 play, queue, stop 문 및 이에 해당하는 함수의 효과는 다음 상호작용 시작 시 반영됩니다. 여러 문의 효과가 서로 상쇄되는 경우도 있습니다. 예를 들어 play 다음에 stop을 실행하면 트랙이 전혀 재생되지 않습니다.

play와 stop 사이에 이 함수를 호출하면 함수가 반환되기 전에 트랙의 재생이 시작되므로 이후 트랙을 페이드아웃할 수 있습니다.

play music "mytrack.opus"
$ renpy.music.pump()
stop music fadeout 4
renpy.music.queue(filenames, channel='music', loop=None, clear_queue=True, fadein=0, tight=None, relative_volume=1.0)

지정한 채널의 대기열에 주어진 파일명들을 추가합니다.

filenames

재생할 파일 하나 또는 파일 리스트입니다.

channel

소리를 재생할 채널입니다.

loop

True이면 트랙들이 대기열의 마지막 항목인 동안 반복 재생합니다.

clear_queue

True이면 대기열을 비우므로 현재 파일의 재생이 끝나면 이 파일들이 재생됩니다. False이면 이 파일들을 대기열의 맨 뒤에 넣습니다. 어느 경우든 재생 중인 음악이 없으면 즉시 이 파일들의 재생을 시작합니다.

fadein

첫 번째 반복에서만 적용할 음악 페이드인 시간으로, 초 단위입니다.

tight

True이면 페이드아웃이 대기열의 다음 소리까지 이어집니다. None이면 loop가 True일 때 참, 그 밖에는 거짓입니다.

relative_volume

현재 채널 음량에 대한 상대 음량입니다. 지정한 파일은 이 상대 음량으로 재생합니다. 생략하면 항상 1.0이 기본값이며, 믹서와 채널 및 보조 음량으로 결정되는 원래 음량으로 재생합니다.

channel의 일시 정지 플래그를 해제합니다.

renpy.music.register_channel(name, mixer, loop=None, stop_on_mute=True, tight=False, file_prefix='', file_suffix='', buffer_queue=True, movie=False, framedrop=True)

name이라는 새 오디오 채널을 등록합니다. 이후 play 문이나 queue 문에 채널 이름을 지정하여 오디오를 재생할 수 있습니다.

name

채널 이름입니다. 공백은 Ren'Py 내부용으로 예약되어 있으므로 포함하면 안 됩니다. play 문 구문에서 사용하려면 유효한 식별자여야 합니다.

mixer

채널에서 사용할 믹서의 이름입니다. Ren'Py는 기본적으로 "music", "sfx", "voice" 믹서를 인식합니다. 다른 이름을 사용할 수 있으며 믹서가 없으면 새로 만듭니다. 다만 플레이어가 새 믹서를 조절하게 하려면 환경설정 스크린을 변경해야 합니다.

loop

True나 None이면 이 채널의 소리는 기본적으로 반복합니다. False이면 기본적으로 반복하지 않습니다.

stop_on_mute

참이면 채널을 음소거할 때 해당 채널의 음악을 중지합니다.

tight

참이면 페이드아웃 중에도 소리를 반복합니다. 효과음 채널이나 끊김 없는 음악 채널에는 True로 설정하고, 음악 자체가 페이드아웃되는 경우에는 False로 설정해야 합니다.

file_prefix

이 채널에서 재생할 소리 파일의 파일명 앞에 붙이는 접두사입니다.

file_suffix

이 채널에서 재생할 소리 파일의 파일명 뒤에 붙이는 접미사입니다.

buffer_queue

대기 중인 파일의 처음 약 1초를 버퍼에 저장할지 지정합니다. 오디오에는 True, 동영상 재생에는 False여야 합니다.

movie

참이면 이 채널을 비디오 재생용으로 설정합니다.

framedrop

비디오가 지연될 때의 동작을 제어합니다. 참이면 실제 시간 및 사운드트랙에 맞추기 위해 프레임을 생략합니다. 거짓이면 Ren'Py가 프레임을 생략하지 않고 늦게 표시합니다.

synchro_start

이 채널의 동기화 시작 참여 여부입니다. 동기화 시작은 다른 채널과 동시에 재생을 시작할지 결정합니다. None이면 movie가 False일 때는 loop가 기본값이며, 그 밖에는 False입니다.

renpy.music.set_audio_filter(channel, audio_filter, replace=False, duration=0.016)

앞으로 대기열에 추가할 소리의 오디오 필터를 audio_filter로 설정합니다.

audio_filter

오디오 필터 또는 오디오 필터 리스트여야 합니다. None을 지정하면 필터를 제거합니다.

replace

True이면 현재 오디오 필터를 즉시 교체하여 재생 중인 소리와 대기열의 소리를 바꿉니다. False이면 다음에 소리를 재생하거나 대기열에 추가할 때 새 필터를 사용합니다.

duration

현재 필터에서 새 필터로 바꾸는 시간으로, 초 단위입니다. 필터를 바꿀 때 튀는 소리가 나는 것을 방지합니다.

renpy.music.set_mixer(channel, mixer, default=False)

지정한 채널에 연결된 믹서 이름을 설정합니다. 기본적으로 'sfx'와 'music' 믹서가 있습니다. 'sfx'는 채널 0~3, 'music'은 채널 3~7에 연결됩니다. voice 모듈은 이 함수를 호출하여 채널 2를 voice로 설정합니다. 직접 믹서를 만들 수 있지만 사용자가 조절하게 하려면 환경설정 항목을 추가해야 합니다.

이 함수는 init 블록 안에서만 호출해야 합니다.

renpy.music.set_pan(pan, delay, channel='music')

이 채널의 패닝을 설정합니다.

pan

-1에서 1 사이의 숫자로 오디오의 좌우 배치를 제어합니다. -1이면 모든 오디오를 왼쪽 채널로 보내고, 0이면 두 채널의 균형을 같게 합니다. 1이면 모든 오디오를 오른쪽으로 보냅니다.

delay

패닝을 변경하는 데 걸리는 시간입니다.

channel

패닝을 적용할 채널입니다. 기본값은 music 채널입니다.

renpy.music.set_pause(value, channel='music')

channel의 일시 정지 플래그를 value로 설정합니다. True이면 채널을 일시 정지하고, 그렇지 않으면 정상적으로 재생합니다.

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

기존 값에서 새 값으로 음량을 바꾸거나 페이드하는 데 delay초가 걸립니다. 이 값은 저장 파일에 유지되며 롤백에도 반영됩니다.

channel

설정할 채널입니다.

renpy.music.stop(channel='music', fadeout=None)

현재 음악을 중지하고 대기열의 음악을 모두 제거합니다. fadeout이 None이면 config.fadeout_audio에 지정한 시간 동안 페이드아웃하고, 그렇지 않으면 fadeout초 동안 페이드아웃합니다.

마지막으로 대기열에 추가한 파일을 None으로 설정합니다.

channel

소리를 중지할 채널입니다.

fadeout

None이 아니면 페이드아웃 시간을 초 단위로 지정합니다. 그렇지 않으면 config.fadeout_audio의 시간을 사용합니다. 채널이 일시 정지 상태이면 무시합니다.

효과음 함수

renpy.music 함수 대부분에는 renpy.sound의 별칭이 있습니다. 동작은 비슷하지만 기본 채널이 music이 아닌 sound이며, 기본적으로 반복하지 않습니다.