C++ / MFC 연습용 프로젝트 / mp3 플레이어 자작 프로그램

프로그램 실행 파일(*.exe)
nk_player.egg
nk_player.zip

둘중 아무거나 받아도 상관 없음.


↑↑↑소스코드 다운로드 위에 링크 누르세요↑↑↑
-----------------------------------------------------------

가칭 nk_player로 이름을 정한 간단한 mp3 재생 프로그램이다.

연구실에 들어간 기념(...)으로 석사 선배님들이 프로그래밍 실력 향상겸, 실력 체크겸...여튼 겸사겸사 하여 만들게 된 이것.

mp3 프로젝트의 기본 골격은

C언어로 개발 -> 기능 추가 -> C++로 개발 -> 기능 추가 -> MFC로 개발

의 순으로 이루어졌다.

이 블로그에 MFC버젼만 올리는 이유는 간단하다.

C나 C++은 혼자 만든게 아니고, MFC는 혼자 만들었으니까.

...대충 여기까지가 이 프로그램을 개발하게 된 경위 였고, 본격적으로 이 보잘것 없는 프로그램에 대해 살펴보자.


--------------------------------------------------------------------
프로그램 타이틀 : nk_player(가제)
프로그램 구성 : 8.72MB exe파일 하나, 1.2MB fmod dll 파일하나.
프로그램 용량 : 파일 두개 합쳐 10MB도 되지않는 초경량 구성.
사용 방법 : 그냥 exe 파일 실행하고, 마우스 클릭만 할줄 알면 사용 가능
버젼 : 배포 1.0
--------------------------------------------------------------------


실행 화면이다. 뭐, 꽤나 심플하게 생겨먹었다.
대충 어떤 기능들이 들어있는지 나열하면,
기본적인 mp3파일 재생을 위한 재생, 정지, 일시정지, 이전곡, 다음곡 등의 버튼이 달려있고
재생 순서와 반복 여부, 항상위 옵션을 사용하기 위한 체크박스도 있고
볼륨 조절 슬라이드, 음악 위치 조절 슬라이드, 투명도 조절 슬라이드(검정색),
간단한 음악 정보를 표시해주는 텍스트 창(버그 있음),
음악 스펙트럼을 표시해주는 작은 박스
음악목록을 관리하는 리스트컨트롤 등이 있다.

...다 개소리고 그냥 심플한 기본 기능위주로만 탑재했다. 사실은 능력부족임.


여튼, 저기 줄이 좍좍 그어져서 뭔가 음악을 추가해야 할 것만 같은 부분에다가 마우스 오른쪽을 냅다 후려갈기면 저따구로 생겨먹은 컨텍스트 메뉴가 등장하는데, 여기서 모든 음악 목록의 추가 삭제를 한다.


위 스샷은 [파일추가]를 눌렀을 때 볼 수 있는 윈도우 창이다. 시프트키와 컨트롤키를 사용하여 무려 '다중 선택'이 가능하다. 별거 아니지만 만드는 사람 입장에선 고생 꽤나 했음.

[폴더추가]를 누르면 폴더 선택창이 뜨고, 선택된 폴더 밑에 있는 음악들이 전부 추가된다. 귀찮으니 이쪽 스샷은 패스.


음악을 재생중인 모습. 당연히 캡쳐화면이므로 소리는 안들린다.


저기 검정색 슬라이드를 움직이면 투명도를 조절할 수 있다. 바로 이렇게. 투명도를 조절해봤자 '항상 위' 기능이 없으면 말짱 꽝이기 때문에 저 기능도 추가했음.

-----------------------------------------------------------

궁극적으로 이 MFC 프로그램을 만들면서 생각했던거는 딱 하나다. 내가 써도 불편하지 않을 퀄리티로 만들자!

결과적으로는 반은 성공, 반은 실패이다. 프로그램 자체는 정말 내 입맛에 딱 맞추어서 제작했지만, 정작 노트북 사운드 카드가 고자라서 노이즈가 심해 음악은 스마트폰으로 듣는다.

뭐, 부가적인 기능으로는 프로그램 몸통을 잡고 드래그가 가능하다거나, 자석 윈도우라고 바탕화면 가장자리에 가면 찰싹찰싹 달라붙는다는 정도?

-----------------------------------------------------------

이 프로그램을 적극 추천해주고 싶은 사용자는 다음과 같다

1. 곰플레이어, 알송, 윈앰프 기타 등. 설치가 필요한 프로그램을 사용하기가 귀찮은 사람
  -> 무설치로 그냥 실행한 하면 된다. 초간편!

2. ......그외 이유는 더이상 딱히 없음
  -> 기타 상용 플레이어들에 비해서 당연하겠지만 이래저래 많이 떨어진다. 무설치라는것이 장점임

-----------------------------------------------------------

이 프로그램에 알려진 버그, 및 내 맘에 안드는 부분

1. 프로그램을 드래그 앤 드롭 하면 가끔 타이틀바 오른쪽 위에 최소화, 최대화, 종료 아이콘이 튀어나온다
  -> 다시 몇번 드래그하면 원상태로 복귀되기 때문에 그냥 냅둠
  -> NCpaint 코드를 수정하면 될듯 하나 치명적인 오류는 아니기에 그냥 디버깅 패스

2. 슬라이드 바가 투명이 아닌 이유
  -> 알아본 바로는 MFC 자체 슬라이드 컨트롤이 고자라는 소문이 있음
  -> 슬라이드 자체를 새로 만들면 해결되지만, 이 역시 귀찮아서 그냥 씀

3. 슬라이드를 조절했다가, 다른 버튼을 조작할 때 음악이 조금(약 1초) 뒤로 밀리는 현상
  -> 이것 역시 2번과 내용과 관련 있음

4. mp3 파일 태그정보 획득시 비트레이트 오류
  -> 저기 위 재생중 캡쳐 화면에 448kbps라는 비트레이트가 보이는가? 세상에 저딴 비트레이트를 누가 쓴단 말인가
  -> 태그정보를 읽어오는 클래스가 약간 병맛이라 이걸 수정해야 하는데 id3태그 정보 뜯어보기가 너무 힘들어서 포기

-----------------------------------------------------------

이 프로그램의 제한 사항

1. 확장자가 *.mp3  가 아닌 파일은 재생 불가

2. FMOD 라이브러리를 사용했으므로 무료배포는 가능하나, 돈주고는 못팔게 됨
  -> 누가 사지도 않거니와, 혹시나 돈 받고 팔려고 하면 FMOD 라이센스 비가 더 나올듯ㅋ

-----------------------------------------------------------

디버깅 및 추가적인 부가기능 업데이트 계획

1. 위의 나열한 제한 사항 및 버그, 내 마음에 안드는 부분들 전부 수정
  -> 프로그램 만드는 것 보다 더 오래 걸릴거라고 예상 됨

2. 스킨 선택 기능
  -> 지금은 그냥 기본 스킨을 쓰지만, 추가적으로 리스트 박스같은거 만들어서 테마별로 스킨 바꿀 수 있게 해줌

3. 가사 출력 기능
  -> 사실 연구실에서 진행한 프로젝트 최종 버젼에는 가사 기능이 달려있는데
  -> 이게 ODBC 를 사용해서 마구잡이로 때려넣은 괴랄한 시스템이 되버림.... 배포 버젼에 넣기 뭐해서 그냥 빼버렸음
  -> 곰서버나 알송서버에서 싱크 가사를 받아온다던데 이쪽은 공부가 부족한 관계로 지금 당장 하고 싶어도 불가능
  -> mp3 태그 내에 포함되어있는 가사를 그냥 출력하는 기능(스마트 폰 음악 플레이어 처럼)이라도 넣고 싶었지만...
  -> 빌어먹을 id3태그가 조오오오오옹오오온나게 어려운 관계로 이것도 공부를 좀더 해봐야 할듯

-----------------------------------------------------------

결론

의욕적으로 만든거라 의욕적으로 포스팅하려고 했는데 급 의욕상실....대충 이쯤에서 줄이고 궁금한 사람은 직접 받아서 써보면 되겠다.

개인적으로 생각하는 완성도가 80% 정도지만 그냥저냥 쓸만함ㅋ

-----------------------------------------------------------

2013-10-23
 -> 확장자 ZIP으로 압축한거 하나 더 올림.

2015-06-19
 -> 소스코드를 원하는 댓글이 많아서 프로젝트 통째로 배포함.
 -> 기본적으로 컴퓨터에 FMOD가 없으면 빌드가 불가능하니 참고.
 -> FMOD는 인터넷에서 알아서 구해주세요...



덧글

  • bergi10 2013/10/05 11:38 # 답글

    zip으로 올려주세요~
  • 뉴공 2013/10/23 14:28 #

    올렸습니다~
  • 2013/12/08 11:18 # 답글 비공개

    비공개 덧글입니다.
  • 2014/02/03 14:28 # 비공개

    비공개 답글입니다.
  • 랄라베이비 2014/02/17 21:21 # 삭제 답글

    아주 깔끔하고 좋네요~

    안녕하세요 저도 MFC를 공부하는 공돌이입니다.

    다름이 아니라 프로그램 하나 만들어보고 있는데 딱 제가 필요한 기능이 보여서 질문 좀 드리려구요

    리스트컨트롤 투명화 하는거랑 다이얼로그 배경 입히는거 코드 좀 알려주시면 안될까요?

    구글에서 찾아보고 했더니 배경은 오른쪽끝이 시커멓게 짤려서 나오고

    리스트 투명하게 했더니 리스트 공간만큼 다이얼로그 배경이미지를 다시 그려서 문제입니다.

    작성자님처럼 깔끔하게 표현하고 싶은데 조언 부탁드리겠습니다.
  • 뉴공 2014/03/05 17:24 #

    리스트 컨트롤은 투명화한게 아니고 뒤에 그림파일로 배경을 삽입한것입니다.
    포토샵 같은 툴로 배경화면을 적절히 잘라 흐림효과를 준 뒤에 배경으로 삽입하면 저렇게 나올 수 있습니다.

    다이얼로그 배경을 입히는것은 더블버퍼링을 사용하였습니다.
    에딧컨트롤 같은 여러 컨트롤들의 배경을 투명으로 지정하면 잔상이 생기는 문제가 발생해 찾아보니 더블 버퍼링을 사용해야 한다더군요.

    더블버퍼링 관련해서는 좋은 정보가 많으니 한번 찾아보시는걸 추천합니다.

    도움이 되었을런지는 모르겠네요. 공부 열심히 하세요 ^^
  • 2014/05/09 14:16 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 은유 2014/05/09 14:20 # 삭제 답글

    로그인이 있어야 비공개 덧긋을 볼 수 있는 걸 이제 알았네요 ㅠㅠ
    아이디 없이 올리게 되어서 제가 올린것인데도 비공개 덧글을 볼 수 없을 거 같아요 ㅠㅠ;;
    괜찮으시다면 답글 요기에 부탁드려봅니다.
  • 2014/08/26 13:38 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 장준용 2014/09/04 19:18 # 삭제 답글

    eqwkd@naver.com
    mp3플레이어 만들어 보려고
    공부해보고 있는데 혹시 이거 소스 파일좀 보내주실수 있을까?
  • 2014/09/29 07:02 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 꿈은이루워진다 2014/10/12 13:07 # 삭제 답글

    재생, 정지만 구현해봤는데 일시정지랑, 목록쪽 소스 코드좀 부탁드려도 될까요...?
  • 프로그래머 2015/06/07 17:32 # 삭제 답글

    이거혹시 참고하고 싶은데 소스를 보내주실수 있나요??
    csh3830@naver.com
  • 2015/11/05 15:03 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 2015/11/05 15:04 # 삭제 답글 비공개

    비공개 덧글입니다.
  • GUI 2015/11/06 13:01 # 삭제 답글

    gui 그리는 방법 좀 알려주세요
  • 뉴공 2015/11/12 17:46 #

    프로젝트 파일 통째로 공개하였으니 참고바랍니다.
  • 123123 2015/11/16 23:49 # 삭제 답글

    저 제가 동영상 플레이어를 만들고 싶은데
    동영상이 하나가 종료되면 다음 동영상을 재생시키려고하는데
    동영상이 종료된 이벤트를 어떻게 받아와야 되나요??
    압축된거 풀어서 찾아 봤는데 어느 부분인지를 모르겠네요..
  • 뉴공 2015/11/20 16:21 #

    이 프로젝트는 FMOD를 사용하여 동영상과는 관련이 없습니다.
    FMOD는 사운드 재생 관련 라이브러리이기 때문에 아마 동영상은 지원하지 않는걸로 알고 있습니다.
    동영상 쪽은 이 프로젝트 말고 다른 자료를 찾아보셔야 할듯 싶습니다.
  • 하잉~ 2018/06/25 17:15 # 삭제 답글

    MFC에 대해 공부하고있는 공돌이입니다. 소스코드 보내주실 수 있으신가요?? 부탁드립니다 ㅠㅠ
    kjy9310@naver.com
댓글 입력 영역



위젯 광고_구글 애드센스

통계 위젯 (화이트)

46
73
190934