FYP Final Presentation: Distributed Audio Mixing Daire O'Neill, Final Year Electronic Engineering Project Supervisor: Dr Peter Corcoran Co-Supervisor:

Slides:



Advertisements
Similar presentations
Key-word Driven Automation Framework Shiva Kumar Soumya Dalvi May 25, 2007.
Advertisements

Final Year Project Progress January 2007 By Daire O’Neill 4EE.
NSF REU JULY 27 TH, 2012 Sound Pixel Project. Building a Frame Design Concept  Transportable, study, and easily constructed Material: 80/20  Lightweight.
1 Configuring Internet- related services (April 22, 2015) © Abdou Illia, Spring 2015.
Chapter One The Essence of UNIX.
COEN 445 Communication Networks and Protocols Lab 4
28.2 Functionality Application Software Provides Applications supply the high-level services that user access, and determine how users perceive the capabilities.
J4www/jea Week 3 Version Slide edits: nas1 Format of lecture: Assignment context: CRUD - “update details” JSP models.
Presenter : Shih-Tung Huang Tsung-Cheng Lin Kuan-Fu Kuo 2015/6/15 EICE team Model-Level Debugging of Embedded Real-Time Systems Wolfgang Haberl, Markus.
Background Info The UK Mirror Service provides mirror copies of data and programs from many sources all over the world. This enables users in the UK to.
ITalk 5000b ENEE 408G Group 4 FALL 2002 SEMESTER Josh Merti Pall Kunchai Vijay Kumar.
Tcl Agent : A flexible and secure mobile-agent system Paper by Robert S. Gray Dartmouth College Presented by Vipul Sawhney University of Pennsylvania.
Useful Tools for Testing
Collaboration Suite Business Process Management
Cambodia-India Entrepreneurship Development Centre - : :.... :-:-
Presented by Mina Haratiannezhadi 1.  publishing, editing and modifying content  maintenance  central interface  manage workflows 2.
Operating Systems.
Installing Windows XP Professional Using Attended Installation Slide 1 of 41Session 2 Ver. 1.0 CompTIA A+ Certification: A Comprehensive Approach for all.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
1 Using jQuery JavaScript & jQuery the missing manual (Second Edition)
Securing LAMP: Linux, Apache, MySQL and PHP Track 2 Workshop PacNOG 7 July 1, 2010 Pago Pago, American Samoa.
What is Unix Prepared by Dr. Bahjat Qazzaz. What is Unix UNIX is a computer operating system. An operating system is the program that – controls all the.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
Chapter 11: Creating and Managing Shared Folders BAI617.
Lesson 4 Computer Software
Paper on Best implemented scientific concept for E-Governance projects Virtual Machine By Nitin V. Choudhari, DIO,NIC,Akola.
IS 466 ADVANCED TOPICS IN INFORMATION SYSTEMS LECTURER : NOUF ALMUJALLY 3 – 10 – 2011 College Of Computer Science and Information, Information Systems.
Understanding Computers1 Chapter 5 System Software: Operating Systems and Utilities.
1 port BOSS on Wenjing Wu (IHEP-CC)
SKA/KAT SPIN Presentation Software Engineering (!?) Robert Crida.
LSC Segment Database Duncan Brown Caltech LIGO-G Z.
LOD Surveillance System Jamie Creech Software Engineer.
Final Year Project Electronic & Computer Engineering Student: Andrew Sweeney Supervisor: Dr. Peter Corcoran Design and Realisation of Experiments for an.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
Final Year Project Presentation by Daire O’Neill 4EE.
Component Technology. Challenges Facing the Software Industry Today’s applications are large & complex – time consuming to develop, difficult and costly.
The Client/Server Database Environment Ployphan Sornsuwit KPRU Ref.
1 Welcome to CSC 301 Web Programming Charles Frank.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
3-Tier Client/Server Internet Example. TIER 1 - User interface and navigation Labeled Tier 1 in the following graphic, this layer comprises the entire.
Chapter 8 Configuring and Managing Shared Folder Security.
In the Labs… X-Bot 2003 by Overtech Technologies.
SKYPIAX, how to add Skype capabilities to FreeSWITCH (and Asterisk) CHICAGO, USA, September 2009.
Protocols COM211 Communications and Networks CDA College Olga Pelekanou
Introduction of Geoprocessing Lecture 9. Geoprocessing  Geoprocessing is any GIS operation used to manipulate data. A typical geoprocessing operation.
Introduction TO Network Administration
Integrity Check As You Well Know, It Is A Violation Of Academic Integrity To Fake The Results On Any.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Module 5: Managing Addresses and Address Lists.
Install CB 1.8 on Ubuntu. Steps Followed Install Ubuntu (Ubuntu LTS) on Virtual machine – (VMware Workstation) (
CMPE 226 Database Systems April 19 Class Meeting Department of Computer Engineering San Jose State University Spring 2016 Instructor: Ron Mak
+ Auto-Testing Code for Teachers & Beginning Programmers Dr. Ronald K. Smith Graceland University.
This was written with the assumption that workbooks would be added. Even if these are not introduced until later, the same basic ideas apply Hopefully.
1 Using jQuery JavaScript & jQuery the missing manual (Second Edition)
Advanced Computing Facility Introduction
Node.js Modules Header Mastering Node.js, Part 2 Eric W. Greene
Development Environment
Useful Tools for Testing
Web Interface for Formatter
FTP - File Transfer Protocol
Welcome To : Group 1 VC Presentation
Source Code Management
Programmable Logic Controllers (PLCs) An Overview.
Synchronization in Distributed File System
Microsoft Ignite NZ October 2016 SKYCITY, Auckland.
CIS16 Application Development – Programming with Visual Basic
Chapter 2: The Linux System Part 1
Configuring Internet-related services
Topics Introduction to Value-returning Functions: Generating Random Numbers Writing Your Own Value-Returning Functions The math Module Storing Functions.
Lecture 34: Testing II April 24, 2017 Selenium testing script 7/7/2019
Presentation transcript:

FYP Final Presentation: Distributed Audio Mixing Daire O'Neill, Final Year Electronic Engineering Project Supervisor: Dr Peter Corcoran Co-Supervisor: Frank Callaly

Structure of presentation Project Overview How I approached this project Issues encountered Implementation of final system Objectives achieved Conclusions

Project Overview The ultimate goal of this project was to design and implement a client-server system on Linux that allowed mixing of audio files from different sources, over a network A server was needed that could receive audio data from multiple clients and mix the audio, as in a traditional recording studio This system would allow musicians in different locations to record together, as if they were in the same room

Goals The goals for this project were as follows: –To install Linux on a desktop PC and become familiar with the basics of using Linux –To install and use ALSA to capture and playback audio on a Linux machine –To implement a server capable of receiving audio data from clients and mixing the audio –To implement a method of synchronising separate audio files

How I approached the project My first task was to install Linux on a PC. I experimented with both Fedora and Ubuntu distributions, and found Ubuntu easier to use After becoming familiar with using Linux, I began to search for a suitable application on which to base my project, as it was clear that I could not hope to write an entire multitrack recording program by myself I needed a multitrack recording application that I could configure to use files that were received over a network

How I approached the project I initially downloaded and installed multitrack programs such as Ardour and Audacity, hoping to modify the source code such that these programs could connect to a server to receive audio data However these programs are sophisticated (and therefore complex), so the source code was difficult for me to understand

How I approached the project To go back to basics, I then concentrated on writing Python scripts to capture and playback audio I successfully completed this by using Pyaudio, a Python module that provides Python bindings for the Linux PortAudio application I then gained understanding of the actual code used in the recording and playback of audio However I still needed an application that could provide multitrack playback of audio files...

Ecasound Ecasound proved to be the solution to these problems As it is a command line based recording application, I could control it the way I wanted by using shell scripts, eliminating the need to modify the actual source code Ecasound can easily be automated by writing shell scripts to execute audio playback and recording functions Many complex functions can be implemented in Ecasound by passing the required arguments from the command line

FTP Server My next task was to implement a server that could receive audio files from multiple clients and mix them The server I used was VSFTPD. I chose this because of it's stability and ease of use I then wrote a series of shell scripts that could upload and download audio data from the server, and provide recording and mixing functions, thus implementing the final system

The Finished System By executing the appropriate shell script, the user (client) can: –Download an audio track (in wave file format) from the server –Playback this audio track and mix their own audio input during playback –Record the desired mix of the downloaded track and their own track as a wave file –Upload the new mix to the server The system was set up for use by 2 client PCs, both running Linux

System Flowchart

The Finished System The server retrieves the wave files uploaded by the clients from their directories, mixes the audio using Ecasound and returns the resulting wave file to the clients directories Each client can then download the new audio file (a mix of both clients audio tracks), and add more tracks as desired In this way, audio tracks from multiple clients are layered to create a finished audio mix, as in a recording studio For example, Client 1 records a vocal track, then Client 2 mixes a drum track with this, Client 1 then adds a bass track, etc

Using Ecasound All audio files used in this project are recorded using PCM (uncompressed) wave file format, sampled at 44.1kHz with a resolution of 16 bits Although this is the default for Ecasound, this can easily be changed for different sampling rates

Using Ecasound A fundamental principle of Ecasound is the use of “chains” Chains can be considered as virtual “audio cables”, with a specified input and output. They are used to route audio in Ecasound. In the following example syntax, a chain is set up, the input set as a wave file (test.wav) and the output routed to the soundcard (/dev/dsp) : –ecasound -a:1 -i test.wav -o /dev/dsp This results in playback of the audio file “test.wav”.

Example scripts The next slide shows an example of one of the scripts written to control Ecasound for this project, called “monitor+record” When executed, this script starts Ecasound and plays back the latest version of the “current mix” as downloaded from the server, and also records any audio that is input from the soundcard Monitoring the output allows the user to record in time with the backing track. The mixed audio data is written to a wave file (“client2.wav”).

“monitor+record”

“servermix” script The next slide shows the “servermix” script used in this project This script copies the uploaded files from each client into a common directory, uses Ecasound to mix the audio files and returns the resulting mix to the directory of each client The new audio data can then be downloaded by the clients

“servermix”

Configuring the FTP server Audio files are uploaded and downloaded from the FTP server by using “put” and “get” commands Seperate directories were set up on the server for both clients, each containing “incoming” and “outgoing” folders Files are uploaded by each client to their “incoming” folder, and downloaded from their “outgoing” folder This allows the server to mix audio data from both clients

Objectives Achieved The required objective of implementing a networked recording system has been achieved Using this system, musicians can collaborate to produce a finished audio track containing contributions from many different users Although a solution to the issue of synchronisation between different audio files (due to clock timing differences on different PCs) has not been implemented, the finished system still allows for server-side mixing of independently captured audio sources.

Objectives Achieved I also learned a lot about using Linux, and particularly about audio applications in Linux As I have a keen interest in audio technology, I feel that this project has been of great benefit to me, and am glad to have been given the opportunity to undertake such a project.