Computer, Music

음악을 좋아하다보니 악보를 그릴 일이 많이 있다. 특히 교회 성가대 지휘를 하고 있다보니 피아노와 합창이 함께 들어간 악보를 만들고 싶은 경우가 왕왕 있다. 오래되거나 여러번 복사를 해서 다시 복사를 하기 어려운 악보들이나 너무 오래되어서 가사를 수정해야 할 필요가 있다고 생각되는 악보들을 만났을 때, 악보를 다시 깔끔하게 그릴 수 있다면 좋겠다는 생각을 많이 했었다.

이전에는 Lilypond라는 툴을 사용했었다. Tex같은 느낌인데 텍스트만으로 악보 소스를 만들고 이걸 컴파일해서 pdf 형식의 악보를 뽑아내는 방식이다. 단선 악보를 그릴 때는 이 것으로도 그렇게 복잡하지 않게 작업을 할 수 있었기 때문에 심지어는 이 블로그에 lilypond를 이용한 악보 그리기에 대한 글을 두 개나 연재한 적이 있다.

문제는 합창과 피아노 반주가 들어있는 조금은 복잡한 형식의 악보를 그릴 때 소스가 상당히 복잡해진다는 것, 그리고 소스를 만들 때 바로 악보를 보는 것이 불편하다는 점이었다. 그리고 이런 문제들을 모두 한 방에 해결해 버리는 프로그램이 바로 MuseScore이다. 그냥 일반적인 악보 그리는 프로그램과 별다를 바가 없어 보이는 WYSWYG 형식의 프로그램이다. 그리고 이 프로그램의 강력함은 기본적인 악보 입력이 키보드 상에서 해결될 수 있다는 점이다! 물론 상세한 표현과 각종 기호 등은 마우스의 도움을 받지 않을 수 없지만, 기본적으로 악보에 들어가는 음표와 가사 정도는 키보드 상에서 빠르게 입력을 해서 완성을 할 수 있다. 대여섯 페이지 정도 되는 4부 합창곡이라면 약 2~30분 이내에 완전한 조판을 마칠 수 있을 정도이니 얼마나 입력이 효율적인지를 알 수 있다.

이제는 입력에 대해서는 어느 정도 익숙해졌고, 적절한 악보의 크기나 글꼴 또는 spacing 같은 것을 조절해 가면서 가장 좋은 출력물을 만드는 세팅을 정하는 일 정도가 남아있다고 볼 수 있는데, 이 정도의 시간 투자로 이 정도의 출력물을 낼 수 있다는건 정말 대단한 일이 아닐 수 없다!

Computer, Internet

오늘 도쿠위키에 대해 알게 된 점 몇 가지 추가

  1. 스팸을 막으려면 captcha 플러그인을 쓰자.
    ACL을 설정했음에도 불구하고 많은 위키스팸이 달린 것으로 보아 사용자 권한 관리만으로는 안되는 것 같다.

  2. 키보드 단축키를 쓰자.
    사용하는 브라우저에 따라 어떤 modifier 키를 쓰는지 외워두고 (윈도우즈 FF와 크롬은 alt+shift, 맥용 FF와 크롬은 ctrl+opt, 인터넷 익스플로러는 alt 키) h는 홈페이지, e는 편집 모드 진입, s는 편집 저장, x는 인덱스 페이지 정도 외워두면 좋고, 편집 모드에서 b는 bold, i는 italic, u는 underline 같은 것도 예상대로 작동한다.

  3. 스팸단어차단 기능은 좋지 않다.
    사이트에서 추천하는대로 chonqed.org 사이트에서 conf/wordblock.conf 파일을 저장하면, 글 저장할 때 정규식 관련 에러가 난다. 인터넷으로 대충 찾아보니 해당 파일의 크기가 너무 커서 생기는 에러 같은데, 위에 언급한 captcha 플러그인이 잘 동작한다면 굳이 이런 걸 쓸 필요는 없을 것이다. 만약 꼭 써야 하는 경우가 있다면 wordblock.local.conf 파일을 편집하는 것으로 하자.

Computer

윈도우에서 스크롤 방향 바꾸기에 대해서는, 왜 이렇게 하려는지, 그리고 어떻게 하는지를 이미 포스팅한 적이 있다. 이 포스팅에서 사용한 AutoHotKey는 매우 강력한 프로그램이니 이걸 쓰고 있는 사람들에게는 꽤 좋은 방법이라 생각된다.

그러나 스크롤 방향 바꾸기 하나를 위해 이 프로그램을 깔고 로그인할 때마다 실행하는 것이 불편하게 느껴진다면 X-Mouse Button Control이라는 소프트웨어를 설치하는 것도 좋은 생각이다.

이 프로그램은 마우스의 버튼을 재정의하고 다양한 기능을 할 수 있도록 도와주는 무료 프로그램이다. 버튼이 여러 개인 마우스를 사용하고 있다면 각각의 버튼에 다양한 기능을 부여할 수 있는 이 프로그램을 꼭 사용하는 것이 좋겠다.

레이어 기능이 있어서 각각의 레이어에서 서로 다른 기능을 정의할 수도 있다. 예를 들어 문서 작업 레이어와 인터넷 레이어를 만들어서 같은 버튼이 두 상황에서 서로 다른 기능을 하도록 정의해 놓을 수 있다는 것이다. 물론 실행되고 있는 프로그램의 종류에 따라 서로 다른 기능을 하도록 하는 것도 가능하다. (홈페이지에 있는 스크린샷을 보면 어떻게 하는지 바로 알 수 있을 것이다)

꽤 오래전부터 지속적으로 개발되고 있다는 것은 또 다른 장점이다.

나는 단순히 휠 방향을 반대로 설정하고, 두 개의 버튼에 각각 복사(Ctrl+C), 붙여넣기(Ctrl+V) 기능을 할당하는데만 사용하고 있지만, AutoHotKey를 수동으로 실행해야 하는 불편함이 없는 것만으로도 꽤 요긴한 프로그램이다.

Computer

오늘 dokuwiki에 대해 알게 된 점들.

  • Timezone 설정
    내 서버가 미국에 있다 보니 timezone 설정이 필요하다. 여기에 잘 나와 있는 대로,이 설정은 웹 상에서 하는 것이 아니라 서버의 파일에서 해 주는 것이었다. conf/local.protected.php 파일 안에 다음과 같은 내용을 넣어주면 된다.

  • 마지막으로 수정된 시간
    이 것은 lastmod 플러그인을 쓰면 된다. 이 플러그인을 설치한 후에 다음과 같이 위키 본문에 넣어주면 된다.

    이 페이지는 ~~LASTMOD~~ 에 마지막으로 편집되었습니다.
  • Pubchem 플러그인
    사실 이전에 이 플러그인을 깔아두고 있었지만, 홈페이지에 사용법이 없어서 어떻게 쓰는지를 모르고 있었다. 그런데 가만히 보니 이게 pubmed 플러그인이랑 같은 사람이 만든 것이다. 그렇다면 사용법도 같을 것이라고 예측하고 시도를 해 보았는데 단숨에 성공. CID를 넣으면 해당 화합물에 대한 링크 혹은 구조 그림과 링크를 주는 두 가지 기능이 있다.

    {{pubchem>link:68827}}

    {{pubchem>structure:68827}}

    위의 것은 링크만, 아래 것은 구조 그림과 링크를 주게 된다.
  • 페이지 삭제하기
    이게 가장 허무했다. 그냥 페이지 내용을 모두 지운 후 저장하면 페이지가 삭제된다. 쩝…

Computer

글 쓰기 귀찮아서 아래 이미지로 대치! 글씨가 작으면 아래 이미지 클릭하시면 잘 보일겁니다.

blog-markdownpad2

Computer, Life, Music

  • 지난 블로그 포스팅이 2012년 11월이었으니까 이제 약 5개월이 지났다.

  • 2012년 10월에, 나는 직장을 옮겼고 셋째 아들이 태어났다.

  • 직장을 멀리 옮긴 덕분에 출근 시간은 약 70분, 퇴근 시간은 약 90분이 걸린다. 자가용을 운전하고 다니지 않으니 이 시간의 대부분은 버스나 지하철에서 보내게 되고, 이 시간 동안 책을 읽거나 음악을 듣거나 혹은 팟캐스트를 듣기도 한다. 최근에는 이 시간 동안 무언가를 하려는 생각을 버리고 내 자신을 그냥 편안하게 두려는 생각을 할 때도 많이 있다. 그래봐야 또 뭔가를 읽거나 들으려는 유혹에 쉽게 넘어가곤 하지만…

  • 쓰기 시작한지 18개월이 지나가는 아이폰 4는 이제 볼륨 조절을 제외한 두 개의 버튼이 다 잘 안 눌린다. 리퍼를 받을 수는 없고 그렇다고 사설 수리업체에 맡기기는 돈이 아깝다보니 그냥저냥 그대로 사용하고 있다. 그나마 홈 버튼은 아예 안 눌리는 것은 아니니 마음을 조금만 더 느긋하게 먹으면 크게 문제될 것도 없다. SKT에서 착한 기변이라는걸 내놓았다고 하는데, 나는 아직 대상이 아니어서 기기를 바꾸려면 좀 시간이 더 걸릴 듯 하다. 아이폰 6가 아이폰 5에 비해 크게 나아진 점이 없이 아이폰 5S 수준으로 나오게 된다면 그냥 지금 쓰고 있는 아이폰 4를 고쳐서 쓸 생각이다.

  • 쓰기 시작한지 약 6개월 쯤 되어가는 아이패드 3 (이른바 구 뉴 아이패드) 덕분에 재미있는 것을 많이 해 볼 수 있었다.

    • SampleTank, iGrand Piano for iPad, iLectric Piano for iPad, 그리고 StrandOrgan 등 네 개의 앱은 매 주마다 교회에서 약 6개월간 메인 건반 음원 역할을 해 주었다. iRig Midi와 이 앱들을 사용하면 오래된 커즈와일 SP88X가 다양한 소리를 내는 멋진 최신 신디사이저로 변신을 하게 되기 때문에. (여기 나오는 사진이 바로 이 조합이다) 이제는 Korg의 최신 Workstation인 Krome을 구입한 덕분에 이 조합을 사용할 필요가 없어지긴 했지만, 최소한 파이프 오르간 소리에 있어서만큼은 StrandOrgan이 훨씬 더 낫다는 생각이다 (어차피 익숙해지면 Krome의 소리도 나쁠 건 없고, 듣는 사람들도 그렇게 따지지 않으니 굳이 서스테인 페달 지원이 안되는 StrandOrgan을 쓰지는 않고 있지만).

    • StructureMateMetamolecular의 Rich Apodaca가 개발한 ChemWriter 기반의 아이패드용 SDF viewer이다. 파일을 여는 방식이 오직 이메일 전송 뿐인게 좀 아쉽긴 하지만, 그래도 5천개 이상의 구조를 가지고 있는 파일도 빠르게 열어주기 때문에 꽤 쓸만하다고 볼 수 있다. 사실 이 앱은 작은 크기의 자바스크립트 라이브러리로 화학 구조를 빠르게 볼 수 있는 기술을 자랑하기 위해 만든 앱이기는 하다.

    • Papers for iPad가 나의 현재 문헌 관리 메인 툴이 되었다. 맥이나 윈도우용 Papers는 아직 구매하지 않고 있는데, 지금보다 더 많이 쓰게 될 것 같지는 않아서 일단은 참고 있는 중. 자주 봐야 하거나 어노테이션을 많이 해야 하는 경우에는 PDF Expert로 옮겨서 본다. 이럴 때 UPAD를 사용하는 사람들도 많이 있는 것 같은데, 나는 UPAD는 그냥 노트 용도로만 사용 중.

  • 몇 주 전에 펀샵에서 버티컬 마우스 하나를 샀다. 충전형이고 무선인데, 손목을 많이 편안하게 해 주기 때문에 만족스럽게 쓰고 있다. 사실 좋은 마우스에 대한 로망이 있어서 오래 전에는 펜 마우스 같은 것도 써보고 했는데, 지금까지 가장 마음에 들었던 마우스는 로지텍의 V470이었고, 지금 쓰고 있는 녀석이 그것보다 조금 더 낫게 느껴진다. 물론 V470이 블루투스를 지원한다는 것은 랩탑에서는 더 좋은 특징이기는 하다.

Computer, Music

  1. Lilypond는 어떤 프로그램인가? Lilypond 사용을 위한 준비
  2. 기본적인 악보 조판 > 이번 포스트
  3. 찬송가 악보 그리기
  4. 코드 있는 악보 그리기
  5. 좀더 예쁜 악보 만들기

기본적인 악보 조판

이미 LilyPondTool을 설치한 상태라면 쉽게 악보를 만들 수 있다. jedit의 메뉴에서 Plugins > LilyPondTool > Score > Score Setup Wizard… 를 선택한다. 그러면 다음 그림과 같은 창이 새롭게 나타난다.

Wizard Window 1

이제 원하는 정보들을 하나씩 채워넣으면 된다. 기본적인 보컬 악보를 그리려고 한다면 제목, 작곡가, 작사가 정도의 정보를 넣으면 될 것이다.

Wizard Window 2

두번째 뜨는 창에서는 어떤 시스템의 악보를 그리는지를 선택할 수 있다. 아래 그림처럼 Vocals > Voice (with lyrics)를 누른 후에 Add 버튼을 눌러서 맨 오른쪽 영역에 Voice (with lyrics)가 보이게 하자.

Wizard Window 3

Next를 누르면 이번에는 조성과 박자를 선택할 수 있다. 필요에 맞게 선택 후에는 가사를 넣을 것인지, 가사는 몇 절까지 넣을 것인지, 그리고 코드 이름을 넣을 것인지를 선택한다.

Wizard Window 4

이제 마지막으로 자잘한 정보들을 넣어주면 드디어 finish 버튼이 보인다.

Wizard Window 5

이제 finish 버튼을 눌러주면 아래 그림과 같이 lilypond script가 들어있는 창이 열릴 것이다.

Lilypond 편집 창

이 텍스트 문서를 적절하게 편집한 후에 lilypond를 실행하면 pdf의 깔끔한 악보를 얻을 수 있는 것이다. 사실 이 창에서 어떻게 문서를 편집해야 하는지 막막한 느낌이 들 수 밖에 없다. 가장 좋은 방법은 이미 만들어져 있는 파일을 적당히 수정하는 것이다. 그런 예제로 내가 편집했던 Emmanuel 악보를 아래에서 볼 수 있다. 소스 파일생성된 pdf 파일을 모두 다운로드받을 수 있다.

% Created on Sat Dec 11 13:25:46 SGT 2010
version "2.12.3"

header {
    title = markup {
        fontsize #5
    override #'(font-name . "Nanum Brush Script") { "임마누엘" }} 
    subtitle = "Emmanuel"
    composer = "Reuben Morgan"
    %poet = "Stephen Ha"
    tagline = ""
}

verseKor= lyricmode {
    set stanza = #"1. "
    거 룩 거 룩 경 배 드 리 네 왕 되 신 주 님
    할 렐 루 야 내 맘 에 오 사 날 새 롭 게 해
    임 마 누 엘 주 예 수 날 떠 나 지 않 네
    선 한 목 자 날 떠 나 지 않 네 임 마 누 엘
    거 룩 거 룩 전 능 의 주 주 밖 에 없 네
    거 룩 거 룩 전 능 의 주 주 밖 에 없 네
    _ 엘 임 마 누 엘 임 마 누 엘 임 마 누 엘
}

verseKorTwo = lyricmode {
    set stanza = #"2. "
    밤 하 늘 의 수 많 은 별 들 지 으 신 주 님
    주 의 사 랑 나 를 부 르 네 주 를 따 르 리
}

staffVoice = new Staff {
    override Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-8 . 4)
    time 4/4
    key e major
    clef treble
    relative c' {   
        context Voice = "melodyVoi" {
            dynamicUp
            r4 gis'8 gis gis4( gis8 fis16 e) | e4 e8 dis e4 gis | cis,2. cis8 dis | e4. fis8( fis) dis4. | break
            r4 gis8 gis gis4( gis8 fis16 e) | e4 e8 dis e4 gis | cis,2. cis8 dis | e4. fis8( fis) dis4. | break
            r8^markup {
                translate #'(-2 . 1)
                musicglyph #"scripts.segno"
            }  a'8 a cis cis2 | r4 fis,8 b( b) gis4. | r8 a a gis a4 gis8 fis( | fis1) |
            r8 a a cis( cis) cis4. | r8 fis, fis b gis4 e | cis2 r8. dis16 dis8. e16( | bar "||" e8^markup {
                translate #'(-1 . 3)
                italic "last time to "
                tiny raise #1
                translate #'(0 . 3)
                musicglyph #"scripts.coda"
            }
                ) e4.( e4) r4 |
            bar ":|" break
            r4 b'8 cis gis4 fis | r4 fis8 gis fis4 e | r4 b'8 cis gis4 fis | fis2( fis8) r4. |
            r4 b8 cis gis4 fis | r4 fis8 gis fis4 e | r4 b'8 cis gis4 fis | fis2( fis8_markup {
                italic smaller "D.S. al Coda"
            }
                ) r4. |
            bar "|:"
            e8^markup {
                translate #'(-2 . 1)
                musicglyph #"scripts.coda"
            } e4. r8. fis16 fis8. gis16( | gis8) gis4. r8. dis16 dis8. e16( bar ":|"| e8) e4. r8. fis16 fis8. gis16( | gis8) gis4.( gis2) |
        }

    bar "|."
    }

}

harmonies = new ChordNames chordmode {
    set majorSevenSymbol = markup { maj7}
    set chordChanges = ##t
    override ChordName #'font-size = #-1
    override ChordName #'font-name = #"Arial"
    e2. b4/dis | cis2.:m b4 | a1 | cis2:m b |
    e2. b4/dis | cis2.:m b4 | a1 | cis2:m b |
    fis1:m | b2/dis e/gis | a1 | b1 |
    fis1:m | b2/dis e/gis | a2. b4 | cis2.:m (b4/dis) |
    b2/dis cis:m | b a | b/dis cis:m | b a |
    b2/dis cis:m | b a | b/dis cis:m | b1 |
    cis2.:m b4/dis | e2. b4/dis | cis2.:m b4/dis | e1 |
}

score {
    >

    midi {
    }

  layout {
      indent = 0cm
      context {
      Score
      remove "Bar_number_engraver"
      }
  }
}

paper {
    myStaffSize = #26
    #(define fonts
    (make-pango-font-tree "NanumMyeongjo" "AppleGothic" "NanumGothicCoding" (/ myStaffSize 28)))
    #(set-paper-size "b5")
}