5. 입출력과 통신
5.1. 파일 입출력 및 데이터 저장
프로세싱에서는 다양한 형식의 파일을 읽고 쓸 수 있습니다. 예를 들어, 텍스트 파일을 읽고 쓰는 방법은 다음과 같습니다.
// 텍스트 파일 읽기
String[] lines = loadStrings("data.txt");
for (String line : lines) {
println(line);
}
// 텍스트 파일 쓰기
String[] linesToWrite = {"Hello", "World"};
saveStrings("output.txt", linesToWrite);
이 외에도 프로세싱에서는 JSON, CSV, XML 등의 데이터 형식을 지원하며, 해당 데이터를 읽고 쓸 수 있는 함수를 제공합니다.
5.2. 웹캠 및 마이크 입력
프로세싱에서는 웹캠과 마이크를 사용하여 영상과 음성을 입력받을 수 있습니다. 웹캠을 사용하려면 다음과 같은 코드를 작성하면 됩니다.
import processing.video.*;
Capture cam;
void setup() {
size(640, 480);
cam = new Capture(this, 640, 480);
cam.start();
}
void draw() {
if (cam.available()) {
cam.read();
}
image(cam, 0, 0);
}
마이크 입력은 사운드 라이브러리를 사용하여 처리할 수 있습니다.
import processing.sound.*;
Amplitude amp;
AudioIn in;
void setup() {
size(400, 200);
amp = new Amplitude(this);
in = new AudioIn(this, 0);
in.start();
amp.input(in);
}
void draw() {
background(0);
float level = amp.analyze();
ellipse(width/2, height/2, 10+level*400, 10+level*400);
}
5.3. 네트워크 통신 기초
프로세싱에서는 TCP와 UDP 통신을 지원합니다. 간단한 TCP 서버를 작성하려면 다음과 같은 코드를 작성하면 됩니다.
import processing.net.*;
Server server;
Client client;
void setup() {
size(400, 200);
server = new Server(this, 12345);
}
void draw() {
client = server.available();
if (client != null) {
String message = client.readString();
println(message);
}
}
5.4. OSC 및 MIDI 통신
프로세싱에서는 OSC 및 MIDI 통신을 지원하며, 이를 사용하여 외부 장비와 통신할 수 있습니다. OSC 통신을 위해서는 oscP5 라이브러리를 사용하며, 코드는 다음과 같습니다.
import oscP5.*;
import netP5.*;
OscP5 oscP5;
NetAddress destination;
void setup() {
size(400, 200);
oscP5 = new OscP5(this, 12345);
destination = new NetAddress("127.0.0.1", 12345);
}
void draw() {
OscMessage message = new OscMessage("/test");
message.add("Hello, OSC!");
oscP5.send(message, destination);
}
void oscEvent(OscMessage msg) {
if (msg.checkAddrPattern("/test")) {
println("Received: " + msg.get(0).stringValue());
}
}
MIDI 통신을 위해서는 The MidiBus 라이브러리를 사용하며, 코드는 다음과 같습니다.
import themidibus.*;
MidiBus midi;
void setup() {
size(400, 200);
MidiBus.list(); // 사용 가능한 MIDI 장치 목록 출력
midi = new MidiBus(this, 0, 1); // 첫 번째 입력 장치와 두 번째 출력 장치 사용
}
void draw() {
// 아무것도 하지 않음
}
void noteOn(int channel, int pitch, int velocity) {
println("Note On: " + pitch);
}
void noteOff(int channel, int pitch, int velocity) {
println("Note Off: " + pitch);
}
void controllerChange(int channel, int number, int value) {
println("Controller Change: " + number + " Value: " + value);
}
이렇게 프로세싱을 사용하여 파일 입출력, 웹캠 및 마이크 입력, 네트워크 통신, OSC 및 MIDI 통신 등 다양한 입출력과 통신 기능을 구현할 수 있습니다. 이를 활용하여 창의적인 프로젝트를 만들어보세요!
반응형
'GD's IT Lectures : 기초부터 시리즈 > 프로세싱(Processing) 기초부터 ~' 카테고리의 다른 글
[프로세싱(Processing) : 중급] 외부 라이브러리 활용과 확장 (0) | 2023.05.01 |
---|---|
[프로세싱(Processing) : 중급] 데이터 시각화와 인터랙티브 디자인 (0) | 2023.05.01 |
[프로세싱(Processing) : 중급] 사운드 처리 (0) | 2023.05.01 |
[프로세싱(Processing) : 중급] 애니메이션과 입체 공간 (0) | 2023.05.01 |
[프로세싱(Processing) : 중급] 고급 그래픽 기법 (0) | 2023.05.01 |
댓글