Python과 VLC로 음악 퀴즈를 만들어서 개선된

6676 단어 PythonVLC
이 글은 N 고등학교 (1) Advent Calendar 2020 셋째 날의 글이다.
작년에 이어 올해도 참가할 예정이다.
저는 지금 3학년 학생입니다. 학교 수업을 하고 있습니다.올해도 지난해와 마찬가지로 프로그래밍 시간을 이용해 프로그램을 짜서 놀았다.
내년에 S고등학교 PV 수·괜찮은 수 대결 하나요?볼만하다.
이 글에서는 제목 그대로 파이톤과 VLC 제작의 개선된 음악 질의응답을 다룬다.작년보다 더 사랑하는 것 같아요.
이미 해봤어요.개선해 봤어요.의 기사가 투고되었지만 이번에는 더 자세한 추억 속에서 써보고 싶습니다.

음악 퀴즈 만드는 계기.


2020년 4월, 세계는 긴급사태 선언의 절정에 처해 있다.
게임센터도 영업 중단이 많아 음악 게임 플레이어로서는 힘든 시기다.
오락을 찾다가 갑자기 음악 게임의 어쿠스틱 음악을 발견했다.
이 CD로 전주 퀴즈를 진행하면 재밌겠죠?그렇게 생각해요.
처음에는 부모님께 스마트폰으로 무작위로 음악을 틀어달라고 부탁했다.
가능하지만 제삼자가 없으면 못 하기 때문에 하고 싶을 때 못 하는 문제가 있다.
저기, 컴파일러 자동화 거기면 되잖아?나는 이렇게 생각하기 시작했다.

어떻게 할 것인가를 고려하다


프로그래밍 언어


이것에 관해서는 처음부터 파이톤의 선택이었다.
파이톤은 개인적으로 가장 자주 사용하는 언어이기 때문이다.

음악 재생하는 방법


그냥 아무렇게나 하는 것찾다도 별로 방법이 없다.
그 중에서 나는 VLC의 수단을 취했다.

왜 VLC입니까?


나는 항상 CD에서 flac로 읽는다. 그 외에 구글플레이뮤직과 recoChoku 등이 구입한 mp3, wav, m4a 등도 있다.
당분간 웨이브와 mp3는 물론이고 flac와 m4a가 재생할 수 있는 도서관이 많지 않을 것 같습니다.
그런 점에서 VLC의 경우 대응하는 코덱도 풍부해 재생이 불가능하지 않을 것으로 판단했다.
지금 생각해보면 수수께끼를 푸는 음악이 mp3로 바뀌는 것이 비교적 쉽다.

방법을 결정하다


애초 다음과 같은 내용으로 제작하기로 했다.
  • 같은 디렉터리에서 음악 파일을 무작위로 선택
  • 재생 10초 후 곡명 입력
  • 3자 이상 일치 시 정답으로 간주
  • 정확히 일치하는 경우 완벽
  • 향상을 위한 사전 준비 명령
  • 이 방법으로 만든 원본 코드가 여기 지스트.에 실렸다.

    실제 사용 후 개선


    디스코드는 친구의 협조로 전화를 받으면서 내부 질의응답에 참여했다.
    분위기는 상당히 뜨거웠지만 여기 기사.에서 보듯이 개선해야 할 부분도 몇 개 있었다.
  • 재방송 불가
  • 대소문자 구분
  • 올바르게 표시된 후 순식간에 시작
  • 전주의 정음 부분이 긴 노래가 있다
  • 몇 번 하면 기억해
  • 판정 오류 있음
  • 타이틀이 긴 곡이라도 3글자면 정답
  • 이러한 문제점을 개선하기 위해 포기와 재방송 등 기능을 명령으로 정리해 판정을 3글자에서 1/3로 바꿨다.
    또 네 번째 문제를 해결하기 위해 전주 퀴즈를 포기하고 노래의 랜덤 부분을 틀었다.
    이 해결된 코드들은 여기 지스트. 위에 놓여 있다.

    한층 더 개선하다.


    곡명 직접 문제


    위에서 소개한 기사에서'곡명을 직접 얻고 싶다'고 서술했다.
    원래 음악 파일에는 곡명, 아티스트 이름 등의 매개 변수가 존재한다.
    예를 들어, Windows 탐색기에서는 다음과 같습니다.

    그럼 "TiamaT:F minor"라는 노래가 존재한다.그러나 파일 이름은 사용할 수 없습니다:.
    위 이미지와 같이 파일 이름은 TiamaT-Fminor.flac입니다.
    파일 이름에서 곡 이름을 얻는 방법에서는 이 노래를 수수께끼에 포함시킬 수 없습니다.
    그렇다면 이 곡명은 어떻게 지어야 좋을까요?

    Windows 속성에서 (실패)


    파일을 마우스 오른쪽 버튼으로 클릭하고 메뉴에서 등록 정보를 선택하고 세부내용 탭을 열면 이렇게 표시됩니다.

    여기에도 노래 제목과 가수 이름이 기재되어 있다.
    만약 방법을 강구하여 이것을 얻을 수 있다면 좋지 않겠는가?이렇게 생각하다 보니 얻는 방법을 찾았다.
    결과적으로 여기.처럼 Powerrshell을 통해 속성에 접근하는 방법은 있는 것 같지만, 파이톤의subprocess 모듈을 사용해 보았지만 어디가 잘못되었는지 동작을 하지 못하고 좌절되었다.

    mutaagen 모듈 사용(성공)


    자세한 친구에게 울며불며 하소연하던 중'무타곤 모듈을 쓰면 되지 않겠느냐'는 답변을 받았다.
    mutaagen은 오디오 메타데이터를 처리하는 파이톤 모듈입니다 (참조: https://mutagen.readthedocs.io/en/latest/.
    It supports ASF, FLAC, MP4, Monkey’s Audio, MP3, Musepack, Ogg Opus, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True Audio, WavPack, OptimFROG, and AIFF audio files.
    지원하는 파일의 종류도 풍부하다.가능하다면 처음부터 이걸 알고 싶었어요...
    처리된 서류가 여러 가지가 있기 때문에 참고여기.로 실시했습니다.
    여기서는 종류mutagen.File()를 구별하지 못하더라도 먹이면 된다.
    참고로 이 방법도 연예인의 이름을 얻을 수 있기 때문에 힌트 중 하나를 넣기로 했습니다.

    틀렸을 때 얼마나 맞는 질문이 있는지 알고 싶어요.


    'Lethaeus'라는 노래가 있다.
    놀 때도 이 곡이 몇 번 나왔지만 기억하기 어려우면 다들 틀릴 거예요.
    그리고 분명히 한 글자만 다른데도 "그게 전혀 다른 곡이냐"고 착각해 답변에서 멀어지는 경우도 심심치 않게 있다.
    그래서 입력한 답안과 정답이 얼마나 다른지 알려줘야 한다고 생각합니다.
    찾아보니 표준 모듈difflib에서 찾고 있는 물건이 있었다.
    배터리인클로드(Battery included) 마인드를 표방하듯 알차다.

    질문


    곡명에 기호가 들어가면 귀찮아요.

    ♡"와"♥」다르지만 그 차이점을 하나하나 짚어내면 즐길 수 없지 않을까요?내 생각엔
    실상으로 리플렉스 방법은 쇠사슬처럼 연결되어 여러 가지 문자를 없애거나 변환한다.
    이 밖에 정확한 판정을 1/3에서 1/2로 바꾸는 등 애플릿 업데이트도 친구의 지적을 받았다.
    위에서 몇 가지 개선된 소스 코드여기 지스트.를 열거했다.

    해보는 소감.


    처음에는 스스로를 즐겁게 하기 위해 했지만 친구들과 즐겁게 피드백을 받고 나니 점점 보이지 않는 부분도 보였다.
    프로그래머들은 모두'출력이 중요하다'고 입을 모았지만, 이를 실감했다.
    만든 건 어떤 형태로든 발표해야 하지 않을까.
    12월이 막 시작되었다.빈 advent 달력에 미끄러질 기회가 있습니다!
    이참에 꼭 내보내 보세요.
    그럼 이틀 후N 고등학교(2) Advent Calendar 2020에 다시 만납시다.
    내일은 @Souken521씨의'홈키트 대응기기+Home Bridge+Nature Remo로 집을 편안하게 해주면'입니다.스마트폰을 동경했죠.

    좋은 웹페이지 즐겨찾기