Georgia Institute of Technology Processing Sound Ranges Barb Ericson Georgia Institute of Technology July 2005.

Slides:



Advertisements
Similar presentations
Georgia Institute of Technology Introduction to Processing Digital Sounds.
Advertisements

Sound, Part 3. Multiple Echoes Here is a recipe to create multiple echoes: def echoes(sndfile, delay, num): s1 = makeSound(sndfile) ends1 = getLength(s1)
ManipulatingPictures-Mod6-part21 Manipulating Pictures, Arrays, and Loops part 2 Barb Ericson Georgia Institute of Technology.
Intro-Sound-part31 Introduction to Processing Digital Sounds part 3 Barb Ericson Georgia Institute of Technology Oct 2009.
Computer Science 101 Introduction to Programming with Sounds.
Intro-Sound-part21 Introduction to Processing Digital Sounds part 2 Barb Ericson Georgia Institute of Technology Oct 2009.
Georgia Institute of Technology Two-Dimensional Arrays and Nested Loops – part 6 Barb Ericson Georgia Institute of Technology August 2005.
NestedLoops-part31 Nested Loops – part 3 Barb Ericson Georgia Institute of Technology Nov 2009.
Introduction to Computing and Programming in Python: A Multimedia Approach Chapter 7: Modifying Samples in a Range.
Problem Solving with Data Structures using Java: A Multimedia Approach Chapter 5: Arrays: A Static Data Structure for Sounds.
CompSci Today’s topics Sound Upcoming ä Intellectual property ä Network analysis ä Security Reading.
CompSci Today’s topics Sound Upcoming ä Sound splicing ä Intellectual property ä Network analysis Reading Introduction to Computing & Programming.
NestedLoops-part11 Nested Loops – part 1 Barb Ericson Georgia Institute of Technology Nov 2009.
COSC 1P02 Introduction to Computer Science 4.1 Cosc 1P02 Week 4 Lecture slides “Programs are meant to be read by humans and only incidentally for computers.
Chapter 7: Modifying Samples in a Range. Chapter Objectives.
Georgia Institute of Technology Introduction to Processing Digital Sounds part 1 Barb Ericson Georgia Institute of Technology Sept 2005.
UsingSoundRanges-part21 Processing Sound Ranges part 2 Barb Ericson Georgia Institute of Technology Oct 2009.
Introduction to Computing and Programming in Python: A Multimedia Approach Chapter 7: Modifying Samples in a Range.
Georgia Institute of Technology Manipulating Pictures, Arrays, and Loops Barb Ericson Georgia Institute of Technology August 2005.
NestedLoops-Mod7-part31 Two-Dimensional Arrays and Nested Loops – part 3 Bugs in the garden Originally by Barb Ericson Georgia Institute of Technology.
NestedLoops-part41 Nested Loops – part 4 Barb Ericson Georgia Institute of Technology Nov 2009.
CreatingSubclasses1 Barb Ericson Georgia Institute of Technology Dec 2009.
CPSC1301 Computer Science 1 Chapter 8 Introduction to Processing Digital Sounds part 3.
Intro-Sound-part1 Introduction to Processing Digital Sounds part 1 Barb Ericson Georgia Institute of Technology Oct 2009.
Binary! Objectives How sound is stored in digital format What is meant by “sample interval” and how it affects quality The trade off between file size.
Chapter 8: Modifying Samples in a Range. Chapter Objectives.
Georgia Institute of Technology More on Creating Classes part 1 Barb Ericson Georgia Institute of Technology Oct 2005.
Manipulating Sound CS1316: Representing Structure and Behavior.
1 CS 177 Week 8 Recitation Slides JES Sound functions and Modifying Sounds Increasing/Decreasing Volume Maximizing (Normalizing) Splicing Reversing Mirroring.
CSE 8A Lecture 14 Reading for next class: None (INTERM EXAM #3) Today’s topics: –More Sounds! PSA 6 due tonight PSA 7 (sounds) due next Monday (11/19)
Session 18 The physics of sound and the manipulation of digital sounds.
COSC 1P02 Introduction to Computer Science 5.1 Cosc 1P02 Week 5 Lecture slides Psychiatrist to patient "You have nothing to worry about - anyone who can.
Intro-Sound-Mod10-part31 Introduction to Processing Digital Sounds part 3 while loop, tracing, for loop, parameters Barb Ericson Georgia Institute of Technology.
1 CS 177 Week 7 Recitation Slides Modifying Sounds using Loops + Discussion of some Exam Questions.
ManipulatingPictures-part31 Manipulating Pictures, Arrays, and Loops part 3 Barb Ericson Georgia Institute of Technology Nov 2009.
04-ManipulatingPictures-part21 Manipulating Pictures, Arrays, and Loops part 2 Barb Ericson Georgia Institute of Technology June 2008.
Georgia Institute of Technology Two-Dimensional Arrays and Nested Loops – part 2 Barb Ericson Georgia Institute of Technology August 2005.
Georgia Institute of Technology More on Creating Classes Barb Ericson Georgia Institute of Technology June 2006.
Manipulating Pictures, Arrays, and Loops part 2
Manipulating Pictures, Arrays, and Loops part 2
Manipulating Pictures, Arrays, and Loops part 3
Georgia Institute of Technology
Processing Sound Ranges part 1
Processing Sound Ranges part 3
Manipulating Pictures, Arrays, and Loops part 2
Manipulating Pictures, Arrays, and Loops part 2
Manipulating Pictures, Arrays, and Loops
Chapter 7: Modifying Samples in a Range
Hearing and Mechanoreceptors
Introduction to Processing Digital Sounds part 2
Two-Dimensional Arrays and Nested Loops – part 2
Arrays versus ArrayList
Processing Sound Ranges part 1
How sound works: Acoustics, the physics of sound
Chapter 7: Modifying Samples in a Range
Introduction to Processing Digital Sounds part 3
Two-Dimensional Arrays and Nested Loops – part 2
Workshop for Programming And Systems Management Teachers
Manipulating Pictures, Arrays, and Loops
Manipulating Pictures, Arrays, and Loops
Manipulating Pictures, Arrays, and Loops
Introduction to Processing Digital Sounds
Processing Sound Ranges part 2
Processing Sound Ranges
More on Creating Classes
Manipulating Pictures, Arrays, and Loops
Processing Sound Ranges part 3
CS1315: Introduction to Media Computation
Manipulating Pictures, Arrays, and Loops part 6
Creating Sounds and MIDI
Presentation transcript:

Georgia Institute of Technology Processing Sound Ranges Barb Ericson Georgia Institute of Technology July 2005

Georgia Institute of Technology Creating a Sound Clip To clip the “This” out of “This is a test”. –Determine where it starts and stops –Using the sound explorer: String file = FileChooser.getMediaPath(“thisisatest.wav”); Sound s = new Sound(file); s.explore();

Georgia Institute of Technology Finding the End of the This Position the bar Get the index Play before bar to check

Georgia Institute of Technology To Create a Sound Clip Create a new Sound object –Of the appropriate size Ending value – starting value + 1 Loop from start to end (inclusive) –for (int x = start; x <= end; x++) Use getSampleValueAt(index) –And setSampleValueAt(index,value); Return the new sound object

Georgia Institute of Technology Clip Method public Sound clip(int start, int end) { // calculate the number // of samples int lengthInSamples = end - start + 1; Sound target = new Sound(lengthInSamples); int value = 0; int targetIndex = 0; int i = start; // copy from start to end while (i <= end) { value = this.getSampleValueAt(i); target.setSampleValueAt( targetIndex, value); i = i + 1; } return target; }

Georgia Institute of Technology Challenge Create a clip of “is” from thisisatest.wav Determine where to start and end the clip Create the clip Write it to a file

Georgia Institute of Technology Returning a Value from a Method To return a value from a method –Include a return statement –The type of the thing being returned must match the declared return type –The clip method declared that it returned a Sound object –The return statement returned the target Sound object –If the types don’t match you will get a compile error

Georgia Institute of Technology Splicing Sounds Together Originally cut the sound tape into segments and then assembled them into the right order Easy to do digitally Copy more then one sound into a target sound –Track the source index and target index

Georgia Institute of Technology Splice Method public void splice() { Sound sound1 = new Sound(FileChooser.getMediaPath(“guzdial.wav”)); Sound sound2 = new Sound(FileChooser.getMediaPath("is.wav")); int targetIndex = 0; // the starting place on the target int value = 0; int i = 0; // copy all of sound 1 into the current sound (target) while (i < sound1.getLength()) { value = sound1.getSampleValueAt(i); this.setSampleValueAt(targetIndex,value); i = i + 1; } // NOW WHAT?

Georgia Institute of Technology Reversing a Sound To reverse a sound –Create a copy of the original sound Sound orig = new Sound(this.getFileName()); –Then loop starting the sourceIndex at the last index in the source and the targetIndex at the first index in the target Decrement the sourceIndex each time Increment the targetIndex each time 100 | 200 | 300 | 400 | 500 sourceIndex targetIndex

Georgia Institute of Technology Reversing Method public void reverse() { Sound orig = new Sound(this.getFileName()); int length = this.getLength(); // loop through the samples }

Georgia Institute of Technology Reverse Part of a Sound Exercise Reverse just the second half of a sound –Start the targetIndex at the length / 2 –Start the sourceIndex at the length – 1 –Loop when the targetIndex < length 100 | 200 | 500 | 400 | | 200 | 300 | 400 | 500 sourceIndex targetIndex

Georgia Institute of Technology Mirror a Sound Copy the first half of the sound to the second half –And reverse the sounds in the second half –This is very similar to mirroring a picture Calculate the midpoint (length / 2) Start the index at 1 and copy from midpoint – i to midpoint + i While index < midpoint 100 | 200 | 300 | 400 | | 200 | 300 | 200 | 100 midpoint

Georgia Institute of Technology Mirror Sound Method public void mirrorFrontToBack() { int length = this.getLength(); // save the length int mirrorPoint = length / 2; // mirror around this int value = 0; // hold the current value int i = 1; // loop from 1 to mirrorPoint while (i < mirrorPoint) { value = this.getSampleValueAt(mirrorPoint-i); this.setSampleValueAt(mirrorPoint+i,value); i = i + 1; }

Georgia Institute of Technology Mirror Back to Front Exercise Write a method to mirror from the back to the front –Copy the back half of the sound reversed to the front 100 | 200 | 300 | 400 | | 400 | 300 | 400 | 500 midpoint

Georgia Institute of Technology Blend Sounds How do we blend two sounds? –Copy the first 20,000 values of sound1 –Copy from both by adding.5 * sound1 value and.5 * sound2 value –Copy the next 20,000 values of sound 2

Georgia Institute of Technology Blend Sounds Method public void blendSounds() { Sound sound1 = new Sound(FileChooser.getMediaPath("aah.wav")); Sound sound2 = new Sound(FileChooser.getMediaPath("bassoon- c4.wav")); int value = 0; // copy the first 20,000 samples from sound1 into target

Georgia Institute of Technology Testing Blend Sounds String fileName = FileChooser.getMediaPath( "sec3silence.wav"); Sound target = new Sound(fileName); target.explore(); target.blendSounds() target.explore();

Georgia Institute of Technology Modify Blend Sounds Exercise Create another blendSounds method –That takes the file name of the sounds to blend –And a value to start the blend at and another to stop the blend at –Modify the original blendSounds method to call this one

Georgia Institute of Technology Overloading Methods You can have several methods with the same name –As long as the parameter list is different In number of parameters And/or types of parameters –blendSounds() –blendSound(String name1, String name2, int startBlend, int endBlend)

Georgia Institute of Technology Changing the Sound Frequency The frequency of a wave is the number of cycles per second (cps), or Hertz (Hz) –(Complex sounds have more than one frequency in them.) Our perception of pitch is related (logarithmically) to changes in frequency –Higher frequencies are perceived as higher pitches –We can hear between 5 Hz and 20,000 Hz (20 kHz) –A above middle C is 440 Hz

Georgia Institute of Technology Double the Frequency If we take every other sample we double the frequency of the sound –Completes two cycles instead of one in the same time –It will sound higher 100 | 200 | 300 | 400 | | 300 | 500 | 0 | 0

Georgia Institute of Technology Double Frequency Method public void doubleFreq() { // make a copy of the original sound Sound s = new Sound(this.getFileName()); /* loop and increment target index * by one but source index by 2, * and set target value * to the copy of the original sound */

Georgia Institute of Technology Change Frequency Exercise Write a method that will copy each sound value 4 times to the target –Will the new sound be higher or lower? Can you make this more general? –By passing in the number of times to copy the source value –Try it with 3 times and check the index values to make sure that you are doing it right