Problem Set 6 Audio Programming Out of 40 points. All parts due at 8pm on Thursday, November 29, 2012

Size: px
Start display at page:

Download "Problem Set 6 Audio Programming Out of 40 points. All parts due at 8pm on Thursday, November 29, 2012"

Transcription

1 Problem Set 6 Audio Programming Out of 40 points All parts due at 8pm on Thursday, November 29, 2012 Goals Learn the basics of audio processing in C Learn how to use audio APIs Grading Metrics The code you write will be graded according to the following metrics: 1. Correctness: How well does your code adhere to the problem s specifications and does it produce the desired results? 2. Design: How clearly, efficiently, elegantly, and/or logically is your code written? 3. Style: How well is your code commented and indented, your variables aptly named, etc.? Answers in English will be graded for completeness and accuracy. 1. Getting started Go to the following URL: Download ps6_mac.tar.gz or ps6_windows.tar.gz to your local machine and unpack the file. 2. Download and install PortAudio and libsndfile This problem set focuses solely on audio programming. You have now learned enough C to be able to understand and use libraries written by others. The two APIs you will utilize for this problem set are PortAudio and libsndfile, both of which are free, crossplatform APIs. PortAudio is a popular audio input/output library (utilized in numerous applications such as Audacity); libsndfile is a library for reading and writing audio files in many formats. The first step is to make sure you have PortAudio and libsndfile installed on your machine. Go to the following websites to download, install, and learn more about the two APIs: PortAudio API main page: of 8 -

2 Libsndfile API main page with link to download: In your home directory, create a new directory called lib/. This will be where you download and unpack the PortAudio and libsndfile packages you download. In the future, if you download other APIs, this is a good place to put them. You should read the information on these websites and configure, compile, and install the APIs as instructed. You should also take a look at any files called README, INSTALL, README.txt, or README.configure.txt files that are included in the top-level directories of each API. The process outlined in these files is typical for many APIs. Windows users: note that the libsndfile install instructions will say to install a precompiled binary because Windows doesn t usually come equipped with the tools to compile the source; do not do this you should download the source and compile it yourself as instructed for UNIX and Mac OS users (this is possible because you have installed Cygwin). Mac/Linux users: If make install doesn t work for libsndfile, type sudo make install instead (when it prompts you, enter the password for your user account). Special note for compiling on MacOS 10.7 (Lion): Download the stable release pa_stable_v19_ tgz and unpack the archive. Try compiling/installing normally. If it fails (which it might depending on the version of Lion you have), continue with the instructions below. cd into the portaudio/include/ directory and open the pa_mac_core.h in a text edit. Uncomment line 49 (#include <AudioToolbox/AudioToolbox.h>). cd back up into the portaudio/ directory. Type./configure --disable-mac-universal at the prompt to configure. Open Makefile in a text editor and delete the -Werror option on the CFLAGS line (line 21). Type make at the prompt. Then type sudo make install to install portaudio. When you have installed PortAudio and libsndfile successfully, you should be able to compile the files in the ps6/sine_player/and ps6/reverb/ directories by typing make. Now read through the API documentation: PortAudio API documentation: of 8 -

3 libsndfile API documentation: Even if you don t understand everything yet, you should at least get a general sense of the functions available to you in each API. 3. PART I: Sine wave player (20 points) Your goal in Part I is to turn your (computer) keyboard into a musical instrument. This entails using the PortAudio library for real-time audio output. What you will be required to do is map letters on the keyboard to actual musical pitches. These pitches will be produced in the form of sine waves generated at particularly frequencies. These frequencies are shown in the table below. Note that they cover two octaves of the A major scale. Note name and octave Keyboard mapping Frequency (Hz) A a B s C# d D f E q F# w G# e A r, j B k C# l D ; E u F# i G# o A p The output of your musical instrument will be in stereo, where the notes from the lower octave of the A major scale will be outputted to Channel 1, and the higher octave will be outputted to Channel 2. These two octaves will be mapped to keys that group them by hand position on the keyboard: - 3 of 8 -

4 In addition, the letter key v silences Channel 1, n silences Channel 2. And (spacebar) quits the program. To get a sense for how the program works in its final state, you can run the executable provided for you in the exe/ directory. Recall that you might have to chmod a+x sineplayer in order to make it executable. Let s look at the files that are included in the sine_player/ directory. First take a look at the Makefile. You ll notice some new flags, -lportaudio and -lncurses for Mac OS X/Linux (full pathnames to the dlls are provided in the Windows Makefile). This tells the compiler to link to the PortAudio and ncurses libraries. N ote for Windows users If you are unable to compile your program using the ncurses functions (you ll get errors indicating that functions such as initscr, cbreak, endwin, etc. are undefined), you might need to install the ncurses library using the Cygwin installer. The best way to do this is to keep your current Cygwin install as is, but just add the libraries needed for ncurses. When you arrive at the screen that lets you choose what to install, make sure you select the Keep radio button. Then enter ncurses in the search window, and the Cygwin installer will show you all the ncurses files you need to install. Check all the boxes to indicate you want to install them. In the process of installing, Cygwin might ask you to install some additional libraries you haven t selected because ncurses is dependent on them; you should go ahead and let Cywin do this. If you still have problems, please come to office hours to get help. - 4 of 8 -

5 Implementing sineplayer Using parts of sine.c, mix.c and volume.c from lecture as models, finish the program started for you in sineplayer.c. You will notice that PI is defined for you at the top of the file. You ll need it to generate waveforms of a particular frequency. In addition to completing the main function (and any other helper function you deem necessary), the major item that needs to be implemented is the PortAudio callback function for realtime audio output. You can use the solution executable in exe/ to see how the finished program is supposed to work. Warning to Windows users: I found that there was some latency when I ran the Windows executable on my machine (running Windows XP), unlike the case for Mac OS. Generating sine waves For those of you who have taken a digital signal processing class in the past might recall that a sine wave has the following (simplified) definition: - 5 of 8 -

6 y(t) = asin(ωt), where a is the amplitude (0 or 1 in our case), t is time, and ω is the angular frequency which can be described in term of frequency in Hertz: ω = 2πf, where f is the frequency in Hz (e.g. 440 Hz for A4). Each step in time is dependent on the sampling rate, i.e. each step in time is of size 1/sample_rate. One way to keep track of the last value of t that was used that is, the last time the callback requested data is to declare t as a static variable: static float t = 0; This statement will initialize t to zero, but then retain whatever value it is set to in the future. Another way is to create a table with sine wave values pre-computed and stored (as in the case for sine.c from the lecture notes). 4. Part II: Reverb (20 points) Adding reverberation is a common way to create the perception of space in digital audio. Convolution is a common signal processing technique for simulating reverberation effects. In this next section, you will be implementing a program that adds reverb to audio files by convolving the audio data with pre-recorded impulse responses. Using the lecture code as a guideline, finish the program started in reverb.c. You do not need to alter the main function. You just need to implement the function processaudio, which is called by main. The prototype for processaudio is already provided for you. Note that it takes three arguments: an input audio file name, an impulse response file name, and an output file name. Your implementation of processaudio will begin by opening the first two files and reading them into buffers that you allocate. These two input audio files can be either mono or stereo, but they must be of the same sample rate. You must quit with an error if the sampling rates for the two files differ. Convolving audio After reading in the files successfully, you must then use the convolution function provided for you in convolve.c to create a new version of the input audio with added reverberation effects. The prototype of convolve can be found in convolve.h. You should not alter convolve.h or convolve.c; you should simply include convolve.h and call the convolve function whenever you need to use it in reverb.c. This is the prototype for the function: - 6 of 8 -

7 int convolve(float *x, float *h, int lenx, int lenh, float **output); Note that it has five parameters and one return value. The array of floats x is the original audio signal (mono); h is the impulse response signal; lenx is the size of x and lenh is the size of h; output is a pointer to the output buffer. The return value is the size of the new signal that output points to. You will then write the data pointed to by output to the specified output file. Note that you will have to call convolve twice, and combine the results, if the input audio is in stereo. You should not allocate memory for output yourself just pass convolve the address of a pointer to float. The convolve function allocates whatever memory is necessary and sets your pointer to it. However, that doesn t mean you don t need to allocate memory elsewhere in your program; you will need to allocate memory when reading in the audio data from the files initially. Whatever memory you do allocate must be freed before exiting the program. Make sure to close the audio files before quitting as well, otherwise the output file might not be written correctly. You can take a look at convolve (at the bottom of the convolve.c) to see exactly what it s doing. But you do not need to understand how it works; you just need to know how to use it properly. For those of you who are curious, it implements an efficient convolution algorithm that works by taking the FFT of both the input signal and impulse response, multiplying those results, then taking the inverse FFT. This method is considerably more efficient, O(n log n), than executing all of the arithmetic operations (multiplies and adds), O(n 2 ). Nonetheless, depending on your processor speed, convolution with large signals might still take a considerable amount of time. Output file format As mentioned previously, the input audio and impulse response must be of the same sampling rate, however, they may either be mono or stereo. If both are stereo, then convolve Channel 1 of the input audio with Channel 1 of the impulse response, and Channel 2 of the input audio with Channel 2 of the impulse response. If the input audio is stereo, but the impulse response is mono, convolve each channel of the input audio with the mono signal of the impulse response. If the input audio is mono, but the impulse response is stereo, average the two channels of the impulse response and then convolve it with the input audio. Finally, the file format of the output audio must be identical to the input audio (i.e. file type and number of channels), not the impulse response. Some audio files provided for you in khz mono and stereo formats in the sounds/ directory for testing purposes. Within the mono and stereo folders, you will also see a directory called IRs/. This directory contains some sample impulse responses downloaded from an impulse response library. If you are curious to experiment and try out additional impulse responses with your new program, there is a large variety of impulse responses you can listen to and download for free here: - 7 of 8 -

8 To download impulse responses, click on the description, e.g., Stairway, University of York, then on the following page select the Impulse Responses tab to access the audio files. You can use the solution executable in exe/ to see how the finished program is supposed to work. 5. Extra Credit: Create your own impulse response (5 points) Write a program called delay.c that creates an impulse response that when convolved with another audio signal, will create an exact replica of the original audio at a 3 second delay. Your program should use libsndfile to output the impulse response in mono wav format, sampled at khz, as a file called three_sec_delay.wav. An empty file delay.c is provided for you in the reverb/ directory, and the Makefile for the reverb project will compile it for you. Your program should take no arguments it should simply create three_sec_delay.wav. 6. What to submit In order to make the submission clean, type the following in all your subdirectories: make clean ***Make sure to remove the audiofiles/ directory before submitting.*** After you have removed the audio files, append your last and first names to your ps6 directory name. e.g. from the command line this will rename your directory: mv ps6 ps6_lastname_firstname Then create an archive of the newly renamed directory. You can either create a zip file or create a tar ball from the command line. To create a tar archive, first cd into the directory above ps6_lastname_firstname/ directory. Then type: tar cvzf ps6_lastname_firstname.tgz ps6_lastname_firstname You should now see a file called ps6_lastname_firstname.tgz in your directory. Submit this file via the course Blackboard page. Make sure you submit all the files you have created or modified as part of this assignment, as well as for these files (you don t need to submit delay.c unless you implemented the extra credit problem optionally you can leave the file in the submission directory unmodified). - 8 of 8 -

MPATE-GE 2618: C Programming for Music Technology. Problem Set 4 Out of 80 points

MPATE-GE 2618: C Programming for Music Technology. Problem Set 4 Out of 80 points Problem Set 4 Out of 80 points Part 1 due Monday, October 22, 2012 at 8pm Part 2 due Thursday, October 25, 2012 at 8pm Goals Getting familiar with binary file I/O Getting acquainted with pointers Getting

More information

MPATE-GE 2618: C Programming for Music Technology. Syllabus

MPATE-GE 2618: C Programming for Music Technology. Syllabus MPATE-GE 2618: C Programming for Music Technology Instructor Dr. Schuyler Quackenbush schuyler.quackenbush@nyu.edu Lab Teaching Assistant TBD Description Syllabus MPATE-GE 2618: C Programming for Music

More information

15-323/ Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019

15-323/ Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019 15-323/15-623 Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019 1 Overview In this project, you will create a program that performs real-time audio generation. There

More information

ENCE 3241 Data Lab. 60 points Due February 19, 2010, by 11:59 PM

ENCE 3241 Data Lab. 60 points Due February 19, 2010, by 11:59 PM 0 Introduction ENCE 3241 Data Lab 60 points Due February 19, 2010, by 11:59 PM The purpose of this assignment is for you to become more familiar with bit-level representations and manipulations. You ll

More information

Problem Set 2 Out of 45 points Due Thursday, September 27, 2012 at 8pm

Problem Set 2 Out of 45 points Due Thursday, September 27, 2012 at 8pm Problem Set 2 Out of 45 points Due Thursday, September 27, 2012 at 8pm Goals Get acquainted with functions and libraries Get acquainted with character values and strings Recommended Reading Pages 11 14

More information

Digital Audio. Amplitude Analogue signal

Digital Audio. Amplitude Analogue signal Digital Audio The sounds that we hear are air molecules vibrating in a wave pattern. These sound waves are measured by our ear drums and processed in our brain. As computers are digital machines, sound

More information

Project #1: Tracing, System Calls, and Processes

Project #1: Tracing, System Calls, and Processes Project #1: Tracing, System Calls, and Processes Objectives In this project, you will learn about system calls, process control and several different techniques for tracing and instrumenting process behaviors.

More information

Audacity Tutorial Recording With Your PC

Audacity Tutorial Recording With Your PC Audacity Tutorial Recording With Your PC Audacity can record any audio signal that is played into the computer soundcard. This could be sound from a microphone, guitar or CD/record/cassette player. The

More information

Programming Standards: You must conform to good programming/documentation standards. Some specifics:

Programming Standards: You must conform to good programming/documentation standards. Some specifics: CS3114 (Spring 2011) PROGRAMMING ASSIGNMENT #3 Due Thursday, April 7 @ 11:00 PM for 100 points Early bonus date: Wednesday, April 6 @ 11:00 PM for a 10 point bonus Initial Schedule due Thursday, March

More information

CSC 101: Lab #7 Digital Audio Due Date: 5:00pm, day after lab session

CSC 101: Lab #7 Digital Audio Due Date: 5:00pm, day after lab session CSC 101: Lab #7 Digital Audio Due Date: 5:00pm, day after lab session Purpose: The purpose of this lab is to provide you with hands-on experience in digital audio manipulation techniques using the Audacity

More information

Creating a Shell or Command Interperter Program CSCI411 Lab

Creating a Shell or Command Interperter Program CSCI411 Lab Creating a Shell or Command Interperter Program CSCI411 Lab Adapted from Linux Kernel Projects by Gary Nutt and Operating Systems by Tannenbaum Exercise Goal: You will learn how to write a LINUX shell

More information

CSE 143: Computer Programming II Winter 2019 HW6: AnagramSolver (due Thursday, Feb 28, :30pm)

CSE 143: Computer Programming II Winter 2019 HW6: AnagramSolver (due Thursday, Feb 28, :30pm) CSE 143: Computer Programming II Winter 2019 HW6: AnagramSolver (due Thursday, Feb 28, 2019 11:30pm) This assignment focuses on recursive backtracking. Turn in the following files using the link on the

More information

ASSIGNMENT 5 Objects, Files, and a Music Player

ASSIGNMENT 5 Objects, Files, and a Music Player ASSIGNMENT 5 Objects, Files, and a Music Player COMP-202A, Fall 2009, All Sections Due: Thursday, December 3, 2009 (23:55) You MUST do this assignment individually and, unless otherwise specified, you

More information

LAB 1 Machine Perception of Music Computer Science , Winter Quarter 2006

LAB 1 Machine Perception of Music Computer Science , Winter Quarter 2006 1.0 Lab overview and objectives This laboratory assignment will help you learn basic sound manipulation using MATLAB 7. Lab due time/date: 1pn, 1/11/2006 What to hand in: see Section 5 of this document

More information

CSE 143: Computer Programming II Summer 2017 HW5: Anagrams (due Thursday, August 3, :30pm)

CSE 143: Computer Programming II Summer 2017 HW5: Anagrams (due Thursday, August 3, :30pm) CSE 143: Computer Programming II Summer 2017 HW5: Anagrams (due Thursday, August 3, 2017 11:30pm) This assignment focuses on recursive backtracking. Turn in the following files using the link on the course

More information

Basic Survival UNIX.

Basic Survival UNIX. Basic Survival UNIX Many Unix based operating systems make available a Graphical User Interface for the sake of providing an easy way for less experienced users to work with the system. Some examples are

More information

ENGR 3950U / CSCI 3020U (Operating Systems) Simulated UNIX File System Project Instructor: Dr. Kamran Sartipi

ENGR 3950U / CSCI 3020U (Operating Systems) Simulated UNIX File System Project Instructor: Dr. Kamran Sartipi ENGR 3950U / CSCI 3020U (Operating Systems) Simulated UNIX File System Project Instructor: Dr. Kamran Sartipi Your project is to implement a simple file system using C language. The final version of your

More information

Aliki User Manual. Fons Adriaensen

Aliki User Manual. Fons Adriaensen - 0.1.0 User Manual Fons Adriaensen fons@kokkinizita.net Contents 1 Introduction 3 1.1 Installation....................................... 3 1.2 Running Aliki...................................... 3 1.3

More information

Using Hybrid Reverb 2 in a VTPO. Overview

Using Hybrid Reverb 2 in a VTPO. Overview Using Hybrid Reverb 2 in a VTPO Overview Hybrid Reverb 2 is a true stereo convolution reverb that recreates the acoustic space of various rooms and halls. It is simple to use and comes complete with an

More information

CS155: Computer Security Spring Project #1

CS155: Computer Security Spring Project #1 CS155: Computer Security Spring 2018 Project #1 Due: Part 1: Thursday, April 12-11:59pm, Parts 2 and 3: Thursday, April 19-11:59pm. The goal of this assignment is to gain hands-on experience finding vulnerabilities

More information

CS Fundamentals of Programming II Fall Very Basic UNIX

CS Fundamentals of Programming II Fall Very Basic UNIX CS 215 - Fundamentals of Programming II Fall 2012 - Very Basic UNIX This handout very briefly describes how to use Unix and how to use the Linux server and client machines in the CS (Project) Lab (KC-265)

More information

Sales Manual Part II

Sales Manual Part II Sales Manual Part II In this sales manual, you ll be able to show how to make a song and create a WAV file of the song. Table of Contents Page 1. Main Features of the Sequencer 2 2. How to Demo the Sequencer

More information

CSE 351, Spring 2010 Lab 7: Writing a Dynamic Storage Allocator Due: Thursday May 27, 11:59PM

CSE 351, Spring 2010 Lab 7: Writing a Dynamic Storage Allocator Due: Thursday May 27, 11:59PM CSE 351, Spring 2010 Lab 7: Writing a Dynamic Storage Allocator Due: Thursday May 27, 11:59PM 1 Instructions In this lab you will be writing a dynamic storage allocator for C programs, i.e., your own version

More information

CS 215 Fundamentals of Programming II Spring 2019 Very Basic UNIX

CS 215 Fundamentals of Programming II Spring 2019 Very Basic UNIX CS 215 Fundamentals of Programming II Spring 2019 Very Basic UNIX This handout very briefly describes how to use Unix and how to use the Linux server and client machines in the EECS labs that dual boot

More information

Quick Start Guide

Quick Start Guide www.clearclicksoftware.com Quick Start Guide 1. Plug In Your Mic2USB Cable. First, just plug in the Mic2USB Cable into your microphone. Then, plug in the other end of the cable to any free USB port on

More information

CMSC 201 Spring 2017 Lab 01 Hello World

CMSC 201 Spring 2017 Lab 01 Hello World CMSC 201 Spring 2017 Lab 01 Hello World Assignment: Lab 01 Hello World Due Date: Sunday, February 5th by 8:59:59 PM Value: 10 points At UMBC, our General Lab (GL) system is designed to grant students the

More information

This is a combination of a programming assignment and ungraded exercises

This is a combination of a programming assignment and ungraded exercises CSE 11 Winter 2017 Programming Assignment #1 Covers Chapters: ZY 1-3 START EARLY! 100 Pts Due: 25 JAN 2017 at 11:59pm (2359) This is a combination of a programming assignment and ungraded exercises Exercises

More information

EECE.2160: ECE Application Programming

EECE.2160: ECE Application Programming Spring 2018 Programming Assignment #10: Instruction Decoding and File I/O Due Wednesday, 5/9/18, 11:59:59 PM (Extra credit ( 4 pts on final average), no late submissions or resubmissions) 1. Introduction

More information

Table Of Contents. 1. Zoo Information a. Logging in b. Transferring files 2. Unix Basics 3. Homework Commands

Table Of Contents. 1. Zoo Information a. Logging in b. Transferring files 2. Unix Basics 3. Homework Commands Table Of Contents 1. Zoo Information a. Logging in b. Transferring files 2. Unix Basics 3. Homework Commands Getting onto the Zoo Type ssh @node.zoo.cs.yale.edu, and enter your netid pass when prompted.

More information

Using the Zoo Workstations

Using the Zoo Workstations Using the Zoo Workstations Version 1.86: January 16, 2014 If you ve used Linux before, you can probably skip many of these instructions, but skim just in case. Please direct corrections and suggestions

More information

Introduction to Unix - Lab Exercise 0

Introduction to Unix - Lab Exercise 0 Introduction to Unix - Lab Exercise 0 Along with this document you should also receive a printout entitled First Year Survival Guide which is a (very) basic introduction to Unix and your life in the CSE

More information

Creating a New Project

Creating a New Project ÂØÒňΠMV-8000 Workshop Creating a New Project 2005 Roland Corporation U.S. All rights reserved. No part of this publication may be reproduced in any form without the written permission of Roland Corporation

More information

last time in cs recitations. computer commands. today s topics.

last time in cs recitations. computer commands. today s topics. last time in cs1007... recitations. course objectives policies academic integrity resources WEB PAGE: http://www.columbia.edu/ cs1007 NOTE CHANGES IN ASSESSMENT 5 EXTRA CREDIT POINTS ADDED sign up for

More information

Running Java Programs

Running Java Programs Running Java Programs Written by: Keith Fenske, http://www.psc-consulting.ca/fenske/ First version: Thursday, 10 January 2008 Document revised: Saturday, 13 February 2010 Copyright 2008, 2010 by Keith

More information

Working with Basic Linux. Daniel Balagué

Working with Basic Linux. Daniel Balagué Working with Basic Linux Daniel Balagué How Linux Works? Everything in Linux is either a file or a process. A process is an executing program identified with a PID number. It runs in short or long duration

More information

CS261: HOMEWORK 2 Due 04/13/2012, at 2pm

CS261: HOMEWORK 2 Due 04/13/2012, at 2pm CS261: HOMEWORK 2 Due 04/13/2012, at 2pm Submit six *.c files via the TEACH website: https://secure.engr.oregonstate.edu:8000/teach.php?type=want_auth 1. Introduction The purpose of HW2 is to help you

More information

Overview of Project V Buffer Manager. Steps of Phase II

Overview of Project V Buffer Manager. Steps of Phase II Buffer Manager: Project V Assignment UC Berkeley Computer Science 186 Fall 2002 Introduction to Database Systems November 15, 2002 Due Tuesday, December 3, 2003 5PM Overview of Project V Buffer Manager

More information

Systems Programming/ C and UNIX

Systems Programming/ C and UNIX Systems Programming/ C and UNIX Alice E. Fischer Lecture 5 Makefiles October 2, 2017 Alice E. Fischer Lecture 5 Makefiles Lecture 5 Makefiles... 1/14 October 2, 2017 1 / 14 Outline 1 Modules and Makefiles

More information

Lab 1 Implementing a Simon Says Game

Lab 1 Implementing a Simon Says Game ECE2049 Embedded Computing in Engineering Design Lab 1 Implementing a Simon Says Game In the late 1970s and early 1980s, one of the first and most popular electronic games was Simon by Milton Bradley.

More information

Quick Guide to Getting Started with:

Quick Guide to Getting Started with: Quick Guide to Getting Started with: 1.0 Introduction -- What is Audacity Audacity is free, open source software for recording and editing sounds. It is a program that manipulates digital audio waveforms.

More information

CS : Programming for Non-Majors, Fall 2018 Programming Project #5: Big Statistics Due by 10:20am Wednesday November

CS : Programming for Non-Majors, Fall 2018 Programming Project #5: Big Statistics Due by 10:20am Wednesday November CS 1313 010: Programming for Non-Majors, Fall 2018 Programming Project #5: Big Statistics Due by 10:20am Wednesday November 7 2018 This fifth programming project will give you experience writing programs

More information

08 Sound. Multimedia Systems. Nature of Sound, Store Audio, Sound Editing, MIDI

08 Sound. Multimedia Systems. Nature of Sound, Store Audio, Sound Editing, MIDI Multimedia Systems 08 Sound Nature of Sound, Store Audio, Sound Editing, MIDI Imran Ihsan Assistant Professor, Department of Computer Science Air University, Islamabad, Pakistan www.imranihsan.com Lectures

More information

CS 105, Spring 2015 Ring Buffer

CS 105, Spring 2015 Ring Buffer CS 105, Spring 2015 Ring Buffer March 10, 2015 1 Introduction A ring buffer, also called a circular buffer, is a common method of sharing information between a producer and a consumer. In class, we have

More information

Lab 1: Introduction to C, ASCII ART & the Linux Command Line

Lab 1: Introduction to C, ASCII ART & the Linux Command Line .i.-' `-. i..' `/ \' _`.,-../ o o \.' ` ( / _\ /_ \ ) \\\ (_.'.'"`.`._) /// \\`._(..: :..)_.'// \`. \.:-:. /.'/ `-i-->..

More information

CS 1550 Project 3: File Systems Directories Due: Sunday, July 22, 2012, 11:59pm Completed Due: Sunday, July 29, 2012, 11:59pm

CS 1550 Project 3: File Systems Directories Due: Sunday, July 22, 2012, 11:59pm Completed Due: Sunday, July 29, 2012, 11:59pm CS 1550 Project 3: File Systems Directories Due: Sunday, July 22, 2012, 11:59pm Completed Due: Sunday, July 29, 2012, 11:59pm Description FUSE (http://fuse.sourceforge.net/) is a Linux kernel extension

More information

DIGITIZING ANALOG AUDIO SOURCES USING AUDACITY

DIGITIZING ANALOG AUDIO SOURCES USING AUDACITY DIGITIZING ANALOG AUDIO SOURCES USING AUDACITY INTRODUCTION There are many ways to digitize and edit audio, all of which are dependant on the hardware and software used. This workflow provides instructions

More information

How to build MPTK with CMake SUMMARY

How to build MPTK with CMake SUMMARY How to build MPTK with CMake SUMMARY Read this document to learn how to build the Matching Pursuit Tool Kit on Win32 platform using CMake and Visual Studio LAYOUT 1Getting Started...2 1.1Required tools...2

More information

Project 3: Base64 Content-Transfer-Encoding

Project 3: Base64 Content-Transfer-Encoding CMSC 313, Computer Organization & Assembly Language Programming Section 0101 Fall 2001 Project 3: Base64 Content-Transfer-Encoding Due: Tuesday November 13, 2001 Objective The objectives of this programming

More information

Graduate-Credit Programming Project

Graduate-Credit Programming Project Graduate-Credit Programming Project Due by 11:59 p.m. on December 14 Overview For this project, you will: develop the data structures associated with Huffman encoding use these data structures and the

More information

Laboratory 1: Eclipse and Karel the Robot

Laboratory 1: Eclipse and Karel the Robot Math 121: Introduction to Computing Handout #2 Laboratory 1: Eclipse and Karel the Robot Your first laboratory task is to use the Eclipse IDE framework ( integrated development environment, and the d also

More information

1-D Time-Domain Convolution. for (i=0; i < outputsize; i++) { y[i] = 0; for (j=0; j < kernelsize; j++) { y[i] += x[i - j] * h[j]; } }

1-D Time-Domain Convolution. for (i=0; i < outputsize; i++) { y[i] = 0; for (j=0; j < kernelsize; j++) { y[i] += x[i - j] * h[j]; } } Introduction: Convolution is a common operation in digital signal processing. In this project, you will be creating a custom circuit implemented on the Nallatech board that exploits a significant amount

More information

1. Make the recordings. 2. Transfer the recordings to your computer

1. Make the recordings. 2. Transfer the recordings to your computer Making recordings and burning them to CD can be done in four steps: 1. Make the recordings 2. Transfer them to your computer 3. Edit them 4. Copy the edited files to itunes 1. Make the recordings Turn

More information

Programming Tips for CS758/858

Programming Tips for CS758/858 Programming Tips for CS758/858 January 28, 2016 1 Introduction The programming assignments for CS758/858 will all be done in C. If you are not very familiar with the C programming language we recommend

More information

Using Audacity A Tutorial

Using Audacity A Tutorial Using Audacity A Tutorial Peter Graff Production Manager, KBCS FM These days, there are many digital audio editors out there that can do amazing things with sound. But, most of them cost money, and if

More information

CMSC 201 Spring 2018 Lab 01 Hello World

CMSC 201 Spring 2018 Lab 01 Hello World CMSC 201 Spring 2018 Lab 01 Hello World Assignment: Lab 01 Hello World Due Date: Sunday, February 4th by 8:59:59 PM Value: 10 points At UMBC, the GL system is designed to grant students the privileges

More information

Python Programming Exercises 1

Python Programming Exercises 1 Python Programming Exercises 1 Notes: throughout these exercises >>> preceeds code that should be typed directly into the Python interpreter. To get the most out of these exercises, don t just follow them

More information

Operating Systems, Assignment 2 Threads and Synchronization

Operating Systems, Assignment 2 Threads and Synchronization Operating Systems, Assignment 2 Threads and Synchronization Responsible TA's: Zohar and Matan Assignment overview The assignment consists of the following parts: 1) Kernel-level threads package 2) Synchronization

More information

Programming Assignment 2 ( 100 Points )

Programming Assignment 2 ( 100 Points ) Programming Assignment 2 ( 100 Points ) Due: Thursday, October 16 by 11:59pm This assignment has two programs: one a Java application that reads user input from the command line (TwoLargest) and one a

More information

Audio Editing in Audacity. Josh Meltzer Western Kentucky University School of Journalism & Broadcasting

Audio Editing in Audacity. Josh Meltzer Western Kentucky University School of Journalism & Broadcasting Audio Editing in Audacity Josh Meltzer Western Kentucky University School of Journalism & Broadcasting www.joshmeltzer.com Revised 6/2010 ABOUT Audacity is a free downloadable program for both PC and MAC

More information

Computer Networks CS3516 B Term, 2013

Computer Networks CS3516 B Term, 2013 Computer Networks CS3516 B Term, 2013 Project 1 Project Assigned: October 31 Checkpoint: November 07 12:01 AM Due: November 14 12:01 AM Networks - Project 1 1 What You Will Do In This Project. The purpose

More information

CS 103 The Social Network

CS 103 The Social Network CS 103 The Social Network 1 Introduction This assignment will be part 1 of 2 of the culmination of your C/C++ programming experience in this course. You will use C++ classes to model a social network,

More information

Due: 9 February 2017 at 1159pm (2359, Pacific Standard Time)

Due: 9 February 2017 at 1159pm (2359, Pacific Standard Time) CSE 11 Winter 2017 Program Assignment #2 (100 points) START EARLY! Due: 9 February 2017 at 1159pm (2359, Pacific Standard Time) PROGRAM #2: DoubleArray11 READ THE ENTIRE ASSIGNMENT BEFORE STARTING In lecture,

More information

Logic Pro 7.1 Personal Manual by Edgar Rothermich <http://homepage.mac.com/edgarrothermich>

Logic Pro 7.1 Personal Manual by Edgar Rothermich <http://homepage.mac.com/edgarrothermich> Logic Pro 7.1 File Management (2005-0904) 1 of 9 File Management Logic Pro 7.1 Personal Manual by Edgar Rothermich EdgarRothermich@mac.com File Type Logic uses

More information

Lab #1 Installing a System Due Friday, September 6, 2002

Lab #1 Installing a System Due Friday, September 6, 2002 Lab #1 Installing a System Due Friday, September 6, 2002 Name: Lab Time: Grade: /10 The Steps of Installing a System Today you will install a software package. Implementing a software system is only part

More information

CHAPTER 10: SOUND AND VIDEO EDITING

CHAPTER 10: SOUND AND VIDEO EDITING CHAPTER 10: SOUND AND VIDEO EDITING What should you know 1. Edit a sound clip to meet the requirements of its intended application and audience a. trim a sound clip to remove unwanted material b. join

More information

Lab 1 Implementing a Simon Says Game

Lab 1 Implementing a Simon Says Game ECE2049 Embedded Computing in Engineering Design Lab 1 Implementing a Simon Says Game In the late 1970s and early 1980s, one of the first and most popular electronic games was Simon by Milton Bradley.

More information

CS 361 Computer Systems Fall 2017 Homework Assignment 1 Linking - From Source Code to Executable Binary

CS 361 Computer Systems Fall 2017 Homework Assignment 1 Linking - From Source Code to Executable Binary CS 361 Computer Systems Fall 2017 Homework Assignment 1 Linking - From Source Code to Executable Binary Due: Thursday 14 Sept. Electronic copy due at 9:00 A.M., optional paper copy may be delivered to

More information

Audacity Tutorial C. Stanley

Audacity Tutorial C. Stanley Audacity Tutorial C. Stanley Getting to Know Audacity: Silence Keys Microphone Select Editing Tools Recording Tools Cut, Copy, Paste Undo, Redo Zoom How to Record: Select external microphone. Press the

More information

Project 1 for CMPS 181: Implementing a Paged File Manager

Project 1 for CMPS 181: Implementing a Paged File Manager Project 1 for CMPS 181: Implementing a Paged File Manager Deadline: Sunday, April 23, 2017, 11:59 pm, on Canvas. Introduction In project 1, you will implement a very simple paged file (PF) manager. It

More information

cc -o build/test_translate build/test_translate.o b... $

cc -o build/test_translate build/test_translate.o b... $ EECS 211 Homework 2 Winter 2019 Due: Partners: January 24, 2019 at 11:59 PM No; must be completed by yourself Purpose The goal of this assignment is to get you programming with strings, iteration, and

More information

Introduction to Unix: Fundamental Commands

Introduction to Unix: Fundamental Commands Introduction to Unix: Fundamental Commands Ricky Patterson UVA Library Based on slides from Turgut Yilmaz Istanbul Teknik University 1 What We Will Learn The fundamental commands of the Unix operating

More information

CS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 11:00 PM for 100 points Due Monday, October 11:00 PM for 10 point bonus

CS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 11:00 PM for 100 points Due Monday, October 11:00 PM for 10 point bonus CS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 15 @ 11:00 PM for 100 points Due Monday, October 14 @ 11:00 PM for 10 point bonus Updated: 10/10/2013 Assignment: This project continues

More information

MP3 Recording Guidelines

MP3 Recording Guidelines MP3 Recording Guidelines Using Audacity on a Computer Effective March 2018 Contents Introduction... 3 About Audacity... 4 Involving Your School s Technical Consultant... 5 Downloading and Installing Audacity...

More information

Introduction to Linux

Introduction to Linux Introduction to Linux The command-line interface A command-line interface (CLI) is a type of interface, that is, a way to interact with a computer. Window systems, punched cards or a bunch of dials, buttons

More information

Web API Lab. The next two deliverables you shall write yourself.

Web API Lab. The next two deliverables you shall write yourself. Web API Lab In this lab, you shall produce four deliverables in folder 07_webAPIs. The first two deliverables should be pretty much done for you in the sample code. 1. A server side Web API (named listusersapi.jsp)

More information

STA 303 / 1002 Using SAS on CQUEST

STA 303 / 1002 Using SAS on CQUEST STA 303 / 1002 Using SAS on CQUEST A review of the nuts and bolts A.L. Gibbs January 2012 Some Basics of CQUEST If you don t already have a CQUEST account, go to www.cquest.utoronto.ca and request one.

More information

Programming Assignment 2

Programming Assignment 2 CS 122 Fall, 2004 Programming Assignment 2 New Mexico Tech Department of Computer Science Programming Assignment 2 CS122 Algorithms and Data Structures Due 11:00AM, Wednesday, October 13th, 2004 Objectives:

More information

ASSIGNMENT 5 Objects, Files, and More Garage Management

ASSIGNMENT 5 Objects, Files, and More Garage Management ASSIGNMENT 5 Objects, Files, and More Garage Management COMP-202B, Winter 2010, All Sections Due: Wednesday, April 14, 2009 (23:55) You MUST do this assignment individually and, unless otherwise specified,

More information

Operating Systems. Objective

Operating Systems. Objective Operating Systems Project #1: Introduction & Booting Project #1: Introduction & Booting Objective Background Tools Getting Started Booting bochs The Bootloader Assembling the Bootloader Disk Images A Hello

More information

Tutorial: GNU Radio Companion

Tutorial: GNU Radio Companion Tutorials» Guided Tutorials» Previous: Introduction Next: Programming GNU Radio in Python Tutorial: GNU Radio Companion Objectives Create flowgraphs using the standard block libraries Learn how to debug

More information

R- installation and adminstration under Linux for dummie

R- installation and adminstration under Linux for dummie R- installation and adminstration under Linux for dummies University of British Columbia Nov 8, 2012 Outline 1. Basic introduction of Linux Why Linux (department servers)? Some terminology Tools for windows

More information

CSC209. Software Tools and Systems Programming. https://mcs.utm.utoronto.ca/~209

CSC209. Software Tools and Systems Programming. https://mcs.utm.utoronto.ca/~209 CSC209 Software Tools and Systems Programming https://mcs.utm.utoronto.ca/~209 What is this Course About? Software Tools Using them Building them Systems Programming Quirks of C The file system System

More information

Our second exam is Thursday, November 10. Note that it will not be possible to get all the homework submissions graded before the exam.

Our second exam is Thursday, November 10. Note that it will not be possible to get all the homework submissions graded before the exam. Com S 227 Fall 2016 Assignment 3 300 points Due Date: Wednesday, November 2, 11:59 pm (midnight) Late deadline (25% penalty): Thursday, November 2, 11:59 pm General information This assignment is to be

More information

ASSIGNMENT TWO: PHONE BOOK

ASSIGNMENT TWO: PHONE BOOK ASSIGNMENT TWO: PHONE BOOK ADVANCED PROGRAMMING TECHNIQUES SEMESTER 1, 2017 SUMMARY In this assignment, you will use your C programming skills to create a phone book. The phone book loads its entries from

More information

21M.361 Composing with Computers I (Electronic Music Composition) Spring 2008

21M.361 Composing with Computers I (Electronic Music Composition) Spring 2008 MIT OpenCourseWare http://ocw.mit.edu 21M.361 Composing with Computers I (Electronic Music Composition) Spring 2008 For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.

More information

EE516: Embedded Software Project 1. Setting Up Environment for Projects

EE516: Embedded Software Project 1. Setting Up Environment for Projects EE516: Embedded Software Project 1. Setting Up Environment for Projects By Dong Jae Shin 2015. 09. 01. Contents Introduction to Projects of EE516 Tasks Setting Up Environment Virtual Machine Environment

More information

Lab: Supplying Inputs to Programs

Lab: Supplying Inputs to Programs Steven Zeil May 25, 2013 Contents 1 Running the Program 2 2 Supplying Standard Input 4 3 Command Line Parameters 4 1 In this lab, we will look at some of the different ways that basic I/O information can

More information

Software Development With Emacs: The Edit-Compile-Debug Cycle

Software Development With Emacs: The Edit-Compile-Debug Cycle Software Development With Emacs: The Edit-Compile-Debug Cycle Luis Fernandes Department of Electrical and Computer Engineering Ryerson Polytechnic University August 8, 2017 The Emacs editor permits the

More information

CMPT 300. Operating Systems. Brief Intro to UNIX and C

CMPT 300. Operating Systems. Brief Intro to UNIX and C CMPT 300 Operating Systems Brief Intro to UNIX and C Outline Welcome Review Questions UNIX basics and Vi editor Using SSH to remote access Lab2(4214) Compiling a C Program Makefile Basic C/C++ programming

More information

COMP 321: Introduction to Computer Systems

COMP 321: Introduction to Computer Systems Assigned: 1/18/18, Due: 2/1/18, 11:55 PM Important: This project must be done individually. Be sure to carefully read the course policies for assignments (including the honor code policy) on the assignments

More information

Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum

Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum Table of Contents Preparation... 3 Exercise 1: Create a repository. Use the command line.... 4 Create a repository...

More information

WFM-RPI. Software for SDR : the WFM-RPI set

WFM-RPI. Software for SDR : the WFM-RPI set WFM-RPI Software for SDR : the WFM-RPI set Jan van Katwijk Lazy Chair Computing The Netherlands J.vanKatwijk@gmail.com January 12, 2016 : 2015, Jan van Katwijk, Lazy Chair Computing 1 1 Introduction WFM-RPI

More information

>print "hello" [a command in the Python programming language]

>print hello [a command in the Python programming language] What Is Programming? Programming is the process of writing the code of computer programs. A program is just a sequence of instructions that a computer is able to read and execute, to make something happen,

More information

The build2 Toolchain Installation and Upgrade

The build2 Toolchain Installation and Upgrade The build2 Toolchain Installation and Upgrade Copyright 2014-2019 Code Synthesis Ltd Permission is granted to copy, distribute and/or modify this document under the terms of the MIT License This revision

More information

CMPSCI 187 / Spring 2015 Postfix Expression Evaluator

CMPSCI 187 / Spring 2015 Postfix Expression Evaluator CMPSCI 187 / Spring 2015 Postfix Expression Evaluator Due on Thursday, 05 March, 8:30 a.m. Marc Liberatore and John Ridgway Morrill I N375 Section 01 @ 10:00 Section 02 @ 08:30 1 CMPSCI 187 / Spring 2015

More information

Chapter-3. Introduction to Unix: Fundamental Commands

Chapter-3. Introduction to Unix: Fundamental Commands Chapter-3 Introduction to Unix: Fundamental Commands What You Will Learn The fundamental commands of the Unix operating system. Everything told for Unix here is applicable to the Linux operating system

More information

EECE.2160: ECE Application Programming

EECE.2160: ECE Application Programming Fall 2017 Programming Assignment #10: Doubly-Linked Lists Due Monday, 12/18/17, 11:59:59 PM (Extra credit ( 5 pts on final average), no late submissions or resubmissions) 1. Introduction This assignment

More information

Scripting Languages. Diana Trandabăț

Scripting Languages. Diana Trandabăț Scripting Languages Diana Trandabăț Master in Computational Linguistics - 1 st year 2017-2018 Today s lecture What is Perl? How to install Perl? How to write Perl progams? How to run a Perl program? perl

More information

Final Project: LC-3 Simulator

Final Project: LC-3 Simulator Final Project: LC-3 Simulator Due Date: Friday 4/27/2018 11:59PM; No late handins This is the final project for this course. It is a simulator for LC-3 computer from the Patt and Patel book. As you work

More information

CSC209. Software Tools and Systems Programming. https://mcs.utm.utoronto.ca/~209

CSC209. Software Tools and Systems Programming. https://mcs.utm.utoronto.ca/~209 CSC209 Software Tools and Systems Programming https://mcs.utm.utoronto.ca/~209 What is this Course About? Software Tools Using them Building them Systems Programming Quirks of C The file system System

More information