SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
WeSA Academy
Native A/V
in C/C++
JUCE
&
누설
2015/2016년 WeSA 공연에 참가하여, 다른 아티스트들의
사용 도구들을 어깨너머로 훔쳐보았습니다. 기억나는대로 적어보자면
1. Max/MSP
2. SuperCollider
3. Ableton Live
4. QuartzComposer
5. OpenFrameworks
6. Processing
9. 기타(Modular System, Arduino, Lisp ...)
등을 여러가지 형태로 조합하여 사용하고 있었습니다.
7. PureData
8. vvvv
미신
"A 프로그램은 B 프로그램보다 느려....."
"C 프로그램은 불안정하다던데....."
"저거 D 프로그램으로 만든거야? D 로도 저렇게 된다고?"
"E 프로그램은 윈도우에서만 돌지 않아?"
"F 프로그램은 이제 개발 안된다는데...."
"G 프로그램은 우리나라에 쓰는 사람들이 없어서
정보 교환이 안돼"
그리고 공포
"지금 내가 공부하고 있는 이 도구는 확실한 비전이 있을까?"
"이번에 새로 나온 X 프로그램이 지금 내가 공부하는 Y 프로그램보다 좋다는데 지금이라도
Y 때려치우고 X 를 해야되나?"
"지금은 공부 중이니까 그냥 쓰는데, 나중에 혹시 내가 잘되서 아주 큰 프로젝트를 맡았는데
그때가서 내가 쓰는 이 도구의 성능이 문제가 되지는 않을까?"
"아몰랑...그냥 Max/MSP 하면 되는거 아냐?"
Value
매일 같이 쏟아지는 새로운 기술과 도구들.......
혹시나 뒤쳐지지 않을까 하는 불안함 속에 잠들지 못하던 수 많은 밤
그 속에서 변하지 않는 가치가 있다면.....?
고전과 새로움을 관통하는 큰 줄기가 있지는 않을까?
Native A/V
-in C/C++
-JUCE
개요
Native A/V 강좌는 C/C++ 언어의 관점에서, 현재 멀티미디어 프로그래밍에 널리 사용되는
특히 C++ 프로그래밍이 필수적인 OpenFrameworks / JUCE 를 중심으로
C/C++ 의 구조, API 라이브러리등을 살펴보며 이를 통해 문법, 기능, 활용 방법등을 이해합니다.
기술들을 두루 살펴보게 됩니다.
프로세스, 메모리 관리, 쓰레드, 네트워크, I/O 등 도구에 상관없이 컴퓨터 프로그램을
공부하며 각자가 사용하는 도구들의 작동원리를 더 깊이 이해하고 효과적이며, 효율적인
구성하는 주요 요소들을 두루 살펴보고 하나의 프로그램이 어떻게 돌아가는지 등의 개념들을
프로그래밍을 할 수 있도록, 더 나아가 확장하고 변형하는 단계에 까지 도달 할 수 있도록 하는 것이
Native A/V 강좌의 목표입니다.
Do it your self
당신의 A 프로그램이 X 라는 기능을 지원하지 않는다면 당신은 어떻게 하시겠습니까?
1. X 기능을 지원하는 B 프로그램을 조합한다.
2. 사실 X 라는 기능은 나에게 꼭 필요한 게 아니었어 라고 정리하고, X 라는 기능을
머리 속에서 지운다.
4. 간지나게 X 기능을 구현하여 A 프로그램을 확장한다. X 기능을 원하는 다른 유저들에게
능력자로 칭송받으며, 페이스북 좋아요의 갯수를 신경쓴다.
3. 테크놀로지의 세계에 염증을 느끼고, 우크렐레를 구입한 후 오키나와로 떠난다.
대상
1. 프로그래밍에 입문하고자 하시는 분들
있는건지 답답하고 불안한 분들
C/C++ 언어라고 하여, 어렵고 복잡한 내용을 다루지 않습니다.
2. Max/MSP 나 SuperCollider 등을 사용하고는 있는데 이걸 지금 개념차게 쓰고
철저하게 이해 중심, 개념 탑재를 위한 여러 기술들을 두루 체험하는 것을 목표로 합니다.
이 후 공부한 내용들을 어떻게 실전에 접목 할 것인지에 대한 여러 다양한 가능성을 살펴봅니다.
3. UGen, External, Plug-ins 등 자신의 도구를 위한 확장들을 만들어, 도구 자체가
가지고 있는 기능상의 제한들을 넘어서고 싶은 분들
Contents
이름
키
나이
몸무게
강동원
35
186cm
65kg
달려라! 말해라! 울어라!
춤춰라! 잠자라!날아라!
????
박성민
34
1??cm
?5kg
사람(Human)
속성(Attribute)
Class
Instance(인스턴스)
강동원과 박성민
메소드(Method)/메시지
객체지향 프로그래밍
Processing VS OpenFrameworks
프로세싱과 오픈프레임웍스의 비교는 전통적으로 이어져 온 Java VS C++ 전쟁의 연장선이다.
정말 C++ 은 Java 보다 빠른가? 그렇다면 왜 그러한가?
1. VM(Virtual Machine) vs Native Computing
2. 메모리 관리
- malloc / free, new / delete 를 통한 수동 관리
- 스마트 포인터
Garbage Collection 자동관리VS
로 이해하는 Effective Programming
3. 자료구조
Array, Vector, LinkedList, Queue, Map 등 다양한 컨테이너들의 특성과 장단점을 살펴보고
퍼포먼스 효율을 높이기 위해서는 어떻게 해야 할까?
어떤 상황에서 어떤 것을 사용해야 하는 지를 파악한다.
4. CPU vs GPU
쉐이더의 개념과 원리를 이해하고 이를 통해 화려하고 미려한 비주얼만을 위해서가 아닌, 연산의 효율성 측면에서
더하여 CUDA, OpenCL 등의 GPGPU 기술도 간략하게 둘러보자.본 쉐이더의 효용성을 살펴본다.
- 본 강좌에서는 GPGPU 및 쉐이더 프로그래밍 강의를 진행하지 않습니다. 어디까지나 개념 정리, 이해까지가
이 강좌의 범위입니다.
동시성 프로그래밍과 병렬 프로그래밍
대부분의 그래픽 툴킷(Processing 혹은 OpenFrameworks) 들은 하나의 쓰레드(보통은 MainThread) 안에서 거의 모든 그래픽 관련
연산을 수행한다.
만약 P5 나 OF 의 draw() 함수 안에서 네트워크, 파일 입출력등의 I/O 작업을 진행 한다면 이는 프로그램 내 심각한 병목지점이
될 수 있다.
또한 아주 거대하고 복잡한 연산을 수행하는 단일 작업을 나누어 CPU 내의 여러 Core 에 분담하게 하는 방법론등도
멀티 쓰레딩 프로그래밍을 통해 연산 내 블로킹을 발생시키는 작업을 분리해내는 과정을 알아보자.
살펴본다.
Input and Output
File I/O
Network I/O (TCP/IP)
- TCP
- UDP
Serial
MIDI
Network I/O
MIDI I/O
Audio I/O Serial I/O
Video I/O
AUDIO
BUILD PHASE
사람이 읽을 수 있는 소스파일이 실행 파일, 혹은 라이브러리 파일이 되는 과정을 단계별로 알아본다.
더하여 OpenFrameworks 에서 자체적으로 혹은 addon 으로도 제공해주지 않는 기능을 외부 라이브러리를 통해
추가하는 방법도 살펴본다.
전처리기
컴파일러
어셈블러
링커
Hello.c
excutable
Hello.s
Hello.i
Hello.o
외부 라이브러리(dll, so, dylib)
Git & Github
소스코드의 이력, 버젼 관리 도구로 가장 널리 사용되는 git 와 호스팅 플랫폼인 github 사용법을 알아본다.
하나의 소스파일은 한 번 생성된 이 후, 끊임없이 변화한다.
그리고 하나의 프로젝트(프로그램)는 여러 개의 소스파일로 구성된다.
git 는 각 소스파일의 시점별 상태를 기록하고, 관리한다.
언제든 특정 시점으로 되돌아 갈 수 있다.
분기를 나누어 여러 버젼으로 관리 할 수 있다.
git 는 프로젝트 내 소스코드의 발전과 변화의 각 상태를 저장한다.
좋은 아이디어는 병합
우리 작업하다보면 여러 삽질을 하게 되죠?
그러는 와중에 실수로, 만들어 놓은 좋은 아이디어들을 날려버리거나
좋다고 작업했는데, 아까 그게 더 좋았던 것 같아서 다시 되돌아가서 작업해야
하는 상황들 있잖아요. 그럴때 쓰면 좋습니다!
JUCE
JUCE JUCE 는 빠른 멀티미디어 어플리케이션 개발을 위한
C++ 프레임워크입니다.
JUCE
처음 들어보셨다구요? 하지만 이미 아래와 같은 넓은 유저층을 가지고 있는 검증된 개발 도구 입니다.
알려진 customer 목록들: https://www.juce.com/made-with-juce/users
최근 Ableton 은 자사의 Push2 를 JUCE 로 확장 할 수 있는 개발환경을
발표하기도 하였습니다.
http://cdm.link/2017/06/ableton-now-made-easy-developer-work-push-2/
독립적으로 개발 운영되다 2014년에 Seaboard( ) 로 유명한 ROLI 사에 인수되었습니다.
JUCE
Why JUCE?
플랫폼 ISSUE
각 OS(플랫폼) 마다 다른 개발 API 를 가지고 있기 때문에 발생되는 문제
하나의 코드 베이스로 여러 플랫폼에서 돌아가는 App 을 만들고 싶다면?
YES! JUCE can do it!
JUCE
Why JUCE?
플랫폼 ISSUE
각 OS(플랫폼) 마다 다른 개발 API 를 가지고 있기 때문에 발생되는 문제
하나의 코드 베이스로 여러 플랫폼에서 돌아가는 App 을 만들고 싶다면?
YES! JUCE can do it!
JUCE
JUCE 로 Audio Plug-in 제작 과정
Projucer 에서 Audio Plug-in 선택
프로젝트 설정(선택 가능한 타겟 플랫폼들) 생성된 프로젝트를 build! DAW 에서 인식되는 플러그인
플러그인 완성!
JUCE
JUCE 에서 제공하는 다양한 예제들
JUCE
JUCE 프로그램의 구조
JUCE 는 프로젝트 빌더를 통해 생성된 템플릿의 빈 부분을 유저가 채워 넣어가며
완성해 가는 방식으로.오픈프레임웍스와 매우 유사한 감각으로 프로그래밍이 진행됩니다.
이곳에서 입력된 오디오 데이터를 어떻게 처리 할 지를
프로그램 합니다.
JUCE
JUCE 는 현재 무료로 모든 기능을 사용 할 수 있습니다.
JUCE 라이센스 정책
무료 사용자의 경우 프로그램 시작 후 App 하단에 3초간 splash 이미지가 나타났다 사라지며, App 으로 최대 5만달러 까지만
상업적 활동을 할 수 있습니다.
만약 당신이 무료 JUCE 로 만든 앱으로 5만달러 이상을 벌었거나, 혹은 splash 이미지가 불편하다면 두 가지 선택이 가능합니다.
1. 상용 라이센스를 구매한다.
2. App 을 GPL 라이센스로 발표한다.
1) Indie 라이센스(월간 35달러 혹은 한 번에 700달러)
2) Pro 라이센스(월간 65달러 혹은 한 번에 1,300달러)
- splash 이미지 제거
- 총 20만 달러까지 상업적 활용 가능
- 제한 사항 없음
splash 이미지가 약 3초간 있다 사라짐(무료버젼)
JUCE
JUCE 는 SuperCollider 나 Max/MSP 와는 다르게 “오디오 어플리케이션” 제작을 위한 전문 도구입니다.
물론 Max/MSP 로도 App 개발을 할 수 있지만, 좀 더 다양한 플랫폼에서 작고 가볍게, 혹은 크고 전문적으로 작동하는
어플리케이션을 만들 수 있습니다
오디오 프로그래밍 / 어플리케이션 개발에 관심있으신 분들의 많은 참여 부탁드립니다!
WeSA 아카데미에서는 특히 Audio Plug-in(AU/VST) 개발에 중심을 두고 강좌를 진행할 예정입니다.
누구를 위한 JUCE ?
JUCE 는 매 년 ADC(Audio Developer Conference) 를 개최하여 오디오 프로그래밍과 관련된 여러 다양한 이슈들을
공유 / 연구하고 있습니다.
관심있으신 분들은 https://www.juce.com/adc-2017 를 방문해보세요!

Mais conteúdo relacionado

Semelhante a Native A/V

격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it goChris Ohk
 
소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자Deogtae Kim
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기Soojin Ro
 
피지컬 컴퓨팅 도구
피지컬 컴퓨팅 도구피지컬 컴퓨팅 도구
피지컬 컴퓨팅 도구Kisoon Eom
 
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래2013 공개SW데이 발표 - 구름IDE의 발자취와 미래
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래Sung-tae Ryu
 
16 학술제 마무리 자료
16 학술제 마무리 자료16 학술제 마무리 자료
16 학술제 마무리 자료Junyoung Jung
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)NAVER D2
 
델파이 @22
델파이 @22델파이 @22
델파이 @22Devgear
 
[경영혁신] 홍익경영혁신 2015 B331160
[경영혁신] 홍익경영혁신 2015 B331160[경영혁신] 홍익경영혁신 2015 B331160
[경영혁신] 홍익경영혁신 2015 B331160Hee Jin An
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 
LingoStar iPhone App Design Workshop
LingoStar iPhone App Design WorkshopLingoStar iPhone App Design Workshop
LingoStar iPhone App Design Workshop성관 윤
 
Creating text to talk active image(nanheekim)
Creating text to talk active image(nanheekim)Creating text to talk active image(nanheekim)
Creating text to talk active image(nanheekim)Nanhee Kim
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍NDOORS
 
프로그래머를 꿈꾸는 학부 후배들에게
프로그래머를 꿈꾸는 학부 후배들에게프로그래머를 꿈꾸는 학부 후배들에게
프로그래머를 꿈꾸는 학부 후배들에게Matthew (정재화)
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYWHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYHyun-woo Park
 
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가smartstudy_official
 
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 

Semelhante a Native A/V (20)

In c
In cIn c
In c
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
 
소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
 
피지컬 컴퓨팅 도구
피지컬 컴퓨팅 도구피지컬 컴퓨팅 도구
피지컬 컴퓨팅 도구
 
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래2013 공개SW데이 발표 - 구름IDE의 발자취와 미래
2013 공개SW데이 발표 - 구름IDE의 발자취와 미래
 
16 학술제 마무리 자료
16 학술제 마무리 자료16 학술제 마무리 자료
16 학술제 마무리 자료
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
 
델파이 @22
델파이 @22델파이 @22
델파이 @22
 
[경영혁신] 홍익경영혁신 2015 B331160
[경영혁신] 홍익경영혁신 2015 B331160[경영혁신] 홍익경영혁신 2015 B331160
[경영혁신] 홍익경영혁신 2015 B331160
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
LingoStar iPhone App Design Workshop
LingoStar iPhone App Design WorkshopLingoStar iPhone App Design Workshop
LingoStar iPhone App Design Workshop
 
Creating text to talk active image(nanheekim)
Creating text to talk active image(nanheekim)Creating text to talk active image(nanheekim)
Creating text to talk active image(nanheekim)
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 
프로그래머를 꿈꾸는 학부 후배들에게
프로그래머를 꿈꾸는 학부 후배들에게프로그래머를 꿈꾸는 학부 후배들에게
프로그래머를 꿈꾸는 학부 후배들에게
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYWHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
 
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
 
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
 

Último

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 

Último (6)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 

Native A/V

  • 2. 누설 2015/2016년 WeSA 공연에 참가하여, 다른 아티스트들의 사용 도구들을 어깨너머로 훔쳐보았습니다. 기억나는대로 적어보자면 1. Max/MSP 2. SuperCollider 3. Ableton Live 4. QuartzComposer 5. OpenFrameworks 6. Processing 9. 기타(Modular System, Arduino, Lisp ...) 등을 여러가지 형태로 조합하여 사용하고 있었습니다. 7. PureData 8. vvvv
  • 3. 미신 "A 프로그램은 B 프로그램보다 느려....." "C 프로그램은 불안정하다던데....." "저거 D 프로그램으로 만든거야? D 로도 저렇게 된다고?" "E 프로그램은 윈도우에서만 돌지 않아?" "F 프로그램은 이제 개발 안된다는데...." "G 프로그램은 우리나라에 쓰는 사람들이 없어서 정보 교환이 안돼"
  • 4. 그리고 공포 "지금 내가 공부하고 있는 이 도구는 확실한 비전이 있을까?" "이번에 새로 나온 X 프로그램이 지금 내가 공부하는 Y 프로그램보다 좋다는데 지금이라도 Y 때려치우고 X 를 해야되나?" "지금은 공부 중이니까 그냥 쓰는데, 나중에 혹시 내가 잘되서 아주 큰 프로젝트를 맡았는데 그때가서 내가 쓰는 이 도구의 성능이 문제가 되지는 않을까?" "아몰랑...그냥 Max/MSP 하면 되는거 아냐?"
  • 5. Value 매일 같이 쏟아지는 새로운 기술과 도구들....... 혹시나 뒤쳐지지 않을까 하는 불안함 속에 잠들지 못하던 수 많은 밤 그 속에서 변하지 않는 가치가 있다면.....? 고전과 새로움을 관통하는 큰 줄기가 있지는 않을까?
  • 7. 개요 Native A/V 강좌는 C/C++ 언어의 관점에서, 현재 멀티미디어 프로그래밍에 널리 사용되는 특히 C++ 프로그래밍이 필수적인 OpenFrameworks / JUCE 를 중심으로 C/C++ 의 구조, API 라이브러리등을 살펴보며 이를 통해 문법, 기능, 활용 방법등을 이해합니다. 기술들을 두루 살펴보게 됩니다. 프로세스, 메모리 관리, 쓰레드, 네트워크, I/O 등 도구에 상관없이 컴퓨터 프로그램을 공부하며 각자가 사용하는 도구들의 작동원리를 더 깊이 이해하고 효과적이며, 효율적인 구성하는 주요 요소들을 두루 살펴보고 하나의 프로그램이 어떻게 돌아가는지 등의 개념들을 프로그래밍을 할 수 있도록, 더 나아가 확장하고 변형하는 단계에 까지 도달 할 수 있도록 하는 것이 Native A/V 강좌의 목표입니다.
  • 8. Do it your self 당신의 A 프로그램이 X 라는 기능을 지원하지 않는다면 당신은 어떻게 하시겠습니까? 1. X 기능을 지원하는 B 프로그램을 조합한다. 2. 사실 X 라는 기능은 나에게 꼭 필요한 게 아니었어 라고 정리하고, X 라는 기능을 머리 속에서 지운다. 4. 간지나게 X 기능을 구현하여 A 프로그램을 확장한다. X 기능을 원하는 다른 유저들에게 능력자로 칭송받으며, 페이스북 좋아요의 갯수를 신경쓴다. 3. 테크놀로지의 세계에 염증을 느끼고, 우크렐레를 구입한 후 오키나와로 떠난다.
  • 9. 대상 1. 프로그래밍에 입문하고자 하시는 분들 있는건지 답답하고 불안한 분들 C/C++ 언어라고 하여, 어렵고 복잡한 내용을 다루지 않습니다. 2. Max/MSP 나 SuperCollider 등을 사용하고는 있는데 이걸 지금 개념차게 쓰고 철저하게 이해 중심, 개념 탑재를 위한 여러 기술들을 두루 체험하는 것을 목표로 합니다. 이 후 공부한 내용들을 어떻게 실전에 접목 할 것인지에 대한 여러 다양한 가능성을 살펴봅니다. 3. UGen, External, Plug-ins 등 자신의 도구를 위한 확장들을 만들어, 도구 자체가 가지고 있는 기능상의 제한들을 넘어서고 싶은 분들
  • 11. 이름 키 나이 몸무게 강동원 35 186cm 65kg 달려라! 말해라! 울어라! 춤춰라! 잠자라!날아라! ???? 박성민 34 1??cm ?5kg 사람(Human) 속성(Attribute) Class Instance(인스턴스) 강동원과 박성민 메소드(Method)/메시지 객체지향 프로그래밍
  • 12. Processing VS OpenFrameworks 프로세싱과 오픈프레임웍스의 비교는 전통적으로 이어져 온 Java VS C++ 전쟁의 연장선이다. 정말 C++ 은 Java 보다 빠른가? 그렇다면 왜 그러한가? 1. VM(Virtual Machine) vs Native Computing 2. 메모리 관리 - malloc / free, new / delete 를 통한 수동 관리 - 스마트 포인터 Garbage Collection 자동관리VS 로 이해하는 Effective Programming 3. 자료구조 Array, Vector, LinkedList, Queue, Map 등 다양한 컨테이너들의 특성과 장단점을 살펴보고 퍼포먼스 효율을 높이기 위해서는 어떻게 해야 할까? 어떤 상황에서 어떤 것을 사용해야 하는 지를 파악한다. 4. CPU vs GPU 쉐이더의 개념과 원리를 이해하고 이를 통해 화려하고 미려한 비주얼만을 위해서가 아닌, 연산의 효율성 측면에서 더하여 CUDA, OpenCL 등의 GPGPU 기술도 간략하게 둘러보자.본 쉐이더의 효용성을 살펴본다. - 본 강좌에서는 GPGPU 및 쉐이더 프로그래밍 강의를 진행하지 않습니다. 어디까지나 개념 정리, 이해까지가 이 강좌의 범위입니다.
  • 13. 동시성 프로그래밍과 병렬 프로그래밍 대부분의 그래픽 툴킷(Processing 혹은 OpenFrameworks) 들은 하나의 쓰레드(보통은 MainThread) 안에서 거의 모든 그래픽 관련 연산을 수행한다. 만약 P5 나 OF 의 draw() 함수 안에서 네트워크, 파일 입출력등의 I/O 작업을 진행 한다면 이는 프로그램 내 심각한 병목지점이 될 수 있다. 또한 아주 거대하고 복잡한 연산을 수행하는 단일 작업을 나누어 CPU 내의 여러 Core 에 분담하게 하는 방법론등도 멀티 쓰레딩 프로그래밍을 통해 연산 내 블로킹을 발생시키는 작업을 분리해내는 과정을 알아보자. 살펴본다.
  • 14. Input and Output File I/O Network I/O (TCP/IP) - TCP - UDP Serial MIDI Network I/O MIDI I/O Audio I/O Serial I/O Video I/O AUDIO
  • 15. BUILD PHASE 사람이 읽을 수 있는 소스파일이 실행 파일, 혹은 라이브러리 파일이 되는 과정을 단계별로 알아본다. 더하여 OpenFrameworks 에서 자체적으로 혹은 addon 으로도 제공해주지 않는 기능을 외부 라이브러리를 통해 추가하는 방법도 살펴본다. 전처리기 컴파일러 어셈블러 링커 Hello.c excutable Hello.s Hello.i Hello.o 외부 라이브러리(dll, so, dylib)
  • 16. Git & Github 소스코드의 이력, 버젼 관리 도구로 가장 널리 사용되는 git 와 호스팅 플랫폼인 github 사용법을 알아본다. 하나의 소스파일은 한 번 생성된 이 후, 끊임없이 변화한다. 그리고 하나의 프로젝트(프로그램)는 여러 개의 소스파일로 구성된다. git 는 각 소스파일의 시점별 상태를 기록하고, 관리한다. 언제든 특정 시점으로 되돌아 갈 수 있다. 분기를 나누어 여러 버젼으로 관리 할 수 있다. git 는 프로젝트 내 소스코드의 발전과 변화의 각 상태를 저장한다. 좋은 아이디어는 병합 우리 작업하다보면 여러 삽질을 하게 되죠? 그러는 와중에 실수로, 만들어 놓은 좋은 아이디어들을 날려버리거나 좋다고 작업했는데, 아까 그게 더 좋았던 것 같아서 다시 되돌아가서 작업해야 하는 상황들 있잖아요. 그럴때 쓰면 좋습니다!
  • 17. JUCE
  • 18. JUCE JUCE 는 빠른 멀티미디어 어플리케이션 개발을 위한 C++ 프레임워크입니다.
  • 19. JUCE 처음 들어보셨다구요? 하지만 이미 아래와 같은 넓은 유저층을 가지고 있는 검증된 개발 도구 입니다. 알려진 customer 목록들: https://www.juce.com/made-with-juce/users 최근 Ableton 은 자사의 Push2 를 JUCE 로 확장 할 수 있는 개발환경을 발표하기도 하였습니다. http://cdm.link/2017/06/ableton-now-made-easy-developer-work-push-2/ 독립적으로 개발 운영되다 2014년에 Seaboard( ) 로 유명한 ROLI 사에 인수되었습니다.
  • 20. JUCE Why JUCE? 플랫폼 ISSUE 각 OS(플랫폼) 마다 다른 개발 API 를 가지고 있기 때문에 발생되는 문제 하나의 코드 베이스로 여러 플랫폼에서 돌아가는 App 을 만들고 싶다면? YES! JUCE can do it!
  • 21. JUCE Why JUCE? 플랫폼 ISSUE 각 OS(플랫폼) 마다 다른 개발 API 를 가지고 있기 때문에 발생되는 문제 하나의 코드 베이스로 여러 플랫폼에서 돌아가는 App 을 만들고 싶다면? YES! JUCE can do it!
  • 22. JUCE JUCE 로 Audio Plug-in 제작 과정 Projucer 에서 Audio Plug-in 선택 프로젝트 설정(선택 가능한 타겟 플랫폼들) 생성된 프로젝트를 build! DAW 에서 인식되는 플러그인 플러그인 완성!
  • 23. JUCE JUCE 에서 제공하는 다양한 예제들
  • 24. JUCE JUCE 프로그램의 구조 JUCE 는 프로젝트 빌더를 통해 생성된 템플릿의 빈 부분을 유저가 채워 넣어가며 완성해 가는 방식으로.오픈프레임웍스와 매우 유사한 감각으로 프로그래밍이 진행됩니다. 이곳에서 입력된 오디오 데이터를 어떻게 처리 할 지를 프로그램 합니다.
  • 25. JUCE JUCE 는 현재 무료로 모든 기능을 사용 할 수 있습니다. JUCE 라이센스 정책 무료 사용자의 경우 프로그램 시작 후 App 하단에 3초간 splash 이미지가 나타났다 사라지며, App 으로 최대 5만달러 까지만 상업적 활동을 할 수 있습니다. 만약 당신이 무료 JUCE 로 만든 앱으로 5만달러 이상을 벌었거나, 혹은 splash 이미지가 불편하다면 두 가지 선택이 가능합니다. 1. 상용 라이센스를 구매한다. 2. App 을 GPL 라이센스로 발표한다. 1) Indie 라이센스(월간 35달러 혹은 한 번에 700달러) 2) Pro 라이센스(월간 65달러 혹은 한 번에 1,300달러) - splash 이미지 제거 - 총 20만 달러까지 상업적 활용 가능 - 제한 사항 없음 splash 이미지가 약 3초간 있다 사라짐(무료버젼)
  • 26. JUCE JUCE 는 SuperCollider 나 Max/MSP 와는 다르게 “오디오 어플리케이션” 제작을 위한 전문 도구입니다. 물론 Max/MSP 로도 App 개발을 할 수 있지만, 좀 더 다양한 플랫폼에서 작고 가볍게, 혹은 크고 전문적으로 작동하는 어플리케이션을 만들 수 있습니다 오디오 프로그래밍 / 어플리케이션 개발에 관심있으신 분들의 많은 참여 부탁드립니다! WeSA 아카데미에서는 특히 Audio Plug-in(AU/VST) 개발에 중심을 두고 강좌를 진행할 예정입니다. 누구를 위한 JUCE ? JUCE 는 매 년 ADC(Audio Developer Conference) 를 개최하여 오디오 프로그래밍과 관련된 여러 다양한 이슈들을 공유 / 연구하고 있습니다. 관심있으신 분들은 https://www.juce.com/adc-2017 를 방문해보세요!