◆개인 프로젝트◆ Typesound
Typesound
피아노 웹이다.
많은 악기를 지원해서 주로 신디사이저 웹이라고 소개하기도 했다.
운영 플랫폼(서비스 종료)
PC, Mobile 반응형 : www.typesound.net
Git : Github
사용 기술
| 사용 기술 | |
|---|---|
| 호스팅 | iwinv(국산 클라우드 업체) |
| OS | Ubuntu, |
| Client | ReactJS(Typescript) |
기간
- 운영기간
2019.09.04 ~ 2020.01.13 - 제작기간
2019.08 ~ 2019.09
아래 사진들은 iwinv에서 실제 서버를 임대하고 도메인을 구입해 연동한 기록이다.


소개
차별점
- 오른손(하늘색) 연주, 왼손(갈색) 연주를 양손으로 따로 입력할 수 있음

왼손 반주 패턴을 3가지 지원함
왼손 연주시 chord 마다 해당하는 소리를 mapping 해놓음
/src/lib/chordNotes.ts
1 | const chordNotes: { [x: string]: TSchordEnum[][] } = { |
개발 과정
음원 구하기
개발을 시작하기 전 우선 순위는 모든 옥타브를 아우르는 피아노 음원을 구하는 일이었다.
몇 일에 걸쳐 찾던 중, 우연히 fit이 맞는 github repository를 발견했다.
https://github.com/gleitz/midi-js-soundfonts
midi의 음원을 pre-rendering하였고, MIT 저작권으로 제공한다.
그리고 가장 큰 장점은 매우 많은 악기를 전 옥타브에 걸쳐 모아놓은 점이다.
(Thanks to gleitz!)
reactJS의 사용 이유
- 기존의 피아노 웹들을 보면 대부분 flash를 사용하였고, 그나마 최신 웹이 jquery를 사용했다.
- ReactJS의 “상태 관리”라는 메인 컨셉을 활용하여 개발하면 차별성이 있을 것이라고 생각했다.
- “키가 눌림”을 custom hook으로 정의하여 문서객체마다 jquery onclick 이벤트를 연결할 일을 피했다.
/src/hooks/useKeyPress.ts
1 | function useKeyPress(targetKey: string) { |
typescript의 사용 이유
typescript는 type이나 enum을 미리 정의하여 javascript를 더 strict하게 쓸 수 있고
parameter의 interface를 정의하여 메서드 호출 시점에 내 입맛대로 정의한 parameter를 시각적으로 알 수 있다.
이 2가지를 해두면 개발 과정에 있어 타이핑시 자동예측을 해주어 개발속도가 빨라지며, 협업을 할 경우에도 더 유리해진다.
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
