2022년 10월 12일 수요일

한컴독스를 쓰기 시작하다

많은 공공기관과 대부분의 정부 조직이 그러하듯, 업무망과 인터넷망이 분리된 현재 나의 파견 근무 환경에서는 오피스 프로그램이 설치된 업무망에서만 문서 작업을 할 수 있다. 그러나 업무망에서는 인터넷 연결이 되지 않는다. 따라서 인터넷망에서 검색 결과물 또는 다운로드 받은 것을 파일로 전환하여 내부망으로 전송한 뒤 작업을 이어가야 한다. 또는 외부망 컴퓨터에 상용 소프트웨어 설치가 가능하도록 보안 담당자에게 요청해야 한다. 어느 것을 선택하든 번거롭기는 마찬가지이다.

인터넷망에 별도의 프로그램을 설치하지 않고 웹 기반의 오피스 프로그램을 쓰면 일단 인터넷 검색 결과를 참조하면서 망 전환을 하지 않고 문서를 작성할 수 있을 것이다. 그러나 이번에는 상용 클라우드가 접속되지 않는 불편함이 나를 기다리고 있다. 이 문제는 도대체 언제나 해결이 될런지... 아니, 해결 의지가 있기는 한 것인지?

이런저런 가능성을 모색해 보다가 클라우드 기반 구독형 서비스인 한컴독스에 접속해 보았다. 이는 2022년 9월 28일에 출시한 아주 새로운 제품이다. 한컴독스 사이트로 접속하는 것은 차단이 되지 않았다. 회원 가입을 하면 개인용의 경우 1달은 무료, 그 후로는 1년에 49,000원을 내야 한다. 마이크로소프트의 클라우드 기반 구독형 오피스(월 8,900원)와 비교하면 매월 내야 하는 금액이 그렇게 부담스럽지도 안고, 내가 사용하는 PC와 모바일 기기에서 사용 가능하다는 것이 장점으로 다가왔다. 실은 마이크로소프트의 클라우드 기반 오피스는 업무 환경에서 접속조차 할 수 없다. 

한컴독스 무료체험은 1달이 지나면 무조건 유료로 전환해야 하는 것이 아닌가 생각했는데, 제한된 기능에 만족한다면 계속 무료 서비스를 사용해도 되는 것 같다.

무료 체험으로 시작해 보는 한컴독스. 유료 버전으로 올리면 데스크톱 앱을 다운로드하여 설치할 수 있다(최대 5대의 PC).


한컴독스와 한컴오피스 웹은 어떻게 다른지 아직 잘 모르겠다. 그리고 한컴 스페이스는? 엇비슷한 서비스가 여럿이라 혼동을 유발한다. 한컴 홈페이지에서는 아래의 세 메뉴가 별개로 나타나는데, 맨 오른쪽의 한컴오피스 웹을 클릭하여 들어가면 국정원 권고에 따라 차단되었음을 알리는 불편한 메시지가 나올 뿐이다.



내가 개인적으로 구입하여 사용하던 한글과컴퓨터 제품은 2016년에 발표된 한컴오피스 NEO였다. 컴퓨터를 새로 장만하거나 Windows를 다시 깔 때마다 웹사이트에 접속하여 설치 프로그램을 내려받고 라이센스 번호를 넣어서 설치를 해 왔다. 업무 현장에서 쓰는 공식 한컴오피스는 점점 버전이 향상되는데 집에서 쓰는 한컴오피스 NEO는 더 이상 업데이트가 되지 않으니 두 제품 사이의 성능 격차(가장 눈에 뜨이는 것은 인터페이스겠지만)이 점점 벌어지는 것이 마음에 들지 않았다.

한컴독스에서 문서를 만들어 보았다. 웹 환경임에도 불구하고 내가 알고 있는 단축기는 거의 다 그대로 작동하는 것 같았다. 작성한 문서를 내부망으로 전송하여 한글2018로 열어 보니 맞추어 놓은 포맷이 약간 달라진 것이 눈에 뜨였다. 한컴독스의 버전이 내부망에 설치된 Windows용 한글보다 더 최신이라서 그런가? 한컴오피스는 2018, 2020, 2022와 같이 2년 짝수 단위로 새 버전이 나오고 있으니 그런지도 모르겠다. 또 한 가지 흥미로운 것은 저장공간(https://www.hancomdocs.com/mydrive)으로 이동하면 마우스로 파일을 끌어다가 넣을 수 있다. 파일 이름 변경 및 삭제는 저장공간에서 실행하면 된다. 웹브라우저 내로 파일을 끌어다 넣을 수 있는 클라우드를 업무 환경에서 쓸 수 있다니 얼마나 반가운지 모르겠다. 저장공간은 무료 버전의 경우 2GB에 불과하므로 다른 클라우드 서비스와 비교할 수준은 전혀 못되지만. 괜히 좋아하고 있다가 차단되면 말짱 도루막이다!

구독하여 쓰는 오피스 프로그램이라! 세상이 참 많이 바뀌었음을 느낀다.

2022년 10월 9일 일요일

갑자기 연필을 쓰고 싶어졌다

2022년 10월에 연필깎이를 사다니. 

연필을 쓰려면 깎아야 하는데, 공동으로 쓰는 사무실에서 책상 위에 종이를 펼쳐놓고 칼로 연필을 깎는 것은 다소 처량해 보여서 휴대용 연필깎이를 하나 사기로 하였다. 주말에 외출을 하고 돌아오는 길에 광화문 교보문고의 핫트랙스에 들러서 연필깎이와 연필을 하나씩 구입하였다. 연필 한 자루에도 바코드가 찍혀 있는 것을 보고 조금 놀랐다.

 

사실은 이런 것을 사고 싶었는데 구할 길이 없었다. 초등학교 때 이런 것을 쓰면 깎는 도중에 심이 쉽게 부러지고는 했었다. 쓰레기 처리에 불리함은 당연하다. 이미지 출처: 구글.


오늘 구입한 연필깎이는 가방에 넣을 수는 있지만 필통에 넣어서 갖고 다닐 수준은 아니다.


STAEDTLER 512 006 연필깎이(당연히 Made in China!)는 품질이 꽤 좋았다. 조심스레 연필을 깎은 뒤 글씨를 써 보았다. 사각거리며 글씨가 써 지는 느낌이 참 좋다. 한동안 만년필을 즐겨 사용했었는데, 올해 직장에서 지급받은 다이어리의 종이가 너무 얇아서 잉크가 번지기에(나는 중간 정도의 닙을 주로 쓰는지라...) 다른 필기구에 자꾸 손이 가게 되었다. 몇 년 전에 서울시립미술관에서 설문 조사를 하고 나서 기념품으로 받은 연필을 조금씩 쓰다가 심이 닳게 되니 연필을 깎는 도구에 자연스럽게 관심이 갔다.

막상 쓰려고 하는 순간에 필기구에서 잉크가 나오지 않는 경험을 많이들 했을 것이다. 연필은 그런 경우가 없다. 그리고 큰 힘을 들여서 쓰지 않아도 되고, 농담의 표현이 자유롭다. 지우개로 지워진다는 것인 때로는 장점이 되기도 하고, 단점이 되기도 한다.

기술은 계속 발전하고 있지만 때로는 이렇게 세상의 흐름을 거스르는 일에 즐거움을 느낀다.

2022년 10월 8일 토요일

LMMS에서 ASIO4ALL 드라이버를 쓰려면, 그리고 MIDI 신호 녹음의 문제

ThinkPad E14 G3(Windows 10)에 iCON iKEYBOARD NANO 키보드를 USB 케이블로 직접 연결하여 쓰려는 시도는 더 이상 하지 않기로 했다. 그 대신 아주 오래 전에 쓰던 USB MIDI cable을 컴퓨터와 키보드 사이에 넣었다.

이런 스타일의 USB MIDI interface는 요즘은 알리익스프레스에서 3~5천원 정도에 팔린다. 

Windows에 LMMS를 설치하고 건반을 통해 신호가 잘 전달됨을 확인하였다. 그런데 이번에는 엄청난 레이턴시가 느껴지는 것이 아닌가. 아무래도 ASIO4ALL 드라이버를 써야 할 것 같았다. 사용 중인 오디오 인터페이스가 Behringer UCA200이니 전용 ASIO 드라이버는 존재하지 않는다.

ASIO4ALL을 다운로드하여 설치를 마쳤는데 LMMS 설정 창에서 보이질 않았다. 이건 또 왜 이러지? 만약 Tracktion Waveform Free나 Cakewalk by BandLab과 같은 다른 free DAW를 사용한다면 상황은 좀 달라졌을지도 모르겠으나. 기왕 LMMS에 익숙해지기로 했으니(Linux와 Windows 양측에서 전부) 해결 방법을 찾아야 한다.

구글 검색을 해 보니 portaudio의 DLL 파일을 구한 뒤 LMMS 실행파일이 있는 디렉토리에 libportaudio-2.dll이라는 이름으로 저장하면 된다고 한다. LMMS v1.2.2를 설치하면 따라오는 libportaudio-2.dll 파일은 치워 버려야 한다. 다음 유튜브의 설명을 따라서 하면 쉽다. 아래에 소개한 동영상의 제목은 'LMMS (64 bit) - ASIO DRIVER SUPPORT - the easy way'이다. 



나는 다음의 웹사이트에서 64비트용 portaudio 라이브러리 파일('libportaudio64bit.dll')을 구해서 기존의 DLL 파일을 바꾸었다.

https://github.com/spatialaudio/portaudio-binaries

ASIO4ALL이 제대로 작동하게 만들었더니 비로소 편안한 실시간 연주를 즐길 수 있게 되었다. 문제를 해결했다고 하여 별로 보람이 느껴지지는 않는다. 리눅스에서는 USB 케이블만으로도 인식이 되는 MIDI 건반이 윈도우에서는 MIDI 인터페이스를 통해야 하다니. 보통은 윈도우에서는 간편하게 되는 일이 리눅스에서는 더 어려운 과정을 거쳐야 하지 않던가?

사소하지만 아직 남은 문제가 있다. 건반의 pitch/modulation wheel의 작동이 원활하지 않다. 다른 컴퓨터에서 건반을 연결한 다음 설정용 프로그램을 건드려서 고쳐 봐야 되겠다.

다음의 동영상은 LMMS가 아닌 일반적인 DAW에서 ASIO4ALL을 설정하는 방법을 설명하고 있다. 특히 ASIO 제어판이 나오는 2분 34초부터 눈여겨 보야야 한다.


LMMS에서 MIDI Keyboard controller의 작동이 이상했던 이유는

Pitch bend의 범위는 다음의 창에서 숫자를 넣어서 조절해야 한다. 기본값은 1, 즉 반음에 불과하다. 건반 자체의 설정 문제는 아니었다.



LMMS에서 건반의 조절기(놉, 휠 등)에 컨트롤러 기능을 부여하는 방법은 조금 전에 알아냈다. 그런데... 피치 변화 신호가 녹음(MIDI)이 되지 않는다. 즉, MIDI 건반을 연결하여 LMMS에서 가상악기를 실시간으로 연주할 때에는 pitch bend가 잘 작동한다. Piano roll에서 녹음 시에 들리는 소리 역시 정상이다. 그러나 녹음된 MIDI data를 재생해 보면 pitch bend 데이터가 전혀 기록되지 않았음을 알 수 있다. 아, 어째서 그런 것일까? 정말 공부할 것이 너무나 많다. 이는 매우 잘 알려진 문제인 것으로 보인다.

[LMMS Forum] Why LMMS won't record midi pitch-bend signals into piano-roll? (from midi keyboard or loaded vsti)

[Reddit] Pitch bend from midi

packbat의 답변(2020년도):  Belated response: it's a known issue with LMMS's MIDI support being incomplete. It's possible to program it in manually within the piano roll editor - there's an automation button that handles pitch bends - but the dev community has yet to figure out how to implement pitch bend data or sustain pedal data or the like correctly for LMMS, so it's just not supported right now.

LMMS 커뮤니티에서도 잘 알고 있는 문제라서 이에 대한 논의는 지속적으로 벌어지고 있는 것 같다. Automation track을 이용한 트릭이  있지만, 서스테인 페달 등 MIDI에서 보편적으로 다루어지는 신호를 전부 수용할 수 있을지는 미지수이다. LMMS 포럼의 다음 글에 현재까지의 해결책이 정리된 것 같은데, 2017년도의 글이라서 그 이후의 업데이트 상황은 잘 모르겠다.

[LMMS Forum #3724] Record pitch automation directly into piano roll

에혀... 다른 DAW를 써야 하나. LMMS의 기본을 더 익힌 다음에 결정할 일이다.

LMMS 관련 공식 정보

ThinkPad E14 G3의 Windows 다운그레이드(11->10)


[레노버 공식 지원 웹사이트] Windows 11에서 Windows 10으로 다운그레이드하는 방법

USB MIDI keyboard controller의 인식 불량 문제가 Windows의 버전 문제일지도 모른다는 생각이 들어서 Windows 10으로 다운그레이드를 해 보았다. 10에서 11로 업그레이드 후 열흘까지는 데이터 파일을 유지한 상태로 다운그레이드가 가능하나, 이미 많은 시간이 지나서 공장 초기화나 다를 바가 없는 상태가 되었다. 새로 작업한 파일이 그다지 많지 않아서 별로 주저함 없이 다운그레이드를 하였는데...

여전히 키보드는 작동하지 않는다. 다른 컴퓨터(Windows 7 or 10, 그리고 심지어 리눅스)에서는 잘 되면서 왜 유독 ThinkPad에서만 안 되는 것인지? 매우 미묘한 '궁합' 문제가 있는 듯하다. 

건반은 별도의 어댑터를 통해서 전원을 공급하고, 한동안 쓰지 않던 USB MIDI 케이블을 꽂아서 연결하는 것 말고는 방법이 없을 것 같다. Windows 재설치는 이제 그만 두도록 하자. 

2022년 10월 7일 금요일

dc 명령어를 이용하여 연속적인 숫자를 범위로 전환하기

MSA(multiple sequence alignment)를 처리하여 특정 조건을 만족하는 컬럼의 위치를 출력할 때가 있다. 예를 들어 trimAl이나 ClipKIT를 사용하여 MSA로부터 gap이 일정 기준 이하인 컬럼을 전부 뽑아내어 파일로 출력하게 만드는 일을 뜻한다. 컬럼의 연이어 존재한다면, 이를 병합하여 범위로 만들면 쓸모가 많다. 예를 들어 MSA로부터 대표적인 서열을 하나 추출한 다음, 컬럼 위치 정보를 사용하여 서열 단편을 끄집어 내는 것이다.

이 과정에서는 다음과 같은 전환 작업이 필요하다. 왼쪽에 보인 숫자는 쉼표가 아니라 new-line character를 경계로 하여 배열될 수도 있다.

1, 2, 3, 5, 6, 8, 10... -> 1-3, 5-6,  8, 10...

SARS-CoV-2의 검출을 위한 프라이머 설계 및 검증 연구(올해 출판한 논문 링크)에서는 별로 영리하지 못한 Perl script를 작성하여 인접한 숫자를 병합하는 작업을 했었다. 최근 들어서 Influenza A virus에 대하여 비슷한 일을 하게 되니 이전보다는 더욱 효율적인 방법을 찾고 싶었다. 구글을 검색해 보면 대부분 awk를 이용한 짤막한 스크립트로 이를 구현하고 있었다. 이는 너무 평이해 보여 뭔가 색다른 방법이 없을까 찾아보니... 사실은 외장 하드디스크드라이브에 보관한 예전 스크립트를 찾기가 귀찮아서 새로운 시도를 해 본 것이었다.

[Stack Exchange] How to collapse consecutive numbers into ranges?

가장 위에 달린 답변은 다음과 같았다.

출처: StackExchage

순간 내 눈을 의심하였다. 이게 뭐지? 처음 보는 명령어(스크립트?)였다. 첫 줄을 보니 데이터 파일 $1에 대하여 dc라는 명령어를 수행하고, 상세한 작동은 뒤의 따옴표('...') 안에 포함된 코드에 따르는 것처럼 보였다. 도저히 내가 이해할 수 있는 수준의 것이 아니다.

dc라는 것은 산술식을 계산하는 명령어로서 desktop calculator의 약자라고 한다. 얼핏 보면 무척 불친절한 탁상용 계산기처럼 보인다. 이는 dc가 일종의 postfix notation을 사용하는 계산기이므로 숫자를 입력한 다음에 연산자를 넣는 방식을 취하기 때문이다. 그렇다 하더라도 각괄호가 난무하는 계산식은 도저히 이해를 할 수가 없다. 하지만 데이터 파일을 만들어서 실제로 위 스크립트를 돌리면 결과가 잘 나오니 믿고 쓸 수밖에...

텍스트 파일의 라인 순서를 뒤집어서 출력하는 명령어가 무엇인지 아는가? 복잡하게 스크립트를 짤 필요가 없이 tac 명령어 한 방이면 끝난다. 왜 tac인가? cat을 뒤집어 놓은 것이므로!



2022년 10월 5일 수요일

권선기 버전 2, 그리고 Alesis NanoPiano

취미로 자작을 하는 방법에는 크게 두 가지 유형이 있을 것이다. 첫 번째는 새로운 것을 계속 만들어 나가는 것. 앰프를 만들어 탑(塔)을 쌓아 나가는 것에 해당한다. 초기 작품일수록 완성도가 떨어지고, 점차 쓰지 않게 될 가능성이 높다. 역사성 이외의 의미를 부여하기 어려운 것도 있을 것이다. 진공관 앰프를 만드는 사람이 남에게 작품을 흔쾌히 선물하거나 재료비 미만의 싼 수고비만 받고 처분하는 것도 집안에 이를 계속 쌓아 두기 힘들어지기 때문일 수도 있다. 반복적인 '판매' 행위가 되면 현행법을 저촉하는 것은 아닌지도 고려해야 한다. 사업자등록도 해야 하고, 「전기용품 및 생활용품 안전관리법」을 어기고 있지는 않은지 살펴봐야 한다. 십중팔구는 안전인증을 받았을리가 없으니, 법을 어기는 것에 해당한다. 대부분의 판매자가 키트 형태로 앰프를 판매하는 것에는 이유가 있는 것이다.

두 번째 유형은 이미 만들어 놓은 작품을 부수고 새로운 것을 만들어 나가는 것이다. 진공관이나 트랜스포머와 같은 주요 부품은 그대로 활용하게 될 가능성이 높으므로 부순다는 표현은 맞지 않을지도 모르겠다. 영어로는 'salvage'란 단어를 많이 쓴다( 'salvaged parts'). 이렇게 하면 좁은 집구석에 앰프의 탑을 쌓지 않아도 된다. 나의 6LQ8 PP 앰프 '티라미수'가 그런 상황이었다. 그리고 출력 트랜스를 감기 위한 권선기와 R코어 출력 트랜스 역시 그러하다.

파견 근무지에서 납땜질을 하기는 쉽지 않다. 물론 잠시 수도권의 기업 연구소에 머물렀던 2019-2021년에는 6LQ8 앰프를 어렵사리 만들기는 했지만. 이번에는 숙소에서 일을 너무 크게 벌이지 않으려고 대전 집에 가끔 내려갈 때에만 조금씩 작업을 하기로 하였다. 그래서 부품을 구입하고 나서 몇 달이 흘러 지난 주말이 되어서야 권선기 버전 2의 외형이 비로소 모습을 드러냈다. 구동축(M6 전산볼트)을 지지하는 방법을 다각도로 고민하다가(고민의 흔적) 지금과 같이 한쪽 끝에만 로드엔드 베어링을 쓰는 대단히 단순한 구성으로 결론을 내렸다. 커플링 등 새로 부품을 구입할 일도 없고, 편심에 의한 과도한 진동도 발생하지 않는다. 전동드릴 고정대에는 내경 10mm 베어링이 있지만 전산볼트는 여기에 전혀 체결되어 있지 않다. 처음에는 전산볼트에 무엇이든 돌려 끼워 고정해서 베어링과 체결할 생각이었으나, 드릴 고정대 자체가 그렇게 정밀한 물건이 아니라서 드릴 척에 고정된 구동축과 베어링의 중심이 완벽하게 일치하지 않는 것 같았다. 실제로 이 물건의 원래 구성인 원형톱 어댑터를 드릴에 고정하고 회전시키면 진동이 꽤 크게 느껴진다.

드릴을 고정하는 밴드는 바닥판에 살짝 용접이 된 상태라서 볼트를 강하게 조인 상태에서도 약간의 움직임이 발생한다.

로드엔드 베어링의 자유도가 높아서 구동축을 드릴 척에서 빼내기가 수월하다.


AC 모터라서 속도 조절은 조광기로 충분하고, 자석을 이용한 회전수 계수기는 이미 권선기 버전 1에서 구현해 놓았다. 

자, 그럼 이것으로 무엇을 할 것인가? R코어 출력 트랜스를 감을 예정이다. 2018년 여름 생애 최초로 감은 출력 트랜스는 두어 대의 앰프를 거쳐서 지금은 해체된 상태이다(당시 제작 기록 링크1, 링크2). 첫 작품이라서 예쁘게 마무리를 못했기 때문에 볼 때마다 늘 다 풀어버리고 새로 감아야 되겠다는 생각이 늘 머리를 떠나지 않았었다. 그래서 과감히 해체를 감행하였다! 코어는 하나인데 트랜스포머 제작은 두 번이요, 이를 위한 권선기의 제작도 두 번이다. 이번에 트랜스포머를 만들고 나면, 권선기의 운명도 알 수 없다. 다른 용도의 코일을 감을 일이 아주 드물게 있을 가능성은 있으나, 앞으로 내가 만드는 모든 진공관 앰프의 출력 트랜스포머는 직접 감겠다는 생각은 전혀 갖고 있지 않다. 아니, 심지어는 이번에 만들 트랜스포머의 제원도 아직 결정하지 않았다. 임피던스는? 싱글용인가, 혹은 푸시풀용인가? 전부 확정되지 아니한 상태에서 권선기부터 만들고 있는 것이다. 8K PP(UL tap) 출력 트랜스포머를 만들 가능성이 가장 높다. 왜냐하면 이미 갖고 있는 6LQ8 진공관과 PP amp PCB를 쓰면 되기 때문이다.

오랜만에 Alesis NanoPiano를 챙겨왔다. 이 녀석이 나와 인연을 맺은 것이 벌써 20년이 넘은 것 같다. 아무리 software synth가 대세라 해도 하드웨어적인 버튼과 다이얼이 달린 외장형 synth가 더 편리할 때가 있다. 확장성이라고는 전혀 없지만...

몇 년 만에 나노피아노의 소리를 들어 보았다. 어지러운 케이블이 마치 벌레의 뱃속을 빠져나온 연가시 같다. 에구, 징그러워라... 앰프는 TDA7265(최근의 개조 기록 링크).