[python] 파이썬과 사운드 프로세싱을 이용한 음악 루핑 처리

음악을 편집하거나 작곡을 할 때, 루핑(Looping)은 매우 중요한 작업입니다. 루핑은 특정 구간을 반복해서 재생하는 기능을 말하며, 이를 통해 반복적인 리듬이나 멜로디를 구현할 수 있습니다.

이번 블로그 포스트에서는 파이썬과 사운드 프로세싱 라이브러리인 PySoundFile과 NumPy를 사용하여 음악 루핑 처리를 수행하는 방법을 알아보겠습니다.

1. 필요한 라이브러리 설치하기

음악 루핑 처리를 위해 다음과 같은 라이브러리를 설치해야 합니다.

pip install pysoundfile numpy

2. 음악 파일 불러오기

먼저, 음악 파일을 불러와야 합니다. 이를 위해 PySoundFile 라이브러리를 사용합니다.

import soundfile as sf

filename = 'music.wav'
data, sample_rate = sf.read(filename)

위의 코드에서 music.wav는 루핑 처리할 음악 파일의 경로입니다.

3. 루핑 처리하기

이제, 불러온 음악 파일에서 원하는 구간을 루핑하여 재생할 수 있습니다.

loop_start = 10   # 루핑 시작 시간 (초)
loop_end = 20     # 루핑 종료 시간 (초)

start_sample = int(loop_start * sample_rate)
end_sample = int(loop_end * sample_rate)

loop_data = np.concatenate([data[start_sample:end_sample], data[start_sample:end_sample]])

위의 코드에서 loop_startloop_end 변수를 수정하여 원하는 루핑 구간을 설정할 수 있습니다.

4. 루핑된 음악 저장하기

루핑된 음악을 저장하려면 다음과 같이 코드를 작성합니다.

loop_filename = 'looped_music.wav'
sf.write(loop_filename, loop_data, sample_rate)

위의 코드에서 loop_filename은 저장할 루핑된 음악 파일의 경로입니다.

5. 예제 코드 전체

import soundfile as sf
import numpy as np

filename = 'music.wav'
data, sample_rate = sf.read(filename)

loop_start = 10
loop_end = 20

start_sample = int(loop_start * sample_rate)
end_sample = int(loop_end * sample_rate)

loop_data = np.concatenate([data[start_sample:end_sample], data[start_sample:end_sample]])

loop_filename = 'looped_music.wav'
sf.write(loop_filename, loop_data, sample_rate)

위의 코드는 music.wav 파일에서 10초부터 20초까지의 구간을 반복하여 looped_music.wav 파일로 저장하는 예제입니다.

마무리

이번 포스트에서는 파이썬과 사운드 프로세싱을 이용하여 음악 루핑 처리하는 방법을 알아보았습니다. 음악 편집이나 작곡에 응용할 수 있는 이 기법을 활용해보세요.