TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... ·...

Post on 14-Aug-2020

2 views 0 download

transcript

TeensyAudio CapstoneConnor DelaplaneJoshua BucklinJonathan JensenAida KeiferRyan MellmerNicholas CraigYu Tang

THE PRODUCT•What is it?

• A C++ library and accompanying Python utility to allow realistic

instrumentation audio to be synthesized on the Teensy 3.2. Will

allow pitch shifting, looping, tremolo, and vibrato effects to be

imposed on a raw byte buffer of recorded samples.

•Who will use it?

• This library will be exposed mainly to developers who will

integrate it into their personal projects.

•Why?

• True wavetable synthesis hasn’t been implemented for use on

such a small microcontroller, and would allow these devices to

be turned into realistic-sounding instruments.

ASSUMPTIONS AND CONSTRAINTS

• Low latency

• There should be no perceivable delay in playing samples in response to user

input

• Run time efficient

• Performance cannot degrade upon playback of multiple samples

• Teensy 3.2 has limited memory, 64K RAM

• All functionality must be memory efficient

• C++ code will be interacting with pre-existing device drivers for

generating sound. Driver creation is outside the scope of this project.

FEATURES

● Extracts attack, sustain, release phases from a SoundFont file for a

given note/instrument.

● Loads extracted SoundFont data for playback on the Teensy.

● Changes the pitch of a note by altering the frequency and intensity.

(Turns one note into many.)

● Looping of a sample until a stopping condition occurs.

● Plays audio with tremolo or vibrato effect.

DELIVERABLES

• SoundFont 2 file decoding script (in Python)

• Run from command line; takes SF2 pathname as input parameter.

• Can select one of multiple instruments.

• Produces a .cpp file with arrays of audio bit data (one each for attack, sustain,

release sections).

• Teensy Wavetable Synthesis library (in C++)

• Load audio data onto Teensy (from .cpp file).

• Create interpolated audio data.

• Functionality for looping, vibrato, and tremolo.

Both of these deliverables will be deployed as open-source code.

PROCESS AND SCHEDULE(Iterative Waterfall)

ITERATION 1

PROCESS AND SCHEDULE(Iterative Waterfall)

ITERATION 2

PROCESS AND SCHEDULE(Iterative Waterfall)

ITERATION 3

ITERATION 4

● Translate prototyped looping to C++

● Implement tremolo and vibrato.

● Overall code optimization

○ Decrease latency so there is no perceivable delay in response to user

input.

TEAM ROLES

Person RoleRyan Mellmer Team LeadNicholas Craig Requirements ManagerAida Keifer Planning/Scheduling ManagerConnor Delaplane Infrastructure ManagerJoshua Bucklin Design/Architecture ManagerYu Tang Developer Documentation ManagerJonathan Jensen Verification and Validation Manager

Note: All team members also acting as developers

PROBLEMS AND CONTINGENCIES

Event Mitigation Likelihood

Teammember unavailable/behind Reassign work leading to project changes in the extreme High

Sponsor unavailable Pull on external resources Med

Subject material too difficult Redefine schedule and seek help from sponsor Low

Backups fail Reassemble from local git repository Low

Design proves unfeasible Revise requirements and design Low

WHAT WE LEARNED

● Wavetable Synthesis

○ Gained familiarity with ideas behind implementation

● Soundfont

○ Bank of audio samples and parameters for manipulation

● Resource Interchange File Format (RIFF)

○ How it applies to Soundfont file structure

● Development on Arduino Platform

● Interpolation

○ Within context of modifying sound bytes

● Iteration scheduling

Questions?