سطر 17: |
سطر 17: |
| }} | | }} |
| {{معلومات زمانية لنشاط | | {{معلومات زمانية لنشاط |
− | |وقت من=2013/11/29 00:00:00 | + | |وقت من=2013/11/29 12:00:00 AM |
− | |وقت إلى=2013/12/24 00:00:00 | + | |وقت إلى=2013/12/24 12:00:00 AM |
| }} | | }} |
| {{معلومات زمانية لنشاط | | {{معلومات زمانية لنشاط |
سطر 28: |
سطر 28: |
| |وقت إلى= | | |وقت إلى= |
| }} | | }} |
| + | {{معلومات زمانية لنشاط}} |
| + | {{معلومات زمانية لنشاط}} |
| {{جلسة نشاط | | {{جلسة نشاط |
| |مكان التنفيذ=معمل | | |مكان التنفيذ=معمل |
سطر 74: |
سطر 76: |
| There are horizontal and vertical sliders, they can be used by assigning the range of numbers they have in each faders properties. They have inputs and outputs as well so numbers can control the faders and move them as well as faders can control numbers. try creating a fader, place the range numbers as anything you like and connect the output of the fader to the equation that we have and see how when you play with the fader the result number changes. | | There are horizontal and vertical sliders, they can be used by assigning the range of numbers they have in each faders properties. They have inputs and outputs as well so numbers can control the faders and move them as well as faders can control numbers. try creating a fader, place the range numbers as anything you like and connect the output of the fader to the equation that we have and see how when you play with the fader the result number changes. |
| ---- 1 hour ----- | | ---- 1 hour ----- |
− |
| |
− |
| |
− | DAY 2:
| |
− | - how does pure data work:
| |
− | pure data deals mainly with data flow because data flows along connections and through objects which process it. As we talked about objects, connections and we made a simple patch lets go more into detail. A message is an event or a piece of data that gets sent between two objects. it travels without wires and they can contain anything. The smallest message you can use in pure data is the bang message it literally means compute something, it can make a box send the number in it, it makes anything start the thing it has to, you will understand it in a bit well be using it a lot.
| |
− | A float is another name for numbers, we have the normal numbers which are integers like 1, 2, 3 etc… and the floating number is a number that contains a decimal point. we already dealt with number boxes which are counted as message boxes as well as the toggle box which sends a one or a zero. Now lets talk about the actual message box in the put menu, you can send a number or a text or anything you want by just filling it with the argument and then you just press it and it sends what is in it. for displaying or inputting a text you can use the symbol box.
| |
− | An array is a graphical representation of some data that you give. you can control this graph by entering data into it. Lets place an array from the put menu, set up its name, size and display characteristics. There are three drawing styles: points, polygon and bezier. These display the data in different degrees of smoothness. The in last graph option is used to use the same graph to display more than one array which is very useful to show the relationship between two sets of data. When you press the ok it will create a graph with the value initialized to zero. To read and write arrays we need two special objects, "tabread" and "tabwrite". Lets create these objects and write both their arguments as array1. from the right inlet of tabwrite you determine the index number and the left one sets the value. lets connect a number box containing the number 24 to the right inlet, since the index number is always an integer, then lets create another number box and connect it to the left inlet of tabwrite containing an 0.25 float number. Now tabread takes the index from its inlet and returns the current value so if you connect a 24 to its inlet and connect an empty number box under it it will instantly return 0.25.
| |
− | ---- 1 hour ----
| |
− |
| |
− | - how to use pure data:
| |
− | Lets talk about the essentials and the rules of connections in pure data. usually most objects that deal with messages have a hot inlet and one or more cold inlets. The left inlet which is the hot inlet deals with computing operations and generating the output of the object or message. The cold inlet can be used for entering values into the object's argument but they wont make the object pass the argument just yet, thats why they are cold. This is used to order evaluation, just like in math and using brackets, 10 X 3 +14 is not the same as 10 X (3+14). *show example
| |
− | This can also depend on the way the connections are made. you have to connect the cold inlet before the left one. * show example
| |
− | a trigger is an object that splits messages and creates an outlet for each one, it also sends the messages in order from right to left. A trigger bang float object sends the float through the right outlet and the bang through the left one. * show example that connects this idea to the example before about wrong connections and how to make them right through trigger objects.
| |
− | * show example of how to make a cold inlet hot
| |
− | A float object can hold a value of a single floating point number, like a temporary storage place that you can send and receive. if a float box receives a bang message it will just output its value but if it receives a float it will just update its data. you can also save integers in int boxes, lists in list boxes and symbols in symbol object boxes.
| |
− | An important thing to know is that if you connect a bunch of number boxes to the cold inlet of a float and you send a bang to it, it will output the last data that was changed that it received through its cold inlet.
| |
− |
| |
− | An important thing in music and programming is working with time. There is an object called metro which represents a metronome which provides a clock. Its argument takes the speed in milliseconds and the left inlet toggles the metronome on and off, ether by sending it a 1 and a 0 message or by using a toggle switch. Now lets try to make a counter * make an example of how to create a counter and explain the logic behind creating it. An important object that can work properly with time objects is the select object which sends a bang on a certain output when it receives the proper message to it. ** show an example as a continuation to the basic counter.
| |
− | There are many other time objects that you can explore like delay and timer but the main thing that you need to make a sequencer is this metro object. There is another object that can be used other than select, it is called mod. mod wraps numbers which is like resetting the counter to repeat a certain beat but we will talk more about this later
| |
− | Moses object is a stream splitter, if the income is less than its argument it goes out through the left output and if it was equal or more it would go through the right one. The spigot object is a switch that controls streams of messages like lists and symbols, a zero to its right inlets stops the messages connected to its left inlet from passing and any non-zero number lets it pass. Swap object switches the location of its two input when they are sent to the output.
| |
− | in pure data there is an object called random which gives values depending on its argument. if you place a random object with an argument of 10 it will give you 10 possible values between 0and 9. Now lets suppose you want to choose random numbers between 20 and 50, you create a random object with an argument of 30, so you get numbers between 0 and 29 then you connect the output to a +20 object so now your answers change to be between 20 and 50.
| |
− | ** show examples of tricks that can be done with all these objects
| |
− | ---- 1 hour ----
| |
− |
| |
− | - pure data with audio:
| |
− | Audio connections contain this sign (~). after every object place this sign and its outlets and inlets will become darker, thats how you know this object is an audio object now. Signal data that travels through cords is made of samples, which are floating points in a sequence that create an audio signal, samples grouped together create blocks.
| |
− | Lets talk about the principles of audio objects before going creating sounds. You can connect an audio signal outlet to as many inlets as you like. Time is measured usually in milliseconds or samples but in Pd it is usually in ms. you can see the sample rate by using the object "samplerate~" which is usually equal to 1/44100 of a second.
| |
− | There are only a few objects in pure data that are signal generators, the most important and simple one is the "phasor~" object. a phasor outputs a periodic ramp wave like a sawtooth wave, it goes from 0 to 1 slowly and then instantly goes back to 0. Its left inlet or its argument controls the frequency and its right inlet controls the phase between 0 and 1. Usually a phasor looks like this "phasor~ 110", you can use an "osc~" object to generate a sine wave, and a "noise~" object to create white noise.
| |
− | "dac~" object is a digital to analog converter which can be used to output our patch to our laptop speakers. there is also an "adc~" object which is an analog to digital converter used to record object from our laptop microphone or any external one connected to it.
| |
− | There are a bunch of filters that we are going to be working with, there is something called a high pass fitter which cuts out the low frequencies and only lets the high ones pass, there is a low pass one and a bandpass one. These are the basic filters that you might need to use.
| |
− |
| |
− | ** Give examples of everything, work on project with them and how to develop ideas of creating cleaver patches.
| |
− | ---- 90 minutes ----
| |
− |
| |
− |
| |
− |
| |
− | DAY 3:
| |
− | - abstraction:
| |
− | A subpatch is an object box that you define as if your creating a function. Create an object box and write in it "Pd anything", an empty canvas appears, this is our subpatch. now lets tell it what to do as a function, we want to add a number that we receive from the main canvas to the number 7 in the subpatch and bring the result back out to the main canvas. Create two objects, one called inlet and the other outlet. look at the main canvas how our "Pd anything" object has an inlet and an outlet. now connect the "inlet" object to a "+7" object and connect the output of that to the "outlet" object. Go back to the main patch connect a number box to the output of "Pd anything" and another to the input of it and try changing the number of the input. How about we create a fader and connect it to the input and another to the output? You can copy subpatches and use them several times instead of writing the same code over and over, and you can create subpatches inside subpatches and so on. This idea of abstraction is very important for creating and organizing our graphical interface.
| |
− | ** Create table oscillator abstraction example to explain all types of abstraction up till techniques.
| |
− | lets see how we can build a nice interface in Pd. go to the subpatch that we created and right click properties, there is an option called graph on parent, press it and under it you can control how big you want your graph to be. this creates a box in both our canvases, now what ever objects are inside the subpatch box, will appear in the box of the main patch. so if we put a fader connected to the "+7" object and put it in the box in the subpatch, when we close it the fader will appear in the box as representation for the subpatch. you can also control the colors of it creating a nice simple GUI.
| |
− | ** give another two - three examples in Audio
| |
− | --- 1 hour---
| |
− |
| |
− | - shaping sound:
| |
− | We dealt with simple waveforms like the sine, phasor and noise waves, we can combine waves together to create new ones, that is what shaping sound is about. It depends mostly on arithmatics that can shift, scale and invert signals.
| |
− | ** show examples of scaling, shifting and inverting signals. As well as mirroring and tweaking signals.
| |
− | You can limit signals by creating minimum and maximum objects that take an argument of their threshold. The minimum object takes everything over the threshold and clamps it under and the maximum does the opposite. There is another object called clip that takes two arguments one for the minimum and the other for the maximum.
| |
− | With these ideas we can start creating more complicated waveforms like a triangle, pulse and square waves. We usually start shaping sounds using a phasor object since everything can be derived from it. A method of creating a square wave is to create a sin or cosine wave and clipping it to become a square wave. A triangle wave moves up a slope like a phasor but it returns in a slope manner instead of jumping to zero. we talked about inverting and shifting waves, these two methods create the principle behind shaping a triangle wave.
| |
− | ** Explain Square root, cosine, wrap, and modulation objects through examples with array to better visualize it
| |
− | ** show examples of delaying, phasing and filtering signals
| |
− | --- 90 min ---
| |
− |
| |
− | - pure data essentials:
| |
− | Lets talk about creating our GUI. Usually we deal with mixers when we control sound, either actual analog mixers or digital representations of them in our editing softwares. mixers have volume controls, panning knobs, busses, and mute or solo buttons. Lets talk about the logistics of these controls, their ideology, properties, and how to create them.
| |
− | The simplest idea in this is the signal ON/OFF switch. As you know multiplying a signal with a number changes its amplitude so if you multiply a signal by a toggle switch, when this switch is on the signal plays and when it is off it is muted. You can change this toggle object with a fader that has a range between 0 and 1 and now you have a volume control with 1 as the maximum and 0 as silence. But this will generate a bit of a noise like sound when you change the fader's position because the sound jumps suddenly between levels, this is why we use a log law fader which spreads small numbers across the whole fader and squashes the high values to the top end of the fader, this gives a smoother control for the volume. You can choose this fader from the properties of a normal fader, usually they are linear; the numbers spread equally over the whole fader, and there is another option called log.
| |
− | ** example of mute button and smooth fades
| |
− |
| |
− | Pan is short for Panorama, meaning 360 degree view. A panning object allows you to control the sound placement between the left and right speakers.
| |
− | ** simple linear panning example to explain the idea behind panning.
| |
− | The problem with simple linear panning is that when it reaches the middle; between left and right, it divides the volume by half, sending 0.5 to one speaker and the other 0.5 to the other speaker.
| |
− | The square root panner does the proper sound reduction but when the sound is panned to one of the speaker the other speaker goes silent. We need to treat the spectrum as a circular shape that surrounds our ears from all sides. Lets take a loop at the cosine panner, it deals properly with sound reduction and it has the proper shape of movement.
| |
− | ** show examples
| |
− | Lets think about the idea of cross faders together and try to create it.
| |
− | From everything that we learned lets create a file recorder and a loop player.
| |
− | create a sequencer
| |
− |
| |
− | --- 1 hour ---
| |
− |
| |
− |
| |
− | DAY 4:
| |
− | -techniques:
| |
− | strategic production is understand what we need to build and the strategy of it. You are going to need to research a lot, then jump to model making which is designing the idea. Choose your method and start implementing it, next you place your media in the finished product, you test it and maybe one day you will be required to visit it so don't forget to leave comments here and there as reminders.
| |
− |
| |
− | Building models takes a lot of analysis, as i said it takes time and patience. You need to analyze the thing you want to create, how it acts and what it does. Analyze the waveform, how the envelope shapes, the spectrum, the physics of it and its parameters
| |
− | ---- 1 hour ----
| |
− | -examples:
| |
− | Additive synthesis
| |
− | Wavetable synthesis
| |
− | Nonlinear functions and wave shaping
| |
− | Modulation - amplitude modulation, adding sidebands, single sideband modulation and frequency modulation.
| |
− | Granular synthesis, its types and time and pitch alteration
| |
− | ---- 90 minutes -----
| |
− |
| |
− | -game audio:
| |
− | Games are written as objects as well, whatever happens in the game controls the sound coming out. So lets say we have two buttons if we press the right one it produces a sound and if we press the other it produces another sound that we lost.
| |
− | ** show examples
| |
− | ---- 30 minutes -----
| |
− |
| |
− |
| |
− |
| |
− | DAY 5: time depends on amount of participants
| |
− | - final project presentation
| |
− |
| |
− | • Show and discuss your project in class, we can spend about 8 minutes per presentation.
| |
− | ◦ 8 minutes per project
| |
− | ◦ one sentence about your idea
| |
− | ◦ show your project
| |
− | ◦ talk about one thing that felt natural or good in Pd
| |
− | ◦ talk about one thing that was frustrating
| |
| | | |
| | | |