소프트웨어 엔지니어 · Kanghyune Kim

소리, 그래픽, 하드웨어가 맞물리는 실시간 소프트웨어를 만듭니다.

브라우저 오디오 엔진과 WebGL 렌더러부터 카메라·프린터·결제 단말이 붙는 키오스크까지, 밀리초 단위 타이밍과 실제 장비가 얽힌 문제를 주로 풉니다. 파서와 엔진을 라이브러리로 나누고, 그 위에 에디터와 데스크톱 앱을 쌓는 방식으로 일합니다.

새로운 협업 제안에 열려 있습니다

6 BMS 툴체인을 이루는 공개 저장소
4K–48K 플레이어·에디터가 지원하는 키 모드
8 채보 파서가 자동 판별하는 문자 인코딩
22 OpenCVSharp·C# 기술 글

01 · 하는 일

타이밍이 틀리면 바로 티가 나는 소프트웨어

01

실시간 오디오와 리듬 게임 엔진

Web Worker 게임 루프, AudioWorklet 믹서, 250 ms 룩어헤드 스케줄링으로 메인 스레드가 멈춰도 박자가 밀리지 않는 플레이어를 만듭니다.

  • Web Audio
  • AudioWorklet
  • Web Worker
  • 판정 엔진
02

하드웨어가 붙는 키오스크 시스템

카메라 제어, 사진 프리셋 렌더링, 포토 프린터 상태 감시, 다국가 결제, 프로세스 워치독까지 매장에서 멈추지 않아야 하는 포토 키오스크를 다룹니다.

  • 키오스크
  • 프린터 SDK
  • 결제 모듈
  • FFmpeg
03

그래픽과 데이터 처리

Three.js·WebGL 렌더링, WebGPU로 VRAM에 JSON을 올리는 캐시, DXF(CAD) 파서처럼 무거운 데이터를 브라우저에서 빠르게 다루는 도구를 만듭니다.

  • WebGL
  • Three.js
  • WebGPU
  • DXF
04

컴퓨터 비전에서 출발

C#과 OpenCVSharp로 번호판 인식과 영상 처리 예제를 만들고 그 과정을 블로그 연재로 정리하며 개발을 시작했습니다.

  • C#
  • OpenCVSharp
  • WinForms
  • WPF

02 · 프로젝트

직접 설계하고 공개한 작업

오픈소스 · 개인 프로젝트

BMS 툴체인

리듬 게임 채보 포맷 BMS를 읽고, 연주하고, 편집하는 도구 일체. 파서·플레이어·에디터를 독립 npm 패키지로 나누고 Electron 데스크톱 앱과 웹 스튜디오가 이를 조립합니다.

  • Shift_JIS, EUC-KR, GBK, Big5 등 8개 인코딩 자동 판별, 원본 인코딩 그대로 다시 저장하는 라운드트립 라이터
  • #RANDOM/#SWITCH 중첩 제어 흐름, #BASE 62, #LNTYPE 2 등 BMS 명세의 까다로운 확장까지 처리
  • Worker 게임 루프와 AudioWorklet 키음 믹서로 탭 전환·메인 스레드 지연에도 박자 유지
  • 960 tick/beat 노트 모델, 실행 취소, 4K–48K+4SC 레인, AI 자동 채보, 오디오 슬라이서
  • CI와 릴리스 워크플로로 데스크톱 앱 배포 자동화, 브라우저용 에디터 번들은 Docker 이미지로 배포
  • TypeScript
  • React
  • Electron
  • Web Audio
  • WebGL
  • Vite
  • GitHub Actions

오픈소스 라이브러리

Json-VR-Cache

WebGPU로 대용량 JSON을 GPU 메모리에 올리고 CPU에는 메타데이터만 남기는 캐시. Proxy 기반 자동 동기화, 배치 쓰기, GPU 정렬, 와일드카드 페이지 조회를 지원합니다.

  • TypeScript
  • WebGPU
  • IndexedDB

오픈소스 라이브러리

Quick-Sonic-Worklet

Worker 다운로드와 AudioWorklet 재생을 묶은 멀티트랙 오디오 라이브러리. EQ, 코러스, 리버브, 딜레이 등 이펙트를 재생 중 실시간으로 조절합니다.

  • TypeScript
  • AudioWorklet
  • Web Worker

오픈소스 라이브러리

dxf-json

CAD 도면 포맷 DXF를 JSON으로 변환하는 파서. DXF 웹 뷰어 작업에서 출발해 파싱 단계를 독립 라이브러리로 분리했습니다.

  • TypeScript
  • FxTS

오픈소스 · 커뮤니티 도구

DmNote BMS Plugin

beatoraja·lr2oraja·Qwilight에서 연주 중인 곡 정보를 방송 오버레이에 실시간으로 띄우는 플러그인. SQLite 폴링과 Lua 훅 두 방식의 브리지 서버를 포함하고, Node.js 없이 실행되도록 번들링했습니다.

  • JavaScript
  • Node.js
  • SQLite
  • Lua

설계 연구

CPAS

정답이 아니라 사고 과정을 측정하는 평가 시스템 설계 명세. 시뮬레이션 환경에서 1 ms 단위로 행동을 기록하고 9개 인지 차원을 산출하는 구조를 정의했습니다.

  • 시스템 설계
  • 측정 이론

백엔드

rhythm-archive · k-oddress

NestJS, Nestia, Prisma로 만든 타입 안전한 API 서버. 리듬 게임 아카이브 서비스와 한국 주소 검색 API를 구현했습니다.

  • NestJS
  • Nestia
  • Prisma
  • PostgreSQL
  • typia

초기 프로젝트

Car Plate Recognition

OpenCVSharp로 차량 번호판 영역을 찾는 프로그램. 평활화, 노이즈 제거, 적응형 이진화, 형태학 연산, 라벨링을 단계별로 조합했습니다.

  • C#
  • OpenCVSharp

03 · 경력과 흐름

어디서 무엇을 만들어 왔나

VISD

2024.08 – 현재

팀장

포토 키오스크·포토부스 브랜드들이 함께 쓰는 키오스크 플랫폼과 운영 도구 개발을 이끌고 있습니다.

  • 2024년 8월 조직의 첫 커밋부터 참여, 저장소 48개 중 38개에 직접 커밋
  • 공용 키오스크 코어와 브랜드별 키오스크 앱
  • 카메라 제어 라이브러리와 사진 프리셋 렌더러
  • 포토 프린터 SDK와 프린터 상태 모니터링, 출력 관리 프로세스
  • 다국가 결제 모듈과 공통 결제 인터페이스
  • FFmpeg 미디어 컨트롤러와 프로세스 워치독
  • 백오피스, ERP, 사내 문서와 릴리스 자동화(GitHub Actions)
  • TypeScript
  • React
  • Electron
  • Node.js
  • FFmpeg
  • GitHub Actions
  1. 2018 – 2020 C#과 컴퓨터 비전 WinForms·WPF 데스크톱 개발, OpenCVSharp 영상 처리 연재와 번호판 인식.
  2. 2022 – 2023 브라우저 위의 CAD DXF 파서와 Three.js 기반 도면 웹 뷰어 작업, 파싱 계층을 dxf-json으로 분리.
  3. 2024 – 현재 VISD 팀장 · 포토 키오스크 플랫폼 카메라·프린터·결제가 연결된 키오스크와 운영 도구 개발을 이끎.
  4. 2024 – 2025 웹 오디오와 GPU Quick-Sonic-Worklet, Json-VR-Cache, 웹 BMS 에뮬레이터 Beat-Strong-Man.
  5. 2025 – 현재 BMS 툴체인 파서·플레이어·에디터 패키지와 데스크톱 앱, 커뮤니티 웹 스튜디오와 방송 플러그인.

04 · 기술

손에 익은 도구

언어
  • TypeScript
  • JavaScript
  • C#
  • Python
  • Java
  • C++
프론트엔드 · 그래픽
  • React
  • Three.js
  • React Three Fiber
  • WebGL
  • WebGPU
  • Vite
  • Tailwind CSS
오디오 · 실시간
  • Web Audio API
  • AudioWorklet
  • Web Worker
  • IndexedDB
데스크톱 · 장비
  • Electron
  • .NET WinForms
  • WPF
  • OpenCV
  • FFmpeg
  • 프린터·결제 연동
백엔드 · 인프라
  • NestJS
  • Prisma
  • PostgreSQL
  • FastAPI
  • Docker
  • GitHub Actions

05 · 글

기술 블로그

전체 22편 보기

06 · 연락

같이 만들 것이 있다면 메일 주세요.

wwponv158@gmail.com