구조체 structure 하나로 병합하기
아이유 3단 부스터 공학적 분석 (1차 수정)
아이유의 세 번째 미니앨범 <Real>의 타이틀곡 '좋은 날'이, 특히 후반부의 3단 부스터 고음으로 인기를 끌고 있다. 단계별 영상과 결합되어 수많은 패러디 영상들이 양산되고 있는데, 본 포스팅에서는 좀더 공학적으로 분석 들어가고자 한다.
준비물
- '좋은 날' 음원파일 (mp3)
- '좋은 날(Instrument)' 음원파일 (mp3) *음원은 정식 구매하였음.
- MatLab
MatLab 기본 기능으로는 mp3 파일을 읽어올 수 없다. 구글링을 통하여 mp3read 파일패키지를 다운받는다. (http://www.mathworks.com/matlabcentral/fileexchange/13852-mp3read-and-mp3write)
다행히, '좋은 날'은 반주음원까지 있어서, 아이유의 음성만 쏙 빼올 수 있었다.
단순히 감산을 통해서 목소리가 깨끗이 빠지느냐..가 문제인데, 각각의 신호가 노말라이즈되어있어서 LMS 알고리즘을 통하여 최적의 웨이트 파라미터를 구하려고 했으나.. 너무 오래걸려서 다 하지는 못하고 일부 구간에서만 취하여 평균이 0.82 정도 되는 것을 확인했다. 그러나.. 본인이 아직 LMS 와 음성신호처리에 대해서 잘 모르므로, 함부러 사용하지 않고 그냥 단순히 빼기 연산만 하였다.
여기 목소리만 올린다. 들어보시고, 판단해주세요.
원래 노래, MR, 그리고 그 둘의 감산연산을 통한 결과물인 음성(vox)을 시간축에서 살펴보자. 클라이막스인 3단 부스터 구간 13초만 잘라내었다.
시간 축에서 살펴보는 것만으로는 3단 부스터의 각 단계가 어딘지 전혀 짐작이 가질 않는다. 신호를 시간 축과 주파수 축에서 동시에 볼 수 있는 스펙트로그램을 그려보자.
참고로 가청 주파수는 20 Hz 에서 20 kHz 까지. (사람마다 미세하게 다르겠지만) 그런고로 mp3 의 설계는 참 합리적으로 된 셈이다. 그리고 사람이 낼 수 있는 목소리는 300 Hz 에서 3.4 kHz 까지.
이 그림에서 색상이 나타내는 것은? 파워에 로그를 취한 값이다. (파워의 차이는 눈에 보이는 것보다 큼!)
그런데.. 이 그림은 워낙 범위가 넓어 아이유가 낼 것같은 목소리 주파수 대역이 잘 보이지 않는다. 확대해본다.
이제 어떤 패턴이 보이기 시작한다. 0.7 kHz, 1.4 kHz, 2 kHz 주변의 주파수에서 아주 강한 파워를 보여주고 있고, 3단 부터의 계단형식도 뚜렷히 보이고 있다. 이 계단 구간만 다시 확대해본다.
그런데 뭐가 진짜일까?
처음에는 가장 강한 파워를 보이는 주파수가 fundamental이라고 생각했다. 그러나 댓글로 지적해주신 여러 분들의 의견을 참고하고, 또 실제로 자료조사를 해보니, 아무리 여자 가수라도 2 kHz를 내는 건 무리-_-. (그런데 왜 가장 강한 파워가 나오는지는 아직도 의문이다)
또, 고조파(배음)는 가장 낮은 주파수를 기본으로 정수배로 발생하니까, fundamental은 700 Hz 근처가 맞다고 결론지었다. 실제로 피아노 소리를 들어보니 막귀인 나에게도 얼추 맞는 듯 느껴졌다. 2 kHz 대역은 뭐, 이건 사람으로는 불가능한 수준.
지적해주신 분들께 모두 감사드린다.
700 Hz 부분만 확대하였다.
가로축, 아니 왼쪽 축이라고 해야하나? 왼쪽 축은 초 단위의 시간의 흐름을, 오른쪽 축은 kHz 단위의 주파수를 나타낸다. 이로써 1단 부스터는 2초에서 8초까지 약 6초, 2단 부스터는 8초에서 10초까지 약 2초, 3단 부스터는 10초에서 12초까지 역시 2초 동안 분사(!)된다는 것을 확인할 수 있다.
그렇다면 각 단계는 정확히 몇 Hz 일까?
위 그림을 주파수축으로 다 더하면 아래와 같이 볼 수 있다.
정확한 수치는
- 1단 부스터 : 656.76 Hz
- 2단 부스터 : 699.83 Hz
- 3단 부스터 : 742.90 Hz
임을 확인하였다. 물론, 사람은 신디사이저가 아니기 때문에 6초나 되는 긴 시간 동안 고정된 주파수를 낼 수는 없지만 평균적인 결과가 그렇다는 것이다. 하지만 눈으로 보아도 주파수가 직선으로 지속되는 것을 볼 수 있다. 프로 가수니까 가능한 일이겠지.
그런데 주파수를 숫자로 봐서 어쩌자는 것이냐! 그러므로, 우리에게 좀더 친숙한 도레미파 음계 표현방식으로 보겠다.
잠시 다른 이야기를 해보자면, 피아노의 정가운데에 있는 '도' 음. 이것의 이름은 C4 이다.
그 오른쪽 '레'는 D4, '미'는 E5, ... 식으로 나아가서 '라'인 A4는 정확히 440 Hz 이다. 그리고 한 옥타브 위의 '라' A5는 880 Hz 이다. 이와 같은 규칙으로 각 피아노 건반 별 주파수를 구해보면 그것이 등차수열이 아님을 알 수 있다. 어쨌든, 아이유의 3단 부스터는 어느 음에 해당할까. 정답은 아래 그림에 보인다.
각 단계는,
- 1단 부스터 : 656.76 Hz = 659.26 Hz (E5 '미')
- 2단 부스터 : 699.83 Hz = 698.46 Hz (F5 '파')
- 3단 부스터 : 742.90 Hz = 739.99 Hz (F#5 '파#')
로 놀랄만큼 일치한다. 정확히 반음씩 올린 것이다. 아이유, 장하다.
(단, 본 분석에 사용한 STFT의 주파수 해상도는 5.38 Hz에 달하는 것을 감안하여야 한다.)
음악의 세상에서는 다음과 같은 약속이 되어있다고 한다.
"1옥타브 라 = piano A4 = 440 Hz"
이 규칙에 따라 정리하면 다음과 같다.
1옥타브 라 = piano A4 = 440 Hz
2옥타브 라 = piano A5 = 880 Hz
2옥타브파# = piano F#5 = 739.99 Hz (아이유, 좋은 날)
2옥타브 솔 = piano G5 = 783.99 Hz (스틸하트, She's gone)
3옥타브 파 = piano F6 = 1396.91 Hz (조수미, 밤의 여왕 아리아)
3옥타브 라 = piano A6 = 1760 Hz
4옥타브 라 = piano A7 = 3520 Hz (피아노 끝에서 세번째 흰 건반)
그러니까 F#5 (2옥타브 파# = 그런데 실용음악에서는 통상 3옥타프 파#이라고 한다.)가 그렇게 높은 음은 아니다.
오페라 <밤의 여왕>의 아리아 부분의 가장 높은 음이 'F6' (3옥타브 파 = 통상 4옥타브 파)이고,
스틸하트의 <She's gone>의 가장 높은 음이 'G5' (2옥타프 솔 = 통상 3옥타브 솔)이라고 하니까..
관건은 13초 동안의 긴 호흡와 음정 유지 능력이라고 봐야하지 않을까.
결론 : 아이유 만세. 자게인 만세.
추신 : 과학적, 수학적 오류가 있으면 알려주시길 바랍니다.
사사 : 사랑하는 여자친구님께 감사. 내가 밥도 안 먹고 이걸 쓴 줄 알면 혼날까봐 일부러 쓰는 건 아님.
아이폰에 사진을 이용한 전화 단축아이콘 '직접' 만들기
구루님의 웹 어플리케이션이 며칠 전 올라왔다. http://xguru.net/538
기존에, 단축아이콘 어플이 앱스토어에 올라와 있기는 했지만,
단축아이콘 어플 두어 개까지는 무료이나 그 이상은 돈을 주고 사야하거나,
디자인이 촌스럽거나 하는 단점이 있었다.
그러나 구루님의 새 서비스(?)를 사용하면 자신이 원하는 그림파일을 이용해서 단축아이콘을 만들 수 있다.
아이폰 내 사파리의 즐겨찾기 기능을 이용하는 것이다.
어떤 페이지(html)에 아이폰用(사파리用) 아이콘이 선언되어 있다면, 그것을 이용해서 홈 화면에 단축 아이콘을 만들어준다. 선언되어 있지 않다면, 사파리가 알아서 스크린샷을 아이콘으로 사용한다. (favicon이랑 비슷한 기능이다.)
심심하던 차에.. 어떤 식으로 만들었는지 살펴보았다. YUE님의 블로그 포스팅 http://www.yue.co.kr/92 을 많이 참조하였다.
일단 아이콘을 넣어주는 건 간단하다.
해당 html의 header 속에
<LINK rel=apple-touch-icon href="그림주소">
를 넣어주기만 하면 된다. (사파리 外 브라우저에서는 무시된다.)
전화는 어떻게 걸 수 있는 것인가? 역시 header 속에
<meta http-equiv='refresh' content='0;url=tel://전화번호'/>
를 넣어주어 tel:// 이라는 프로토콜 사용하도록 한다. 당연히 데스크탑 브라우저에서는 무용지물.
위 두 코드를 이용하여 아래와 같은 html 페이지를 작성한다. ('전화번호', '그림주소', '화면 상 내용'을 알맞게 채워넣어야 한다.)
<html><head><meta name="viewport" content="width=device-width"/><meta http-equiv='refresh' content='0;url=tel://전화번호'/><link rel="apple-touch-icon" href="그림주소"/></head><body>화면 상 내용</body></html>
이 페이지를 어디 서버에 올려넣고, 아이폰으로 접속한 다음, '홈 화면에 추가' 기능을 사용하면 되는 것 아니냐고? 맞다.
그러나, 당연하게도, 이 페이지가 위치한 서버에 접속해야하기 때문에 데이터 요금이 발생하게 된다. 그렇다면, 이 html파일 자체를 아이폰에 집어넣을 순 없을까?
없다. 그래서 꼼수를 쓴다. 주소입력줄에 아예 저 코드를 다 넣어버리는 것이다. 아래의 코드와, 위의 코드를 붙여 한 줄로 만든다.
data:text/html;charset=utf-8,
아래와 같이 된다.
data:text/html;charset=utf-8,<html><head><meta name="viewport" content="width=device-width"/><meta http-equiv='refresh' content='0;url=tel://02-000-0000'/><link rel="apple-touch-icon" href="그림주소"/></head><body>화면 상 내용</body></html>
아래의 코드를 긁어서 사파리 주소입력줄에 붙여넣기해본다. 전화번호와 주소 등을 알맞게 채운 예제 소스를 아래 만들어놓았다.
data:text/html;charset=utf-8,<html><head><meta name="viewport"
content="width=device-width"/><meta http-equiv='refresh'
content='0;url=tel://02-730-5800'/><link rel="apple-touch-icon"
href="http://www.president.go.kr/kr/podcasts/main_banner/logo_1267071526.gif"/></head><body>청와대로
전화 걸기</body></html>
통화버튼을 누르지는 마시라. 정말 청와대로 연결된다. 사파리 하단의 + 버튼을 눌러 '홈 화면에 추가'를 눌러보시라. 진짜로 청와대 로고가 뜰 것이다. 청와대가 한 거 아니다. 내가, 또는 그대가 지정해준 거다.
하지만, 아무리 이렇게 페이지 자체를 주소입력줄에 통채로 넣는다 하더라도, 이미지 파일은 어쩔 수 없는 게 아닐까? 그렇다. 그래서 아예 이미지까지 주소입력줄에 넣어버리자. 그림파일 자체도 문자로 변환이 가능하다. base64 인코딩을 이용하면 말이다.
base64에 대해서는 다음 링크를 참조하라. http://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%8A%A464
예를 들면 이렇다.
사람은굶고쥐는살찐다 ↔ u+e298C6sb6w7cHjtMK77MLwtNk=
그림파일도 가능하다. 어떻게? 무슨 툴을 이용해서? 괜찮다. 인코딩을 제공하는 페이지가 있다. 다음 링크에 가보자. http://www.greywyvern.com/code/php/binary2base64
바이너리 파일을 base64로 인코딩해준다고 되어있지만, 다행히도 jpg, gif 같은 그림파일도 지원한다. 위에 예로 보였던 청와대 로고를 base64로 인코딩한 결과는.. 엄청나게 길다. 아무렴, 그림을 문자로 바꿨는데.. 여기에 보이기엔 너무 길다. (그래서 필요이상으로 큰 사진을 이용하면 낭패)
어쨌든 그것을 '그림주소'로 치환하여 완성된 코드를 만들고, 이메일 등으로 보내서 다시 아이폰 사파리에서 주소입력줄에 붙여넣기하면 완성이다. 이 방법을 이용하면 데이터요금이 전혀 나가지 않는다.
'연구실'은 구루님의 서비스를 이용해서 만든 것이고, '아이융'은 위의 코드를 이용해서 직접 만든 것이다.
구루님의 서비스 http://xguru.net/538 를 이용하면 훨씬 편하다. 내부 로직은 거의 동일할 것으로 예상된다.




