먼저 에디슨에 OSC 라이브러리를 설치한다. 여러 종류가 있지만 여기서는 liblo를 사용한다. Liblo는 Steve Harris가 만든 경량 OSC 라이브러리로 LGPL을 따르기 때문에 추후 제품 개발에 사용하더라도 저작권 문제가 없다.
http://liblo.sourceforge.net/
먼저 liblo를 다운받는다. 여러가지 방법이 있지만 git를 사용해 클론을 하는게 편하다.
# git clone git://liblo.git.sourceforge.net/gitroot/liblo/liblo
Cloning into 'liblo'...
remote: Counting objects: 2561, done.
remote: Compressing objects: 100% (1218/1218), done.
remote: Total 2561 (delta 2001), reused 1657 (delta 1341)
Receiving objects: 100% (2561/2561), 663.60 KiB | 104.00 KiB/s, done.
Resolving deltas: 100% (2001/2001), done.
Checking connectivity... done.
#
만일 위와 같은 출력 대신 git가 설치되어 있지 않다는 에러가 나오면 (초기 상태는 git가 설치되어 있지 않음) 먼저 아래 명령으로 git를 설치하고 다시 위의 명령을 입력해 주면 된다.
# opkg install git
git clone이 정상적으로 실행되었으면 현재 디렉토리에 liblo라는 디렉토리가 만들어 졌을 것이다. 소스코드 다운로드가 된 것이므로 라이브러리를 빌드한다.
# cd liblo
# ./autogen.sh
'README' -> 'README.MD'
...
Now type 'make' to compile.
# make
...
# make install
...
#
여기까지 에러가 없이 진행되었다면 라이브러리가 빌드되어 정상적으로 설치 된 것이다. 다만 라이브러리가 설치된 위치가 /usr/lib가 아니고 /usr/local/lib이므로 라이브러리를 검색할 디렉토리를 설정해 주는것이 편하다. 먼저 텍스트 에디터로 /etc/ld.so.conf 파일을 열어보면 파일 내용이 비어있는데 아래의 내용을 추가하고 저장한다.
# vi /etc/ld.so.conf
/lib
/usr/lib
/usr/local/lib
ld.so.conf 파일을 수정했으면 다음의 명령을 입력해 준다.
# ldconfig
이것으로 liblo 라이브러리 설치가 완전히 끝났다. 라이브러리 뿐 아니고 이 라이브러리를 사용하는 기본 툴(oscdump, oscsend)도 함께 설치되어 있어 이 툴들을 이용하면 임의의 OSC 메시지를 보내거나 메시지를 받아 내용을 화면에 출력할 수 있다.
# oscdump
oscdump version 0.28
Copyright (C) 2008 Kentaro Fukuchi
Usage: oscdump <port>
or oscdump <url>
Receive OpenSound Control messages and dump to standard output.
Description
port : specifies the listening port number.
url : specifies the server parameters using a liblo URL.
e.g. UDP "osc.udp://:9000"
Multicast "osc.udp://224.0.1.9:9000"
TCP "osc.tcp://:9000"
# oscsend
oscsend version 0.28
Copyright (C) 2008 Kentaro Fukuchi
Usage: oscsend hostname port address types values...
or oscsend url address types values...
Send OpenSound Control message via UDP.
Description
hostname: specifies the remote host's name.
port : specifies the port number to connect to the remote host.
url : specifies the destination parameters using a liblo URL.
e.g. UDP "osc.udp://localhost:9000"
Multicast "osc.udp://224.0.1.9:9000"
TCP "osc.tcp://localhost:9000"
address : the OSC address where the message to be sent.
types : specifies the types of the following values.
i - 32bit integer
h - 64bit integer
f - 32bit floating point number
d - 64bit (double) floating point number
s - string
S - symbol
c - char
m - 4 byte midi packet (8 digits hexadecimal)
T - TRUE (no value required)
F - FALSE (no value required)
N - NIL (no value required)
I - INFINITUM (no value required)
values : space separated values.
Example
$ oscsend localhost 7777 /sample/address iTfs 1 3.14 hello
#
examples 디렉토리에는 이 라이브러리를 사용한 c와 c++ 예제 프로그램들을 찾아볼 수 있다.
C나 C++로 개발을 하는 경우는 이걸로 충분하고 파이선을 사용하고 싶으면 python wrapper를 설치해줘야 한다. 여기서는 pyliblo를 사용한다.
# wget http://das.nasophon.de/download/pyliblo-0.9.2.tar.gz
--2015-01-21 00:42:04-- http://das.nasophon.de/download/pyliblo-0.9.2.tar.gz
Resolving das.nasophon.de... 83.151.28.113
Connecting to das.nasophon.de|83.151.28.113|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 100079 (98K) [application/x-gzip]
Saving to: 'pyliblo-0.9.2.tar.gz'
100%[======================================>] 100,079 43.4KB/s in 2.3s
2015-01-21 00:42:08 (43.4 KB/s) - 'pyliblo-0.9.2.tar.gz' saved [100079/100079]
# tar zxvf pyliblo-0.9.2.tar.gz
pyliblo-0.9.2/
...
pyliblo-0.9.2/COPYING
# cd pyliblo-0.9.2
# ./setup.py build
...
# ./setup.py install
...
#
여기까지 에러 없이 진행되면 pyliblo도 정상 설치가 된 것이다. Pyliblo를 사용한 간단한 예제 코드는 홈페이지(http://das.nasophon.de/pyliblo/examples.html)에서 찾을 수 있다.
다음번에는 실제로 스마트폰에서 OSC 프로토콜을 사용해 에디슨의 하드웨어를 직접 제어하도록 해 보겠다.
OSC in Intel Edison - Part 2
댓글 없음:
댓글 쓰기