Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
31 |
Tags
- 설문조사앱
- 링크필드
- 웹개발
- N으로 표현
- 프로그래머스
- bandpass filter
- 쿼리문법
- Django cycle
- sql정리
- Django DB
- SQL
- 데이터필드
- embeddedSW
- Django서버
- MTV패턴
- matlab 디지털신호처리
- Django
- 통신인터페이스
- 코딩테스트
- 디지털신호처리설계
- 왜 개발이 하고싶은가
- 완주하지 못한 선수
- select
- python웹개발
- Django웹개발
- programmers
- Django웹서버개발
- 알고리즘풀이
- 자동 commit
- 알고리즘 자동 업로드
Archives
- Today
- Total
카이로스의 시간
[통신공학] matlab을 이용한 piano project 본문
matlab을 이용해서 간단한 piano project를 만듭니다.
밑에 악보는 이루마의 'river flows in you'의 앞부분 입니다.
matlab은 비교적 high-level language라서 구현하는 부분은 어렵지 않습니다. 그래서 matlab 기초는 포스팅하지 않겠습니다.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
%이루마 river flows in you 앞부분 만들기
Fs = 8192; %주파수 샘플링비율
t = 0:1/Fs:(1-1/Fs);
oc = [440 523 587 659 830 880];%높은음자리표 주파수
c_oc = [146 184 220 261 329 349];%낮은음자리표 주파수
Sla = oc(1); %4옥타브 라
do = oc(2); %5옥타브 도
re = oc(3); %5옥타브 레
mi = oc(4); %5옥타브 미
sol = oc(5); %5옥타브 솔샾
la = oc(6); %5옥타브 라
three_re = c_oc(1); %3옥타브 레
three_pa = c_oc(2); %3옥타브 파
three_la = c_oc(3); %3옥타브 라
four_do = c_oc(4); %4옥타브 도
four_mi = c_oc(5); %4옥타브 미
four_pa = c_oc(6); %4옥타브 파
river = [la sol la sol la mi la re re re Sla do];
chord = [three_pa four_do four_pa 0 three_re three_la four_mi 0 four_mi 0 0 0 ]; %박자맞추기위해 중간에 0 넣음
for i=1:numel(river) %i=1부터 river배열 끝부분의 수까지 들어감
x = 0.02*cos(2*pi*river(i)*t); %높은음자리표 진폭은 소리의크기
y = 0.02*cos(2*pi*chord(i)*t); %낮은음자리표 화음용
sound(x,Fs); %높은음 소리내기
if(i<10)
sound(y,Fs);%낮은음 소리내기
end
Xf = fft(x); %Xf에 x에대한 주파수도메인 함수표시
f = 0:(Fs-1);
plot(f,abs(Xf)); %함수그림 x축은 주파수절대값 y축은 amp
xlabel('Frequency');
ylabel('Amplitude');
if(i ~= 9) %i = 9일때빼고 0.5초씩 딜레이
pause(0.5);
end
if(i == 9) % i = 9일때 1초딜레이
pause(1);
end
cla; %실행될때마다 그래프 지우고 다시그림
clear x;
clear y;
clear Xf;
end
|
cs |
river 부분이 소프라노(?) 부분이고 chord가 화음이란 뜻인데 밑에 낮은음자리표(?)부분 이다.
river, chord라는 배열만들어서 싱크 맞게 0을 적절하게 넣었음.
시간 domain과 주파수 domain에서,
이렇게 plotting 결과를 볼 수 있다. 위 결과는 주파수-진폭 그래프이다.
Fs(샘플링 주파수)는 8192로 설정했는데 그 이유는 샘플링 주파수는 주파수 대역폭의 약 2배 이어야하고
음계주파수가 대략 수십Hz에서 수천 Hz인데 그중 7옥타브가 대략 4000Hz이므로 1~7옥타브만 듣기위해 샘플링주파수를 8192로 잡았다.
'기타' 카테고리의 다른 글
Database SQL 쿼리 문법 정리 Part2 (0) | 2022.04.10 |
---|---|
Database SQL 쿼리 문법 정리 Part1 (0) | 2022.04.04 |
GCP로 git commit, push 자동 시스템 구축 (0) | 2022.03.29 |
[디지털 신호처리 설계] dtmf (2) | 2017.12.10 |
텐서플로우(tensorflow) 설치 (0) | 2017.09.14 |