wiki:PdArduinoTips

Pd, Arduino Tips & Troubleshooting

  1. Pd
    1. Mac에서 Pd를 실행하자마자 오류가 발생하는 경우
    2. Mac에서 Extra Library 설정법
    3. 전체 Wave 파일 재생하기
    4. Array, Save Contents
    5. [metro] 사용시 Stack Overflow 문제
    6. 기타 항목
  2. Arduino
    1. Arduino가 인식되지 않음
    2. Pduino 문제 해결
    3. 기타 항목


Pd

항상 Pd Console 창에 나타나는 오류 메시지를 확인해 주세요. 메시지에서 해결의 실마리를 찾을 수 있습니다.

Mac에서 Pd를 실행하자마자 오류가 발생하는 경우

Pd를 실행하고 곧바로, Console 창에 빨간 글씨로 뭐라고 오류 메시지가 표시되고 나서 Mac 응용 프로그램 오류 화면이 표시되는 경우가 있습니다.

이 문제는 Pd를 삭제하고 다시 설치하거나, 다른 버전을 설치해도 해결되지 않습니다.
일단 발견한 원인은 마지막으로 열었던 파일에 오류가 있을 경우입니다. Windows 버전에서는 그렇지 않는데, Mac에서는 어플리케이션을 실행하면 마지막에 사용하던 파일을 자동으로 다시 여는 듯 하네요.

해결 방법:

  1. Pd를 실행시켜서 오류 메시지가 무엇인지 확인한다. (빨간 글씨, 영문)
    메인창은 매우 짧은 시간 보이고 대신 오류 창이 나타나므로 여러 번 시도해 봐야 알 수 있습니다.
  2. 만약 /경로/특정/파일 을 열 수 없습니다 라는 메시지일 경우 해당 파일을 찾아, USB 메모리나 적당한 외부에 백업하고 나서 완전 삭제합니다. 디스크 내 이동이나 휴지통에 넣는 것으로도 해결되지 않습니다.
  3. Pd를 다시 실행시키면 정상 실행됩니다.

이런 방법 이외에, Pd가 설치된 경로를 명령창으로 찾아 들어가서 Debug 모드로 Pd를 실행해서 원인을 파악할 수도 있습니다.

Mac에서 Extra Library 설정법

OSC나 다른 추가 라이브러리를 사용하기 위해서는 Pd에서 Path 설정을 추가해 주어야 합니다.
하지만 Windows에서의 설정 방법과 다르게, Mac에서는 프로그램 설치 폴더에 있는 경로를 선택하는 것이 허용되지 않습니다.
일단 해당 폴더를 임의의 일반 문서 폴더 밑에 복사하고 그 폴더를 경로 선택하는 방법이 있지만, 좀 더 깔끔한 시스템 환경을 유지하고 싶은 분들을 위해 다음 방법을 알려 드립니다.

  1. 열려 있는 Pd를 모두 종료합니다.
  2. Finder 실행
  3. Menu에서 Go > Go to Folder 선택
  4. 경로 입력 대화창에서 /Users/(사용자이름)/Library/Preferences 입력
  5. org.puredata.pdextended.plist 파일 찾아서 열기
  6. 여러 개의 항목 중에서 pathXX로 시작하는 마지막 항목을 새로 만듦 (예: path36)
  7. 값은 다른 pathXX의 값을 복사해서 수정. 경로의 예는 다음과 같음: /Applications/Pd-extended.app/Contents/Resources/extra/mrpeach
  8. 파일 저장
  9. Pd 실행

전체 Wave 파일 재생하기

doc/3.audio.examples에 있는 예제는, 원본 wave file이 정확히 1초 (44100 Sample) 이거나 처음 1초만 사용하는 것을 기준으로 되어 있습니다.

녹음한 파일이 1초가 아니라면

  • 모자라면 공백을 넣어서 1초를 만들거나
  • 넘치면 1초 안에 들어가도록 다시 녹음하면 됩니다.;;;

하지만 이런 방법은 문제를 근본적으로 해결해 주지는 않지요.

해결을 위해서는 먼저 전체 Wave 파일을 다 읽도록 설정해야 합니다.

먼저 table (wave sample를 불러 오는) 의 property를 클릭하면 'Array Properties' 창이 뜹니다. 여기에서 Size를 Wave File의 Sample 수만큼으로 조정합니다.

정확한 Sample 수를 알기 위해서는 soundfiler 개체 뒤에 Number를 하나 달고, 파일을 read 시키면 Number 개체에 Sample 수가 표시됩니다. 이렇게 하면 전체 파일을 읽기는 하지만, 재생 속도가 맞지 않습니다.

완전한 해결을 위한 절차는 다음과 같습니다.

  1. soundfiler의 입력 메시지를 [read 파일명 테이블명] 에서 [read –resize 파일명 테이블명]으로 변경 (대상 테이블의 크기를 알아서 변경해 줍니다.)
  2. soundfiler에서 나온 값 (총 sample 수) 를 이용하여
  3. phasor~의 주파수를 계산하고 (44100 Sample일 때 1 Hz, x Sample이라면 y Hz. x와 y는 반비례 관계입니다.)
  4. phasor~에 곱해줄 값 (변동 Index) 도 전체 Sample 수로 바꿉니다.

Array, Save Contents

Array 개체의 경우 배열이기도 하지만, Wave 파형의 모양이나 많은 양의 숫자를 저장해 놓을 수 있습니다. 또한 그래프 영역에서 마우스를 Click-Drag 하면 그래프를 변형 (그리기) 할 수 있습니다.

해당하는 Array 위에서 오른쪽 Click - Properties를 선택하면 'Array Properties'와 'Canvas Properties'의 두 창이 나타납니다.
이 중에서 앞의 제목의 창을 보면 'Save Contents' 라는 Check 항목이 있는데요. 이 체크가 되어 있으면 Pd 패치를 닫았다가 다시 열어도 Array의 마지막 값이 저장되게 됩니다. 주로 사용자 지정 입력을 기록해 놓을 때 사용하면 좋겠습니다.
하지만 [tabwrite~] 와 같은 방법으로 Wave 파형을 보여주기 위한 Array의 경우, 이 체크를 해제하는 것이 좋습니다. 그때 그때 새로 만들어지는 내용이고, Patch 파일 크기만 커지게 하기 때문이지요.

[metro] 사용시 Stack Overflow 문제

[metro]를 동작시키려면 먼저 bang 신호를 주어야 합니다. 그리고 [metro]를 이용해서 다른 Object에 bang 신호를 주게 됩니다. 그런데 [metro]의 입력과 출력에 똑같은 bang을 연결하면

[bang[[metro] → 곧바로 [bang[ 실행 → 또 다시 [metro] → 반복...

이렇게 되면서 무한 반복 실행이 되고, Stack Overflow라는 오류 메시지가 출력되게 됩니다.

Pd의 어떤 버전에서는 오류 메시지만 발생시키고 별 영향이 없으나, 특정 버전에서는 발생할 때마다 소리가 뚝뚝 끊어지기 때문에 주의를 요합니다.

이를 해결하려면 [metro] 앞에 별도의 bang([bang[ 이나 [bng] 이나 [loadbang])을 두고 뒤에는 metro에서 필요한 Object로 바로 연결해 주면 됩니다. (이후의 bang에서 다시 metro로 돌려줄 필요가 없습니다.)

기타 항목

  • Gem에서 입체에 무늬 (Texture) 입히기
  • Message에서, Patch 단위에서 $1, $2 등 파라메터 사용 방법
  • Patch 단위로 고유한 이름 만들기 (table 이름 등): $0의 사용 방법
  • Pd에서 문자열 서식 조정 (String Formatting) 및 문자열 덧붙이기
  • Speed/Pitch/Volume을 (독립적으로) 조절 가능한 소리 재생
  • list 조작법과 내용의 길이 세기
  • list에 대해 packunpack 사용 방법
  • 경계값 (Threshold) 을 넘을 때만 특정 동작을 하게 하기
  • 동시에 여러 소리를 재생하는 방법
  • 소리 파일의 일부 구간을 재생하는 방법, 반복 재생하는 방법
  • 소리의 방향 조정 (Panning)
  • 소리의 크기 경계를 넘었을 때 특정 동작을 하게 하기
  • 숫자나 문자열 값 저장하기
  • 이벤트의 시간 간격을 측정하기, BPM 측정 방법
  • 카운터를 이용해서 이벤트가 일어난 횟수 세기
  • 특정 조건에 맞을 때만 파트가 동작하도록 하기
  • 한 Message로 여러 곳에 값 보내기

Arduino

Arduino가 인식되지 않음

Windows 환경에서는 포트가 번호로 지정됩니다. (예: COM3, COM4, ...)
컴퓨터에 연결된 아두이노의 시리얼 포트를 확인해 주세요. 시스템 정보 - 장치관리자 에서 확인할 수 있습니다.
또한 휴대폰이 연결되어 있는 경우 2개 이상의 시리얼 포트가 보일 수 있습니다.

Mac이나 리눅스 환경에서는 /dev/tty.usbmodemXXX (XXX는 숫자) 와 같은 형식으로 지정됩니다.

Pduino Patch에서 사용하기 위해서는,

  • 포트 선택 GUI Radio Button 이후에 있는 [open X[ 메시지를 [open /dev/ttyusbmodemXXX[ 로 변경하거나
  • 그냥 Radio Button을 순차적으로 선택하면서 Console에 표시되는 메시지를 확인합니다.
    대부분의 MacBook 환경에서는, Bluetooth 모뎀 등등을 지나서 몇 번째 정도에서 Arduino 장치가 열렸다고 표시됩니다.
    이제 이 번호를 기억하고 이후에 사용하면 됩니다.

Pduino 문제 해결

명령을 전혀 듣지 않는 경우

  • Port 번호 확인: 'Arduino 개발 환경'에서 확인, Windows에서는 장치 관리자에서도 확인 가능
  • 포트 선택 후 (open), Pin 입출력 모드를 설정하는 명령이 전달되어야 합니다. loadbang으로 한 번에 명령을 내리면, 순서가 뒤바뀔 수 있습니다.
  • 경로 내에, 또는 같은 폴더에 arduino.pd 패치가 존재해야 합니다. (없으면 해당 개체의 테두리가 빨간색 점선으로 표시)
    이 파일이 Pd-Arduino 통신을 담당합니다.
  • Reset 버튼을 눌러서 Arduino를 초기화 시킵니다.
  • 여러 개의 Pd 프로그램을 실행시키지 않았는지 확인합니다.
  • USB 케이블을 뽑았다가 다시 연결: 회로가 합선되었을 경우 (5V - Ground를 직접 연결) Arduino Board를 재연결하기 전까지 기계의 응답이 없을 수 있습니다.
  • 다른 외부장치 제거 (주로 스마트폰)
  • 컴퓨터 재부팅 (!)

unknown_input_command 라는 오류가 나올 경우

통신 상태가 불량하거나 (거의 가능성이 없음),
주로 Arduino 프로그램 공간에 Firmata가 아닌 다른 코드가 기록되어 있는 경우 발생합니다.

  • 케이블 연결 상태 확인
  • Firmata 재기록

기타 항목

  • Analog Sensor의 값 범위에 따라 다른 동작을 하도록 만들기
  • Arduino Mega에서 Pduino-Firmata 사용법
  • Arduino에서 보낸 Serial 통신 데이터를 Pd에서 읽고 처리하기
  • Push Button 여러 개를 Analog 입력 Pin 1개에 연결해서 사용하기
  • Push Button을 누른 이후에 Pd에서 특정한 동작을 시작하게 하기
  • 초음파 Sensor를 사용할 수 있도록 Pduino-Firmata 수정

Add comment


학교분류

Last modified 9 years ago Last modified on May 13, 2014, 11:29:06 PM