2016-10-27 24 views
0

오디오의 속도를 변경하지 않고 사운드 피치를 변경 한 다음 wav 또는 mp3 파일에 저장하려는 경우 Java on을 사용하여 몇 가지 사운드 효과를 만드는 것이 좋습니다. 안드로이드, 내가 그렇게 명확한 방법을 찾지 못했습니다, 읽을 수있는 자습서가 있습니까?Java (Android)를 사용하여 오디오 피치 변경하기

답변

0

약간의 연구를 거친 후, 나는 당신이하려고하는 것이 "피치 쉬프트 (pitch shifting)"라고 생각했습니다. 사운드의 피치를 변경하고 자동으로 재생 속도를 변경하기 때문에 사운드 패킷과 관련하여 많은 수학 및 조작이 필요합니다. 오디오를 여전히 "정상적인"것으로 간주하면서 원하는 속도로 되돌리려면 공원에 산책 할 필요가 없습니다.

Unity3D는 C#을 사용하기 때문에이 오픈 소스 라이브러리를 사용하여 필요한 사운드 효과를 얻을 수 있습니다. 그것은 NAudio (또한 오픈 소스 및 C#)를 기반으로하므로 이론적으로 프로젝트에서 프로젝트의 일부 또는 일부를 사용할 수 있어야합니다.

+0

나는 피치 쉬프트에 대해 읽을 수 있지만 생각 나는, 어쨌든 내가 그 도서관에서 살펴 보겠습니다 코드로 구현하는 방법을 정말 감사 –

1

다음은 음악 신호의 음높이를 높이거나 낮출 수있는 Stephan M. Bernsee의 smbPitchShift.cpp라는 간단하고 가치있는 자습서 기능에 대한 링크입니다.

피치를 변경하지 않고도 음악을 느리게하거나 빠르게 할 수있었습니다. 대신 원래 피치를 변경하지 않고 시간을 늘리려면 리샘플링을 적용해야 할 수 있습니다.

Bernsee가 GitHub에서 링크 된 버전부터 코드에 몇 가지 변경 사항을 만들었습니다. 그의 새로운 코드는 그의 웹 사이트에서 다운로드 할 수 있습니다. 원래의 사양에서 벗어나는 범위가 증가 할 수 있습니다. 그의 원래 코드를 수정하여 시프트를 8 배 올릴 수있었습니다.

https://github.com/AndyA/BatPhone/blob/master/pitchshift.c

http://blogs.zynaptiq.com/bernsee/time-pitch-overview/

+0

하지 알 수 없다는 것입니다 자바,하지만 난 C 코드에서 알고리즘을 이해하려고 노력할 것입니다, 감사합니다 : D 조 –