| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Mac
- macos
- high sierra
- 에어팟
- 업데이트
- 터치바
- asahi linux
- Linux
- 3D프린터
- sierra
- mojave
- Fedora
- 애플
- 3D 프린터
- 터미널
- 맥북프로
- AirPods
- asahi
- Tarantula
- 시에라
- catalina
- 아이폰
- 컨트롤러
- 맥
- IOS
- beta
- 모하비
- tevo
- 버그
- iOS 13
- Today
- Total
elsa in mac
레트로 감성 돋는 Cassette Player 데스크탑 앱을 만들고 있습니다. #2 본문

이 포스트는 Fedora Linux를 기반으로 작성되었습니다.
길게만 느껴졌던 2025년 추석 연휴가 오늘로 끝이네요 ?
다들 편안하고 힐링할 수 있는 시간들이 되었나 모르겠군요.
긴 연휴 동안 저녁시간에 짬을 내어 조금씩 개선을 해 나가고 있습니다. 프로젝트 목표가 Simulator이다 보니, 기본적으로는 카세트 플레이어에 대한 기술적/기능적 특성을 잘 파악하는 것이 중요합니다. 인터넷이 올라와 있는 많은 자료들을 조사하고 공부했습니다.
프로그램을 1인이 개발하는지 아니면 팀으로 개발하는지에 따라 프로젝트의 진행단계와 절차가 다르겠지만, 일반적으로는 프로젝트이 목표와 개념을 확립하고, 기능과 성능 목표의 수준을 정한 다음 UI 다지인을 스케치합니다. 여기에 사용자의 사용경험을 정립하는 UX를 결정하고, 이것이 결정되면 구현에 들어가죠.
기존의 Design이 목표와 맞지 않는 관계로 디자인부터 다시 해야 했습니다. 디자인 툴은 Linux를 사용하는 관계로 Adobe나 macOS의 sketch 같은 것은 사용하지 못하니, Linux에서 가용한 Lunacy를 이용했습니다. log-in 같은거 필요 없이, off-line을 사용할 수 있는 장점이 있습니다. 요즘 핫한 Figma과는 비견하기 어렵겠으나. 기본적인 Design Tool이 갖고 있는 대부분의 Interface를 갖고 있고, 기본적으로 대부분의 기능을 무료로 사용할 수 있는 cross-platform design tool 입니다. 배우기 쉽고 직관적이며 기능도 꽤 만족스럽습니다. X11 전용이므로, Wayland 기반 사용자라면 XWayland를 사용해야 합니다.

카세트테이프를 구성하는 요소들을 다지인 하고, 이를 실제 앱 개발에서 방법과 절차를 정해서 통합합니다.
기본적으로 투명한 인터페이스를 갖고 있습니다. 보통 앨범을 폴더단위로 구분하여 관리하므로 해당 앨범 폴더에 cassette-cover.png 파일로 cover 이미지 파일을 넣어 놓으면 해당 폴더를 로딩할 때, 이미지 파일을 가져와 masking 하여 보여 줍니다.

그러면, 위와 같은 모습을 볼 수가 있죠. 한번은 번거롭지만 cover를 만들어 놓으면 다음부터 앨범을 로딩할 때, 이쁜 cover를 앨범별로 볼 수 있으니 괜찮을 것 같습니다. 원래는 음원 내부의 Tag에서 Album Cover를 읽어와서 Skin을 입히는 방법을 적용하려 했는데, 아직 몇 가지 기술적인 문제가 있어서 추후에 반영을 해야 할 것 같습니다.

컨트롤러는 mouse 이벤트를 이용하여 반응형으로 보이거나 감출 수 있도록 했습니다.
아무리 simulator를 지향한다 하더라도, 최소한의 편의성은 있어야 하기에 몇 가지 제한사항과 부가 기능들을 넣었습니다. 원래 물리적인 카세트테이프는 Side A와 Side B 중 전체 길이가 긴 것을 기준으로 테이프의 길이가 결정됩니다. 그래서 그 시절에는 앨범을 만드는 제작사에서 이 둘 간의 gap이 크지 않도록 각 곡의 play time을 조절했지요. 대부분의 곡들의 끝을 Fade-Out 처리한 것이 그런 이유일 것입니다. 하지만 완벽히 맞출 수는 없어서 Side A가 끝났을 때, Side B로 바꾸면 곡의 처음이 아닐 수 있지요. 그래서 Side를 바꾸면 처음으로 되감아야만 했습니다. 이건 좀 불편하더라고요. 그래서 앱에서는 Side A와 Side B를 완전 독립적으로 구분해서 Side A의 끝에서 Side를 바꾸면 Side B의 처음에서 시작하도록 했습니다.

Side A/B 에서 Playlist를 확인하고, 원하는 트렉으로 곧바로 선택하여 플레이 할 수 있는 기능을 넣었습니다.

간단한 8밴트 Equalizer 기능을 넣었고요.

.lrc 가사(lyrics) 파일이 있다면, 플레이 시, 아래쪽에 자막을 sync 하여 보여줄 수 있도록 했습니다.
그 밖에 Side가 끝나면 자동으로 뒷면으로 변경하는 Auto-Reverse 기능과 현재 플레이하고 있는 곡을 반복 재생할 수 있는 Repeat 기능, 그리고 Tape의 색상을 바꿀 수 있는 Color Theme 기능을 지원할 예정입니다. 구현 중에 있고요~

- - - - - - - - - -
최초에 예상했던 것보다 디자인도 바꾸고, 기능도 추가하다 보니 완성까지는 좀 더 시간이 걸릴 것 같네요.
과거 턴테이블과 카세트의 시대가 지고 CD가 대세로 자리 잡았던 젊은 시절, 개인적으로 수집해 놓은 CD들을 Ripping 해 놓은 것들이 꽤 많은데, CD는 적절한 시기에 대부분 처분했지만 Streaming 시대가 되다 보니 이것들을 지우지도 못하고 그렇다고 이걸 듣지도 않는 지경이 되어 버렸지요.. 이 프로젝트를 시작하게 된 계기입니다.
기능은 대부분 구현했지만, 성능 최적화, CPU/GPU 렌더링 자원 배분, Linux, macOS, windows에서의 설치 및 사용 검증 등 배포 전에 해야 할 몇 가지 것들이 남아 있습니다. 연휴라 시간이 많아 구현에 많은 시간을 할애 했지만, 이제 연휴도 끝난지라 시간을 내기가 어려우니.. 그래도...
올해 안에는 끝나겠죠 ?
'Linux' 카테고리의 다른 글
| Wayland 환경에서 사용가능한 Tablet지원 Whiteboard 앱 - drawy (0) | 2025.11.15 |
|---|---|
| 가볍고 빠른 웹 브라우저 - Helium (0) | 2025.11.15 |
| 레트로 감성 돋는 Cassette Player 데스크탑 앱을 만들고 있습니다. #1 (0) | 2025.09.27 |
| Manifast V2 지원이 중단된 Chromium v140.x 에서 Ublock Origin 계속 사용하는 팁 (0) | 2025.09.16 |
| Linux에서 Wayland Compositor를 사용하시나요? 그럼 고양이 한마리 들이세요.. - Bongo Cat Wayland Overlay (1) | 2025.08.07 |