본문 바로가기
GD's IT Lectures : 기초부터 시리즈/프로세싱(Processing) 기초부터 ~

[프로세싱(Processing) : 중급] 입출력과 통신

by GDNGY 2023. 5. 1.

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 통신 등 다양한 입출력과 통신 기능을 구현할 수 있습니다. 이를 활용하여 창의적인 프로젝트를 만들어보세요!

반응형

댓글