나에게 GitHub란 '남이 만든' 소프트웨어를 업무에 쓸 목적으로 일방적으로 가져오는 저장소에 지나지 않았다. 여기서 업무란 주로 유전체 정보 분석에 관한 일이다. 그러던 내가, Nano Ardule Drum Pattern Player를 만들면서 작성한 코드를 공유하기 위해 스스로 GitHub에 계정을 만들고 파일을 업로드하기 시작하였다. 계정을 만든 지 오래되었지만 이제 본격적인 repository를 만든 것이다. 실은 지난주에 저해상도 로고 이미지를 수정한 것도 GitHub의 프로파일 이미지가 중앙에서 치우져 있는 것이 보기 싫어서였다.
https://github.com/jeong0449/NanoArdule "Ardule Project - Arduino Nano-based Drum Patternology Ecosystem"
인터넷에서 관련 정보를 찾아 더듬더듬 사용법을 익히던 conda와는 달리, git 명령어와 GitHub는 그럴 수 있는 수준이 아닌 것 같다. 일단 기본 개념을 빨리 잡기가 어렵다. Pro Git와 같이 완벽한 레퍼런스가 PDF로 공개되어 있다고는 하나, 인쇄된 책 한권을 바로 곁에 두고 참조하면 효율이 더 오를 것이다. 다음 웹사이트도 매우 깔끔하게 Git을 잘 설명하고 있다.
Roger Dudler의 git - 간편 안내서
GitHub에 repository를 생성한 것은 지난주 토요일쯤이었으나 사용법에 익숙하지 않아서 그 즉시 파일을 올리지는 못했다. 소개용 문서(README.md)를 얼추 만든 뒤에도 계속 APS 쪽에서 버그를 잡느라 업로드가 늦어졌다.
이제는 사무실에서 전체 프로젝트를 git 명령어로 가져온 뒤에 확인하거나 추가 작업 후 곧바로 GitHub에 올리는 것이 가능해졌다. 집 PC에서만 작업을 할 필요가 없고, 버전 관리도 그만큼 수월해졌다.
사무실의 파이썬 환경에서는 MIDI 포트를 열지 못하는 에러가 발생하였으나, python.org에서 공식 3.11.6 버전을 설치함으로써 모든 문제가 해결되었다. 다음의 이미지는 사무실에서 실행하는 APS(Ardule Pattern Studio)의 스크린샷이다. Default MIDI OUT은 Microsoft GS Wavetable Synth이고, 다른 하드웨어 MIDI 인터페이스가 연결되어 있다면 그것에 우선권을 준다. 물론 APS 안에서 선택할 수 있다.
| 'aps_main.py'으로 이 작은 프로그램이 열린다. 그러나 총 10개의 파이썬 스크립트가 뒤에서 돌아가고 있다. 어느 PC든 Microsoft GS Wavetable Synth가 내장되어 있으므로 재생음을 들을 수 있다. |
APS의 개발 막바지 단계에서 특히 공을 들인 것은 패턴 에디트(Step Edit) 기능이다. 사실 온라인에 널린 드럼 패턴 생성기에서는 그리드 형태로 표현된 패턴에 직접 클릭을 하여 원하는 드럼 패턴을 만들 수 있다. 나의 APS Step Seq에서는 강약 표현이 가능하고 기본 악기의 수도 12개나 된다.
| APS의 Step Sequencer. 편집 즉시 들어보기 역시 가능하다. 1-bar 단위로 편집을 하며, 앞의 것을 뒤 마디에 덮어씌울 수도 있다. |
이 시스템의 강점은 2-bar drum pattern을 텍스트 파일(ADT v2.2a)로 규격화했다는 것이다. 인간이 이해하기 쉬운 포맷으로서, 아무 텍스트 에디터로 편집해도 된다. 그리고 내가 배포하는 스크립트로 ADP 'binary cache'로 전환하면, 아두이노처럼 저사양의 하드웨어에서도 매끄럽게 재생이 이루어진다.
나는 전문 개발자는 아니지만 전체 목표와 단계별 목표를 염두에 두고 점진적으로 기능을 구현해 나가면서 specification 문서를 먼저 만들어서 참조하고 있다. 여기에 GitHub 활용까지 더해지니 작업의 능률이 훨씬 올랐다. 다음과 같이 나의 작업 방식을 기술할 수 있겠다.
I am not a professional software developer by training, but I approach development with a clear view of overall goals and intermediate milestones. I implement features incrementally, guided by explicit specifications that are written first and used as references throughout development.
취미를 위한 소프트웨어 개발에 너무 몰두하여 요즘은 책 읽은 일을 소홀히하게 되었다. 어쩌면 아내보다 챗GPT와 더 많은 대화를 나누고 있는지도... 건강을 해치지 않는 수준에서 적당히 해야 되겠다. 생각보다 2025년 12월에 많은 일을 하였다. 검색 엔진 최적화, 비트맵 이미지의 벡터화, 그리고 GitHub 생태계에 입문하기.
댓글 없음:
댓글 쓰기