분류 전체보기 (120) 썸네일형 리스트형 Audio DSP: 일렉기타 이펙터 만들기 5 - 결과물 비교하기 이번에도 sineimpulsegaussianclean에다가 sine sweep도 추가해보았다. sine sweep추가한 이유: 모든 주파수 대역을 한번씩 지나가는 신호이기 때문에 guassian noise보다 더 깔끔하게 나오지 않을까란 직관적 예측을 기반으로 넣어보았다. 결과물들을 하나씩 들어보면 clean gaussian sine_sweep의 경우에는 어느정도 유사한 결과물이 나왔다. sine은 전혀 들어줄수 없는 결과물이 나온것을 알수있고(이는 overdrive와 동일한것으로 보인다.)impulse의 결과값이 생각보다 별로인게 신기했다.impulse는 짧은 시간에 강한 신호가 가기 때문에 파이썬으로 딜레이 처리했을때도 어느 구간이 딜레이 인지 바로 알수있었기 때문에 전달함수가 더 깔끔히 나올줄 .. Audio DSP: 일렉기타 이펙터 만들기 4 - 딜레이 페달 만들기 오버드라이브 계열은 LTI시스템이 아니기 때문에 전달함수로 구현할수없음을 알아냈다.그래서 LTI 시스템인 simple delay를 이용하여 전달함수를 만들어 보려고 한다. 딜레이는 메아리처럼 일정한 시간적 간격을 가지고 짧게 소리를 되풀이 하는 이펙터이다. 꼴의 FIR 시스템이라고 볼수있다.이는 z-Transform으로 아래와 같이 표현 할 수 있다. GPT를 활용하여 간단한 딜레이 이펙터를 만들었다.import numpy as npfrom scipy.io import wavfiledef read_wav_mono(path: str): fs, x = wavfile.read(path) # stereo -> mono if x.ndim == 2: x = x.mean(axis=1.. Audio DSP: 일렉기타 이펙터 만들기 3 - 다양한 데이터 셋으로 전달함수 만들기 이전에 실제 기타 사운드로 전달함수를 만들었더니 다른 input에 적용했을 때 제대로 적용되지 않는 소리가 들렸다.그 이유는 2가지 중 하나일것이다.1. 전달함수를 만들기에는 적절하지 않은 인풋값이었다.2. 오버드라이브는 LTI 시스템이 아니다 사실 2번이 맞다는거는 진행하면서 알고있었다.오버드라이브 자체가 compress 효과를 주기 때문에 비선형 시스템일 가능성이 농후했기 때문이다. 하지만 그래도 다른 인풋값을 적용해보면 최소한 EQ 정도는 비슷하게 나오지 않을까 싶었다. 그래서 4가지 인풋 데이터를 준비해봤다. 1. 440Hz sine 파2. impulse response3. gaussian noise4. clean guitar 그리고- 전달함수 근사- 전달함수 적용- main 세가지 파일로 코드.. Audio DSP: 일렉기타 이펙터 만들기 2 - wet, dry 신호 분석 일단 사용하려는 아날로그 이펙터는 Jan Ray 복각버전이다. clean1.wav의 경우에는 일렉기타에서 바로 오디오인터페이스를 통해 녹음한 신호이다.(일반적으로 clean,dray라고 불림)janray.wav의 경우에는 clean1.wav파일을 오디오인터페이스로 다시 출력하여 Jan Ray에 다시 시그널을 통과시켜 일종의 리앰핑을 한 신호이다.잔래이 특유의 고급진 음색을 느낄수있다. clean1은 Cleanjanray는 JanRay으로 주파수 대역에서 표기해보도록 해봤다. 코드는 접은글에더보기guitar_files = { 'DATA/clean1.wav' 'DATA/janray.wav'};% wav 읽기[x, fs] = audioread(guitar_files{1});[y, ~] = aud.. Audio DSP 프로젝트: 이펙터 시뮬레이터 만들기 프로젝트 목표아날로그 회로 기반의 오버드라이브 특성을 Python을 이용해 정밀하게 디지털 시뮬레이션으로 구현하고,MATLAB을 활용한 신호 분석을 통해 실제 아날로그 오버드라이브와의 유사도를 공학적으로 정량 평가한다. 구현 방향1. 오버드라이브 페달은 Linear System이라고 가정한다.2. clean signal과 overdrived signal(이펙터를 거친 신호)를 각각 x(t), y(t) 라고 가정한다,Y(f) = X(f)*H(f) 임으로수식 H(f) = X(f)/Y(f) 을 통해 H(f) (=이펙터 시스템)을 근사한다.3. 다른 신호( x1(t) )를 생성한뒤에X1(f) * H(f) = Y1(f) 의 Y1(f)가 유의미한 결과를 갖는지 확인한다. Audio DSP: 일렉기타 이펙터 만들기 1 일렉기타 이펙터 만들기 0 일단 0의 방식을 진행하기 전에 우선 기본적으로 오버드라이브를 만들어보자 import numpy as npimport soundfile as sfx, sr = sf.read("sine_wave.wav")gain = 10y = np.tanh(gain * x)sf.write("sine_wave_gain10.wav", y, sr) 게인을 5, 10씩 줘서 다양한 outpupt 을 생성하였다. 이를 토대로 매트랩으로 스펙트럼 분석을 해보자더보기코드는 아래와 같다sine_files = { 'DATA/sine wave.wav' 'DATA/sine wave gain5.wav' 'DATA/sine wave gain10.wav'};files = sine_files;figure.. USTB 스터디 4: 정량적으로 성능 평가하기 여러가지 파라미터로 출력은 했지만 이게 얼마나 '좋은 성능'의 값인지 눈으로 만 봐서는 알 수가 없다. 그래서 CNR과 PSNR을 직접 계산해 보려고 한다.CNR(Contrast-to-Noise Ratio) 대조도 대 잡음비PSNR(Peak Signal-to-Noise Ratio) 최대 신호 대 잡음비 CNRμ: 각 영역의 평균 밝기σ: 각 영역의 표준 편차 CNR이 높을수록 배경과 타겟이 뚜렷하게 대비되어 보인다.PSNR원래는 영상 압축이나 복원 성능을 측정하는 지표이지만MAX(I) = 영상의 최대 밝기값MSE: 원본 영상과 비교영상 사이의 평균 제곱 오차초음파에서 원본 대비 노이즈가 얼마나 섞여있는지 측정하는 척도가 될수있다. PICMUS 데이터셋의 표준 ROI(관심영역) 좌표는 논문에 기제되.. USTB 스터디 3: 예제 분석하기 원본 코드는 아래와 같다(길어서 접을글 처리)더보기 %% PICMUS challenge: experiment, contrast-speckle test%% This example reads (or downloads if the data is not local) a % dataset used in the % and beamforms it with USTB's general beamformer.% A 75 plane-wave sequence was recorded with a Verasonics Vantage 256 research % scanner and a L11 probe (Verasonics Inc., Redmond, WA). The dataset was recorded on % a CIRS Multi.. 이전 1 2 3 4 ··· 15 다음