Changes between Initial Version and Version 1 of Pd Arduino Tips


Ignore:
Timestamp:
May 13, 2014, 11:29:06 PM (9 years ago)
Author:
YT Hwang
Comment:

페이지 작성.

Legend:

Unmodified
Added
Removed
Modified
  • Pd Arduino Tips

    v1 v1  
     1= Pd, Arduino Tips & Troubleshooting =
     2[[PageOutline(2-3,,inline)]]
     3
     4[[BR]]
     5* 관련 페이지: [wiki:컴퓨터프로그래밍개론TA]
     6
     7== Pd ==
     8항상 Pd Console 창에 나타나는 오류 메시지를 확인해 주세요. 메시지에서 해결의 실마리를 찾을 수 있습니다.
     9
     10=== Mac에서 Pd를 실행하자마자 오류가 발생하는 경우 ===
     11Pd를 실행하고 곧바로, Console 창에 빨간 글씨로 뭐라고 오류 메시지가 표시되고 나서 Mac 응용 프로그램 오류 화면이 표시되는 경우가 있습니다.
     12
     13이 문제는 Pd를 삭제하고 다시 설치하거나, 다른 버전을 설치해도 해결되지 않습니다.[[BR]]
     14일단 발견한 원인은 마지막으로 열었던 파일에 오류가 있을 경우입니다. Windows 버전에서는 그렇지 않는데, Mac에서는 어플리케이션을 실행하면 마지막에 사용하던 파일을 자동으로 다시 여는 듯 하네요.
     15
     16해결 방법:
     171. Pd를 실행시켜서 오류 메시지가 무엇인지 확인한다. (빨간 글씨, 영문)[[BR]]
     18 메인창은 매우 짧은 시간 보이고 대신 오류 창이 나타나므로 여러 번 시도해 봐야 알 수 있습니다.
     192. 만약 `/경로/특정/파일 을 열 수 없습니다` 라는 메시지일 경우 해당 파일을 찾아, USB 메모리나 적당한 외부에 백업하고 나서 완전 삭제합니다. 디스크 내 이동이나 휴지통에 넣는 것으로도 해결되지 않습니다.
     203. Pd를 다시 실행시키면 정상 실행됩니다.
     21
     22이런 방법 이외에, Pd가 설치된 경로를 명령창으로 찾아 들어가서 Debug 모드로 Pd를 실행해서 원인을 파악할 수도 있습니다.
     23
     24=== Mac에서 Extra Library 설정법 ===
     25OSC나 다른 추가 라이브러리를 사용하기 위해서는 Pd에서 Path 설정을 추가해 주어야 합니다.[[BR]]
     26하지만 Windows에서의 설정 방법과 다르게, Mac에서는 프로그램 설치 폴더에 있는 경로를 선택하는 것이 허용되지 않습니다.[[BR]]
     27일단 해당 폴더를 임의의 일반 문서 폴더 밑에 복사하고 그 폴더를 경로 선택하는 방법이 있지만, 좀 더 깔끔한 시스템 환경을 유지하고 싶은 분들을 위해 다음 방법을 알려 드립니다.
     28
     291. 열려 있는 Pd를 모두 종료합니다.
     302. Finder 실행
     313. Menu에서 Go > Go to Folder 선택
     324. 경로 입력 대화창에서 `/Users/(사용자이름)/Library/Preferences` 입력
     335. `org.puredata.pdextended.plist` 파일 찾아서 열기
     346. 여러 개의 항목 중에서 `pathXX`로 시작하는 마지막 항목을 새로 만듦 (예: `path36`)
     357. 값은 다른 `pathXX`의 값을 복사해서 수정. 경로의 예는 다음과 같음: `/Applications/Pd-extended.app/Contents/Resources/extra/mrpeach`
     368. 파일 저장
     379. Pd 실행
     38
     39=== 전체 Wave 파일 재생하기 ===
     40`doc/3.audio.examples`에 있는 예제는, 원본 wave file이 정확히 1초 (44100 Sample) 이거나 처음 1초만 사용하는 것을 기준으로 되어 있습니다.
     41
     42녹음한 파일이 1초가 아니라면
     43- 모자라면 공백을 넣어서 1초를 만들거나
     44- 넘치면 1초 안에 들어가도록 다시 녹음하면 됩니다.;;;
     45
     46하지만 이런 방법은 문제를 근본적으로 해결해 주지는 않지요.
     47
     48해결을 위해서는 먼저 전체 Wave 파일을 다 읽도록 설정해야 합니다.
     49
     50먼저 `table` (wave sample를 불러 오는) 의 property를 클릭하면 'Array Properties' 창이 뜹니다.
     51여기에서 Size를 Wave File의 Sample 수만큼으로 조정합니다.
     52
     53정확한 Sample 수를 알기 위해서는 `soundfiler` 개체 뒤에 `Number`를 하나 달고, 파일을 read 시키면 `Number` 개체에 Sample 수가 표시됩니다.
     54이렇게 하면 전체 파일을 읽기는 하지만, 재생 속도가 맞지 않습니다.
     55
     56완전한 해결을 위한 절차는 다음과 같습니다.
     57
     581. `soundfiler`의 입력 메시지를 `[read 파일명 테이블명]` 에서 `[read –resize 파일명 테이블명]`으로 변경 (대상 테이블의 크기를 알아서 변경해 줍니다.)
     592. `soundfiler`에서 나온 값 (총 sample 수) 를 이용하여
     603. `phasor~`의 주파수를 계산하고 (44100 Sample일 때 1 Hz, x Sample이라면 y Hz. x와 y는 반비례 관계입니다.)
     614. `phasor~`에 곱해줄 값 (변동 Index) 도 전체 Sample 수로 바꿉니다.
     62
     63=== Array, Save Contents ===
     64`Array` 개체의 경우 배열이기도 하지만, Wave 파형의 모양이나 많은 양의 숫자를 저장해 놓을 수 있습니다.
     65또한 그래프 영역에서 마우스를 Click-Drag 하면 그래프를 변형 (그리기) 할 수 있습니다.
     66
     67해당하는 `Array` 위에서 오른쪽 Click - Properties를 선택하면 'Array Properties'와 'Canvas Properties'의 두 창이 나타납니다.[[BR]]
     68이 중에서 앞의 제목의 창을 보면 'Save Contents' 라는 Check 항목이 있는데요. 이 체크가 되어 있으면 Pd 패치를 닫았다가 다시 열어도 Array의 마지막 값이 저장되게 됩니다. 주로 사용자 지정 입력을 기록해 놓을 때 사용하면 좋겠습니다.[[BR]]
     69하지만 [tabwrite~] 와 같은 방법으로 Wave 파형을 보여주기 위한 Array의 경우, 이 체크를 해제하는 것이 좋습니다. 그때 그때 새로 만들어지는 내용이고, Patch 파일 크기만 커지게 하기 때문이지요.
     70
     71=== `[metro]` 사용시 Stack Overflow 문제 ===
     72`[metro]`를 동작시키려면 먼저 bang 신호를 주어야 합니다. 그리고 `[metro]`를 이용해서 다른 Object에 bang 신호를 주게 됩니다.
     73그런데 `[metro]`의 입력과 출력에 똑같은 bang을 연결하면
     74 `[bang[` → `[metro]` → 곧바로 `[bang[` 실행 → 또 다시 `[metro]` → 반복...
     75이렇게 되면서 무한 반복 실행이 되고, Stack Overflow라는 오류 메시지가 출력되게 됩니다.
     76
     77Pd의 어떤 버전에서는 오류 메시지만 발생시키고 별 영향이 없으나, 특정 버전에서는 발생할 때마다 소리가 뚝뚝 끊어지기 때문에 주의를 요합니다.
     78
     79이를 해결하려면 `[metro]` 앞에 별도의 bang(`[bang[` 이나 `[bng]` 이나 `[loadbang]`)을 두고
     80뒤에는 `metro`에서 필요한 Object로 바로 연결해 주면 됩니다.
     81(이후의 `bang`에서 다시 `metro`로 돌려줄 필요가 없습니다.)
     82
     83=== 기타 항목 ===
     84- Gem에서 입체에 무늬 (Texture) 입히기
     85- Message에서, Patch 단위에서 `$1`, `$2` 등 파라메터 사용 방법
     86- Patch 단위로 고유한 이름 만들기 (table 이름 등): `$0`의 사용 방법
     87- Pd에서 문자열 서식 조정 (String Formatting) 및 문자열 덧붙이기
     88- !Speed/Pitch/Volume을 (독립적으로) 조절 가능한 소리 재생
     89- `list` 조작법과 내용의 길이 세기
     90- `list`에 대해 `pack` 및 `unpack` 사용 방법
     91- 경계값 (Threshold) 을 넘을 때만 특정 동작을 하게 하기
     92- 동시에 여러 소리를 재생하는 방법
     93- 소리 파일의 일부 구간을 재생하는 방법, 반복 재생하는 방법
     94- 소리의 방향 조정 (Panning)
     95- 소리의 크기 경계를 넘었을 때 특정 동작을 하게 하기
     96- 숫자나 문자열 값 저장하기
     97- 이벤트의 시간 간격을 측정하기, BPM 측정 방법
     98- 카운터를 이용해서 이벤트가 일어난 횟수 세기
     99- 특정 조건에 맞을 때만 파트가 동작하도록 하기
     100- 한 Message로 여러 곳에 값 보내기
     101
     102== Arduino ==
     103=== Arduino가 인식되지 않음 ===
     104Windows 환경에서는 포트가 번호로 지정됩니다. (예: `COM3`, `COM4`, ...)[[BR]]
     105컴퓨터에 연결된 아두이노의 시리얼 포트를 확인해 주세요. 시스템 정보 - 장치관리자 에서 확인할 수 있습니다.[[BR]]
     106또한 휴대폰이 연결되어 있는 경우 2개 이상의 시리얼 포트가 보일 수 있습니다.
     107
     108Mac이나 리눅스 환경에서는 `/dev/tty.usbmodemXXX` (XXX는 숫자) 와 같은 형식으로 지정됩니다.
     109
     110Pduino Patch에서 사용하기 위해서는,
     111- 포트 선택 GUI Radio Button 이후에 있는 `[open X[` 메시지를 `[open /dev/ttyusbmodemXXX[` 로 변경하거나
     112- 그냥 Radio Button을 순차적으로 선택하면서 Console에 표시되는 메시지를 확인합니다.[[BR]]
     113 대부분의 !MacBook 환경에서는, Bluetooth 모뎀 등등을 지나서 몇 번째 정도에서 Arduino 장치가 열렸다고 표시됩니다.[[BR]]
     114 이제 이 번호를 기억하고 이후에 사용하면 됩니다.
     115
     116=== Pduino 문제 해결 ===
     117==== 명령을 전혀 듣지 않는 경우 ====
     118- Port 번호 확인: 'Arduino 개발 환경'에서 확인, Windows에서는 장치 관리자에서도 확인 가능
     119- 포트 선택 후 (open), Pin 입출력 모드를 설정하는 명령이 전달되어야 합니다. `loadbang`으로 한 번에 명령을 내리면, 순서가 뒤바뀔 수 있습니다.
     120- 경로 내에, 또는 같은 폴더에 `arduino.pd` 패치가 존재해야 합니다. (없으면 해당 개체의 테두리가 빨간색 점선으로 표시)[[BR]]
     121 이 파일이 Pd-Arduino 통신을 담당합니다.
     122- Reset 버튼을 눌러서 Arduino를 초기화 시킵니다.
     123- 여러 개의 Pd 프로그램을 실행시키지 않았는지 확인합니다.
     124- USB 케이블을 뽑았다가 다시 연결: 회로가 합선되었을 경우 (5V - Ground를 직접 연결) Arduino Board를 재연결하기 전까지 기계의 응답이 없을 수 있습니다.
     125- 다른 외부장치 제거 (주로 스마트폰)
     126- 컴퓨터 재부팅 (!)
     127
     128==== `unknown_input_command` 라는 오류가 나올 경우 ====
     129통신 상태가 불량하거나 (거의 가능성이 없음),[[BR]]
     130주로 Arduino 프로그램 공간에 Firmata가 아닌 다른 코드가 기록되어 있는 경우 발생합니다.
     131
     132- 케이블 연결 상태 확인
     133- Firmata 재기록
     134
     135=== 기타 항목 ===
     136- Analog Sensor의 값 범위에 따라 다른 동작을 하도록 만들기
     137- Arduino Mega에서 Pduino-Firmata 사용법
     138- Arduino에서 보낸 Serial 통신 데이터를 Pd에서 읽고 처리하기
     139- Push Button 여러 개를 Analog 입력 Pin 1개에 연결해서 사용하기
     140- Push Button을 누른 이후에 Pd에서 특정한 동작을 시작하게 하기
     141- 초음파 Sensor를 사용할 수 있도록 Pduino-Firmata 수정
     142 
     143[[AddComment]]
     144----
     145[wiki:학교분류]