피아노에 인터랙티브 프로젝션 매핑 포함
완제품
트위터 에서 실연 동영상을 투고했으므로 봐 주셨으면 합니다.
GitHub 에 아티팩트가 있습니다.
디자인
빌드 다이어그램, 사용 장치 소프트웨어에 대해 설명합니다.
구축도
구조도는 다음과 같습니다.
흐름을 간단히 설명하면,
① 피아노로부터 음성 데이터와 MIDI 데이터를 취득
※음성 데이터는 MIDI 인터페이스를 통한다
② 취득한 데이터 각각,
"음성 데이터: Audacity로 녹음"
MIDI 데이터 : Unity에서 이펙트 생성
③ 프로젝터로 투영
라는 느낌입니다.
사용 장치 소프트웨어
하드웨어
품목
규격・형번
피아노
CASIO Privia PX-S1000
MIDI 인터페이스
벨링거 UCA222
케이블류
오디오 레드 화이트 오디오 3.5mm 저항 있음 HDMIUSB A 남성-B 남성
소프트웨어
품목
버전
OS
Windows10 Home
Unity
2019.2.0f1
blender
2.79b
Audacity
2.2.2
PC로 MIDI 데이터 획득
keijiro 님의 MIDIreceiver 을 사용했습니다.
발안 당초는, 피아노 → Python → C# → Unity 와 같이 Python을 걸어 MIDI 데이터를 Unity에 처리시키려고 하고 있었습니다. 그러나 Python을 사용하면 Unity에서의 동작이 엄청 느려지는 문제를 알거나 C#만으로 MIDI를 읽는 것이 상당히 편하다는 것을 알고 폐안되었습니다.
Unity 내에서 실행하면 MIDI Receiver의 인스펙터로부터 C# 스크립트의 거동을 확인할 수 있습니다.
Unity 내에서의 MIDI 데이터 처리
C# 스크립팅
MIDI 데이터는 예를 들어
s(144) d(60, 127) from 3016879824
이렇게 구성되어 있으며 각각
s("144:on
128:off")
d("音高:21~108",
"ベロシティ")
from "デバイス名"
되어 있습니다.
Unity내에서 간이적인 건반을 작성해 입력한 MIDI데이터(21~108)까지의 수치 각각에 대응한 좌표로부터 파티클이 나와 애니메이션이 재생되도록 C# 스크립트 ParticleTrigger.cs
를 썼습니다. 파티클 사출 좌표 지정과 애니메이션 재생에 대해, 1옥타브마다 제어하는 편이 절대 좋았습니다만, 미친 나는 88분기의 switch case문을 썼습니다.
↓ 88 분기의 일부(대체 더 좋은 방법이 있는 생각이 든다…
파티클
파티클은 분위기 좋은 머티리얼을 선택하고, 사출 각도나 속도가 랜덤하게 빗나가도록 곡선의 조정을 실시했습니다.
↓ 파티클의 생존 기간의 속도 곡선
↓ 완성품
애니메이션
또 파티클 외에 건반을 빛나게 하는 애니메이션도 작성했습니다.
그렇다고 해도, 타키의 순간에 확실히 밝게 빛나 천천히 사라져 가는 간소한 애니메이션입니다.
Reference
이 문제에 관하여(피아노에 인터랙티브 프로젝션 매핑 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ushigai_sub/items/f3e5662fd521d03d05d4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
빌드 다이어그램, 사용 장치 소프트웨어에 대해 설명합니다.
구축도
구조도는 다음과 같습니다.
흐름을 간단히 설명하면,
① 피아노로부터 음성 데이터와 MIDI 데이터를 취득
※음성 데이터는 MIDI 인터페이스를 통한다
② 취득한 데이터 각각,
"음성 데이터: Audacity로 녹음"
MIDI 데이터 : Unity에서 이펙트 생성
③ 프로젝터로 투영
라는 느낌입니다.
사용 장치 소프트웨어
하드웨어
품목
규격・형번
피아노
CASIO Privia PX-S1000
MIDI 인터페이스
벨링거 UCA222
케이블류
오디오 레드 화이트 오디오 3.5mm 저항 있음 HDMIUSB A 남성-B 남성
소프트웨어
품목
버전
OS
Windows10 Home
Unity
2019.2.0f1
blender
2.79b
Audacity
2.2.2
PC로 MIDI 데이터 획득
keijiro 님의 MIDIreceiver 을 사용했습니다.
발안 당초는, 피아노 → Python → C# → Unity 와 같이 Python을 걸어 MIDI 데이터를 Unity에 처리시키려고 하고 있었습니다. 그러나 Python을 사용하면 Unity에서의 동작이 엄청 느려지는 문제를 알거나 C#만으로 MIDI를 읽는 것이 상당히 편하다는 것을 알고 폐안되었습니다.
Unity 내에서 실행하면 MIDI Receiver의 인스펙터로부터 C# 스크립트의 거동을 확인할 수 있습니다.
Unity 내에서의 MIDI 데이터 처리
C# 스크립팅
MIDI 데이터는 예를 들어
s(144) d(60, 127) from 3016879824
이렇게 구성되어 있으며 각각
s("144:on
128:off")
d("音高:21~108",
"ベロシティ")
from "デバイス名"
되어 있습니다.
Unity내에서 간이적인 건반을 작성해 입력한 MIDI데이터(21~108)까지의 수치 각각에 대응한 좌표로부터 파티클이 나와 애니메이션이 재생되도록 C# 스크립트 ParticleTrigger.cs
를 썼습니다. 파티클 사출 좌표 지정과 애니메이션 재생에 대해, 1옥타브마다 제어하는 편이 절대 좋았습니다만, 미친 나는 88분기의 switch case문을 썼습니다.
↓ 88 분기의 일부(대체 더 좋은 방법이 있는 생각이 든다…
파티클
파티클은 분위기 좋은 머티리얼을 선택하고, 사출 각도나 속도가 랜덤하게 빗나가도록 곡선의 조정을 실시했습니다.
↓ 파티클의 생존 기간의 속도 곡선
↓ 완성품
애니메이션
또 파티클 외에 건반을 빛나게 하는 애니메이션도 작성했습니다.
그렇다고 해도, 타키의 순간에 확실히 밝게 빛나 천천히 사라져 가는 간소한 애니메이션입니다.
Reference
이 문제에 관하여(피아노에 인터랙티브 프로젝션 매핑 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ushigai_sub/items/f3e5662fd521d03d05d4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
C# 스크립팅
MIDI 데이터는 예를 들어
s(144) d(60, 127) from 3016879824
이렇게 구성되어 있으며 각각
s("144:on
128:off")
d("音高:21~108",
"ベロシティ")
from "デバイス名"
되어 있습니다.
Unity내에서 간이적인 건반을 작성해 입력한 MIDI데이터(21~108)까지의 수치 각각에 대응한 좌표로부터 파티클이 나와 애니메이션이 재생되도록 C# 스크립트
ParticleTrigger.cs
를 썼습니다. 파티클 사출 좌표 지정과 애니메이션 재생에 대해, 1옥타브마다 제어하는 편이 절대 좋았습니다만, 미친 나는 88분기의 switch case문을 썼습니다.↓ 88 분기의 일부(대체 더 좋은 방법이 있는 생각이 든다…
파티클
파티클은 분위기 좋은 머티리얼을 선택하고, 사출 각도나 속도가 랜덤하게 빗나가도록 곡선의 조정을 실시했습니다.
↓ 파티클의 생존 기간의 속도 곡선
↓ 완성품
애니메이션
또 파티클 외에 건반을 빛나게 하는 애니메이션도 작성했습니다.
그렇다고 해도, 타키의 순간에 확실히 밝게 빛나 천천히 사라져 가는 간소한 애니메이션입니다.
Reference
이 문제에 관하여(피아노에 인터랙티브 프로젝션 매핑 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ushigai_sub/items/f3e5662fd521d03d05d4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)