문제

실제 악기의 오디오와 유사한 사운드를 만들고 싶습니다.문제는 그것을 얻는 방법에 대한 단서가 거의 없다는 것입니다.

실제 악기와는 거리가 멀다는 것을 내가 아는 것은 그들이 출력하는 소리가 거의 깨끗하지 않다는 것입니다.그런데 어떻게 그렇게 더러운 소리를 낼 수 있을까요?

지금까지 이 작업을 수행했는데, alsa를 올바르게 사용하고 있는지 확실하지 않은 아주 평범한 사운드가 생성됩니다.

import numpy
from numpy.fft import fft, ifft
from numpy.random import random_sample
from alsaaudio import PCM, PCM_NONBLOCK, PCM_FORMAT_FLOAT_LE

pcm = PCM()#mode=PCM_NONBLOCK)
pcm.setrate(44100)
pcm.setformat(PCM_FORMAT_FLOAT_LE)
pcm.setchannels(1)
pcm.setperiodsize(4096)

def sine_wave(x, freq=100):
    sample = numpy.arange(x*4096, (x+1)*4096, dtype=numpy.float32)
    sample *= numpy.pi * 2 / 44100
    sample *= freq
    return numpy.sin(sample)

for x in xrange(1000):
    sample = sine_wave(x, 100)
    pcm.write(sample.tostring())
도움이 되었습니까?

해결책

악기의 물리학. There's lots of stuff on the web too, you might want to have a look at a the primer James Clark has 여기

당신이하고 싶은 것이 물리적으로 들리는 것이 있고, 악기 X와 같은 소리가 나오는 것이라면, 당신의 작업은 조금 더 쉽습니다. 주파수를 아주 쉽게 쌓아서 함께 쌓고 약간의 소음을 추가하면 최소한 순수한 톤처럼 들리지 않는 것을 얻을 수 있습니다.

일반적으로 푸리에 분석에 대해 조금 읽으면 주파수 변조 (FM) 기술과 같이 도움이됩니다.

재미있게 보내세요!

다른 팁

사운드 합성은 마스터하기 위해 수년간의 연구가 필요한 복잡한 주제입니다.

비교적 최근의 발전 (예 : 물리적 모델링 합성)이 실제 도구를 모방하는 데 진전을 이루었지만 완전히 해결 된 문제는 아닙니다.

라이프와 같은 사운드를 더 빠르게 생성하는 방법을 원한다면 샘플링 기술 사용을 고려하십시오. 즉, 재생산하려는 도구 (또는 기존 샘플 뱅크를 사용)를 녹음하고 샘플을 재생하십시오. 훨씬 더 간단하고 종종 더 효과적인 접근법입니다.

나는 이것이 매우 사소하지 않으며 "올바른 길"을 설정하지 않았다는 데 동의하지만, 당신은 A (또는 직접 만들기)로 시작하는 것을 고려해야합니다. 미디 사운드 폰트.

다른 사람들이 말했듯이 전혀 사소한 주제가 아닙니다.프로그래밍 측면(특히 낮은 지연 시간에 관심이 있는 경우)과 합성 부분 모두에 어려움이 있습니다.소리 합성을 위한 금광은 Julius O의 페이지입니다.스미스.있다 많이 합성 기술의 http://ccrma-www.stanford.edu/~jos/.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top