Audio Visual Basic
last update: 2021.08.10.Tue
Audio Visual Basic
- 전자음악 및 사운드 아트 작업을 위한 공부용 문서
- 포트폴리오 아직 없음
- 연습 스케치 - Youtube
Audio-Visual Learning Experiences and Resources
- 2013-2014.
Interactive Programming and other courses - syllabus -
- 1) Integrating MAX with Other Software and Languages by Kadenze
2) Introduction to Live-Video Using Jitter by Sabina Covarrubias
- 1) Integrating MAX with Other Software and Languages by Kadenze
Note
Integrating MAX with Other Software and Languages by Kadenze
- 주로 max patch 위주의 실습을 했고, 패치에 주석을 달아두었으므로 따로 노트한 내용이 많이 없음.
Session 1 : Introduction
1. Introduction: Scope of the Course(210406)
2. What can Max do?(210406)
- Philippe Manoury - Musician, IRCAM, Univ. of California, San Diego
- Miller Puckette - IRCAM programmer
- Robert Henke - Ableton Live
- Ableton Live는 PX18 Step Sequencer로 출발
- The AlloSphere Research Facility
Berna 2.0 - Giorgio Sancristoforo Artist Sound-Designer Sound Art Sci-Art - Damian Taylor - work with Bjork
- Luke Dubois
- Toni Dove
3. What is Max?(210406)
4. Getting Started: Building Blocks of Max(210406)
5. Building Our First Max Patch(210406)
6. Course Philosophy(210406)
Session 2 : Fundamental Elements
1. Introduction: History of MAX(210406)
- Alan Turing 1936 논문
- RTSKED 개념
- CNMAT github, wiki
- 워크샵 자료도 많다
- CNMAT/CNMAT-MMJSS
_
- Intro to MAX Programming(210406)
- Immediate Gratification Elements: Audio GUI Object(210406)
- Immediate Gratificatino Elements: Video(210406)
- Visual Display and Control of MAX Data(210406)
- Immediate Gratification Elements: MIDI(210406)
- Objects in General(210406)
- Customized QWERTY/Mouse Interaction and Pro(210406)
- Outro(210406)
Session 3 : What’s Really Going on Inside Max
1. Logic and Scheduling of MSP’s Signal Process(210413)
2. Digital Sampling & Sampling rate(210413)
3. The life of a gain~ object(210413)
4. The DAG of Signal Connections(210413)
- Undirected GRAPH (Computer Science)
→ Edges and Nodes - Directed GRAPH (Computer Science)
→ 선에 화살표가 생기면 Directed GRAPH. 노드끼리 그냥 연결만 되어 있다면 Undirected. - CYCLIC VERSUS ACYCLIC DIRECTED GRAPHS
→ Topological sorting5. Logic and Scheduling of MAX Events(210413)
- object-vs-message-boxes
stack over flow : task A→ task B 구조인데, A가 끝나야 B를 하는 구조이다. 그러나 무한히 루프가 반복된다면 이런 에러 메시지가 뜬다. 맥스는 C언어의 구조를 따른다. stacks and proceducre call. - Stack: First in, Last out.
- This is psuedo code: qusi C language~
- The metro object:
onOffMethod(int zero_or_one){ I.am_on = zero_or_one; if (this_object.is_on){ // Start metro // Output the first bang immediately outputABang(); // Schedule future bangs LetMeKnowWhenTimeHasPassed(this_object.time_between_ticks); } } // Max calls this after (approximately) the requested time has elapsed TimeHasPassed(){ If (this_object.is_on){ // Keep going // Output the next bang immediately outputABang(); // Schedule future bangs LetMeKnowWhenTimeHasPassed(this_object.time_between_ticks); } }
- notein and noteout(이미지 누락, 대충 이진트리 구조 상상하면 됨)
→ notein은 오른쪽에서 왼쪽으로, noteout도 오른쪽에서 왼쪽으로 데이터를 보낸다.
→ noteout에서 빨간건 hot, 파란건 cool, 파란건 대기하겠다는 뜻. velocity와 channel이 그렇다. - Trigger를 쓰면, 왼쪽 오른쪽 메시지 박스가 옮겨감에 상관없이 무조건 outlet에 연결된 순서대로 출력할 수 있다!
6. Right to Left Order(210413)
- 동일한 메시지 박스를 두어도 무조건 오른쪽에서 왼쪽으로 동작이 작동하므로, 나중에 입력 신호가 들어간 왼쪽 메시지의 명령이 실행되는 것처럼 보인다.
- tree of connections.
= depth-first traversal
7. Arithmetic Operators(210413)
- 연산자 박스에서도 마찬가지. 왼쪽(빨강) 오른쪽(파랑), 오른쪽부터 왼쪽으로 데이터를 읽으며, 오른쪽 inlet에 들어오는 신호는 어떤 아웃풋을 트리거하지는 않는다. 단지 메모리에 저장할 뿐이다. in/outlet 의 색을 잘 기억해두자.
- 여기서도 trigger를 쓰면, 오른쪽 integer를 바꿔도 반응이 없던 결과물이 이제는 왼쪽 오른쪽 integer의 변화에 모두 동일하게 반응하게 된다. 그러니 trigger를 자주 쓰자!
- t b b = trigger bang bang
- t b i = trigger bang integer
- 연산자 쓸 때, 오→왼 순서를 잘 기억해야 한다. 특히 교환법칙이 성립하지 않는 뺄셈(!-, -)과 나눗셈인 경우에.
8. MAX objects for Control Flow & Scheduling(210414)
9. Example: A Simple Drum Machine(210414)
10. Logic and Scheduling of Jitter Events(210414)
- Events(Max)
- Key Issue or Questions : How fast can Max process message and can it keep up with incoming messages?
- Ideal Situation : Process each message in zero time
- Failure Mode : Delay message processing or scheduling while still dealing with earlier messages
- Signals(MSP)
- Key Issue or Questions : What percent of my CPU does it cost to execute the entire signal processing graph?
- Ideal Situation : Lots of signal processing with low CPU % usage.
- Failure Mode : Audio glitch (hardware needs samples before MSP finishes cmputing them)
- Video/Matrices(Jitter)
- Key Issue or Questions : What frame rate can I get?
- Ideal Situation : Lots of image processing at high resolution with a high video frame rate
- Failure Mode : Slower and slower frame rate
11. MAX’s Data Types in Depth(210414)
- int
32bit integer - 1bit : sign bit: positive negative number, 31 numbers
so the higher number is: 2147483647
counter object에서는 이 다음 숫자가 0으로 돌아간다
다른 경우는 그냥 integer object의 경우 음수로 취급해서 계산한다. - float
부분적으로 64비트 넘버를 지원하고 보통은 32비트를 지원한다.
→ Mantissa(23bits)
→ Exponent(8bits)12. Outro(210414)
Session 4 : Getting Mathematical: Arithmetic, Logic, Matrices
- Intro: Elementry Arithmetic in Max, MSP, and Jitter(210416)
- Linear Interpolation in Max, MSP, and Jitter(210416)
- Clipping in Max, MSP, and Jitter(210416)
- Random Numbers and Noise(210419)
- Logarithmic Scales Approximating Human Perception(210419)
- Random Melodies on Linear vs Log Frequency Scale(210419)
- Boolean Logic (Ture/False)(210419)
- Dividing the Octave in Twelve(210419)
- The Coll Object(210419)
- Musical Scales, Keys, Octave Equivalence(210419)
- Example: Playing Scales from Coll with Amplitude(210419)
- Repeating a Scale at the Octave(210419)
- The Harmonic Series(210419)
- Octaves, Half Steps, Cents, and Frequency Ratios(210420)
- Different Kinds of Musical Fifths and Thirds(210420)
- Outro(210420)
Session 5 : Structuring Non-Trivial Patches
- Intro(210422)
- Wobble Bass Example(210422)
- Techno~ and Finding a Need for Encapsulation(210422)
- Subpatchers and Encapsulation(210422)
- Sync Signals and Getting a Bang on Every Loop(210422)
- Programming techno~ with Max Messages(210422)
- Bpatchers: Subpatchers you can see inside(210422)
- Philosophies of Encapsulation, Naming, and Development(210422)
- Presets and Snpahosts(210422)
- List Processing with Message Boxes(210422)
- List-Processing Objects in Max: Pack, Route and Friends(210422)
- The Sprintf Object(210422)
- List Processing with the ZL Object(s)(210423)
- Note Lists, Round Robin Scheduling and Routing by Data(210423)
- Recording and Playing back Sound in Realtime with Buffer(210423)
- Global and Local Variables with Value and PV(210423)
- Using Coll(Collection) as a List of Notes(210423)
- Storing Data with the Dict(“Dictionary”) Object(210423)
- Send and Receive(210423)
- Outro(210423)
Session 6 : Abstractions, Files, and How Max Works
- Where Max Keeps and Looks for Files(the Search Path)(210428)
- Kinds of Files to Put in Your Search Path(210428)
- How to Read and Write the Kinds of Files Max Typically Uses(210428)
- Abstractions: Philosophy and Mechanism(210428)
- abstractions는 서브패쳐와는 다르게 하나의 명령어처럼 작동하기 때문에 하나의 패러미터가 바뀌면 전역에 영향을 주게 된다.
- AV Sine Synth Part 1: Synthesizing Sine Wave Sounds(210428)
- AV Sine Synth Part 2: Graphically Drawing a Sine Wave(210428)
- AV Sine Synth Part 3: Interface and Abstraction for Drawing Squiggles and Clearing(210429)
- AV Sine Synth Part 4: Defining a Mapping from Blip Parameters to Squiggle Parameters(210429)
- AV Sine Synth Part 5: Controlling it with a Generative Process(210429)
- AV Sine Synth Part 6: Overlapping Notes and Polyphony(210429)
- Review: How Max Works(How the Interpreter Runs Your Patch(210429)
- Exceptions to Max’s Normal Evaluation Rules(210429)
- How MSP Works: I/O and Signal Vectors(210429)
- Jitter Works Just Like Max(210429)
- Scheduling in Max, MSP and Jitter(210429)
- defer, deferlow, qlim, qmetro
- Outro(210429)
Session 7 : Data Types
- Intro to the the Max Type Conversion Table(210505)
- Type Conversions 1: From Bang(210505)
- Type Conversions 2: From Integer(210505)
- Type Conversions 3 : From Float(210506)
- Type Conversions 4 : From Symbol(210506)
- Type Conversions 5 : From List(210506)
- Type Conversions 6 : From Signal(210506)
- Type Conversions 7 : From Matrix(210506)
- Matrix Processing(210506)
- Displaying Matrices with jit.window(210506)
- RGB and HSV Color Spaces(210506)
- Video Analysis with Centroid Tracking(210506)
- Directly Converting Pixel Values to Audio(210506)
- Rastograms(210506)
Session8 : Interactivity
- Intro
- Examining the Messages a MIDI Controller Outputs(210518)
- Abstracting a MIDI Controller(210518)
- Mapping a MIDI Device to Control a Patch(210518)
- Virtually Representing a MIDI Device with a Graphical Interface, Part 1(210518-19)
- Virtually Representing a MIDI Device with a Graphical Interface, Part 2(210519)
- Switching to a Different MIDI Device with the Power of Abstraction(210520)
- Open Sound Control(210520)
- Making Your Own Wifi Network and Other Advanced Networking Topics(210520)
- Sending OSC from a Phone(210520)
- Connecting Arduino with Max(210520)
- Glue Code: Controlling an Arduino from a Phone via Max
- Glue Code 2: Searching the Web with a MIDI Pad Controller
- Interfacing Max with Modular Synthesizers
- Interfacing Max with HID Devices
- Sample-Synchronous Processing 1: Motivation and Simple Examples(210527)
- Sample-Synchronous Processing 2: Programming Techniques(210527)
- Sample-Synchronous Processing 3: Boolean Signal Logic(210527)
- Outro
Session9 : Max programming paradigms
- Session Intro and List of Topics(210603)
- Abstractions as Objects: Naming, Help Patch, Inlets and Outlets
- Abstractions as Objects: Arguments
- Abstractions as Objects: Allowing Multiple Instance
- Abstractions as Objects: Coordinating Multiple Instances with Gating and Delegation
- Abstractions as Objects: Coordinating Muliple Instances with Poly~
- Using “Midinote” with Poly~ if You Don’t Know the Duration in Advance
- Constraint-Style Programming with “Set”
- Non-Realtime Processing with Uzi
- Recording a Movie in Realtime and Non-Realtime
- Using Max to Write, Save and Load Max Patches
- Example: Ensemble Feedback Instruments
- Example: Ensemble Feedback Instruments(Continued)
- Global Transport and Time Value Syntax
- 3D Graphics with OpenGL
- Top-Down and Bottom-Up Programming
- Outro