티스토리 뷰
유니티 사운드 관련 알게된 것 붙여넣기
유니티 마이크 실시간 인풋 : 레이턴시 200-300ms-> 에셋 FFT 사용해서 레이턴시 줄이기
readme 문서를 보면
에셋 코드 활용하기
To use our scripts and obtain the spectrum of a set of data you must follow these steps.
1. Create the inout and output complex arrays
Complex[] inputSignal_Time = new Complex[windowSize];
Complex[] outputSignal_Freq = new Complex[windowSize];
2. Transform from double to complex
inputSignal_Time =
FastFourierTransform.doubleToComplex(Y_inputValues);
3. Obtain the FFT
//result is the iutput values once DFT has been applied
outputSignal_Freq =
FastFourierTransform.FFT(inputSignal_Time,false);
4. Obtain the module of the complex number
Y_output = new double[windowSize];
//get module of complex number
for (int ii = 0; ii < windowSize; ii++)
{
Y_output[ii] = (double)Complex.Abs(outputSignal_Freq[ii]);
}
***audioSource 컴포넌트 추가
* 리스너도 추가하랬는데 카메라에 달려있으니 따로 추가하면 안 된다. 2개되면 오류남.
마이크 인풋
void Start()
{
audioSource = GetComponent<AudioSource>();
audioSource.clip = Microphone.Start(null, false, 999, 44100);
while (!(Microphone.GetPosition(null) > 0)) ;
audioSource.Play();
}
999초 동안 마이크 소리가 유니티에서 재생된다.
*마이크 소리에서 - 주파수 대역의 진폭 가져오기
AudioSource.GetSpectrumData 함수
Algorithmic Beat Mapping in Unity: Real-time Audio Analysis Using the Unity API
Posts in this series:
medium.com
이 함수는 재생중인 Source의 파형을 FFT한 결과를 배열에 저장.
float[] samples : FFT한 결과를 저장할 배열, 배열의 길이는 2의 제곱 수여야 합니다.
int channel : 채널
window : 샘플링할 때 사용할 FFTWindow (주파수 대역에서 신호의 누출을 줄이기 위해 사용)
예시
void Update()
{
float[] spectrumData = audioSource.GetSpectrumData(visualizerSimples, 0, FFTWindow.Rectangular);
for (int i = 0; i < visualizerObjects.Length; i++) {
Vector2 newSize = visualizerObjects[i].GetComponent<RectTransform>().rect.size;
newSize.y = Mathf.Lerp(newSize.y, minHeight + (spectrumData[i] * (maxHeight - minHeight) * 5.0f), sensitivity);
newSize.y = Mathf.Clamp(newSize.y, minHeight, maxHeight);
visualizerObjects[i].GetComponent<RectTransform>().sizeDelta = newSize;
visualizerObjects[i].GetComponent<Image>().color = visualizerColor;
}
}
유니티 오디오 비쥬얼라이져 심플 튜토리얼
매우 간단한 오디오 비쥬얼라이져입니다. void Update() { float[] spectrumData = audioSource.GetSpectrumData(visualizerSimples, 0, FFTWindow.Rectangular); for (int i = 0; i < visualizerObjects.Length; i++) { Vector2 newSize = visualizerObject
morm.tistory.com
이것저것 알게된거 그냥 적기
오디오 믹서
유니티에 오디오 믹서가 있다.
새로운 믹서 추가
unity audiomixer?
-> 게임이나 어플리케이션에서 오디오를 제엏고 조작하는 도구.
다양한 오디오 소스를 관리하고 효과를 적용하는 허브 역할 !
다양한 기능
1. 라우팅 , 믹싱 : 오디오 볼륨 패닝을 독립적 혹은 전체적으로 제어가능
2. 오디오 효과 : EQ, 리버브, 컴프레셔
3. 스냅샷 및 전환 : 스냅샷을 생성하고 이들간에 부드럽게 전환할 수 있음. 게임 플레이 상태 또는 오디오 상황간의 전환을 만드는데 유용. 오디오 효과를 부드럽게 페이드 인 또는 아웃하고 볼륨 조정. 기타 매개변수 제어하여 오디오 전환 !
(AudioSource: 개별 게임 개체에 연결. 단일 오디오 소스. 오디오 클립 또는 스트림 재생. 볼룸 피치 루핑 및 공간 오디오 설정 가능
오디오 믹서에 연결되어 특정 오디오 그룹에 할당하고 믹서 설정 및 효과를 적용할 수 있다.)
오디오 소스를 오디오 그룹으로 라우팅
https://malbongcode.tistory.com/40
Unity - 사운드 조절하기 - Slider로 조절
사운드를 켜고 끄고 하는 것은 크게 두가지 있음 1) Sound Toggle (on/off) 2) Sound Manipulation (0~100) 1) Sound Toggle (on/off) 코드 살펴보기 스크립트 작성하고 Button 만들어서 OnClick에 넣어주면 됨 설명하자면 A
malbongcode.tistory.com
이사람이 진짜 잘 구현해 놓음.
전체 혹은 BGM SFX 를 나누어 볼륨 조절한느 UI 만들기. 스크립트 있음.
** 또 새로 알게된거
오디오 스페이셜라이저 SDK
HRTF 머리위치 측정 오른 쪽 왼쪽 소리 차이로 공간에 있는 듯한 소리 구현하는 sdk
'기타 ... > Sound' 카테고리의 다른 글
(사운드) IR : impulse response란? (1) | 2023.05.22 |
---|
- Total
- Today
- Yesterday
- Java
- emotive eeg
- docker
- 라즈베리파이
- Unity
- houdini
- CNC
- AI
- node.js
- imgtoimg
- ardity
- VR
- DeepLeaning
- 유니티
- colab
- sequelize
- TouchDesigner
- motor controll
- Midjourney
- Express
- MQTT
- opencv
- Arduino
- three.js
- 유니티플러그인
- 후디니
- oculuspro
- Python
- unity 360
- RNN
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |