13
TeensyAudio Capstone Connor Delaplane Joshua Bucklin Jonathan Jensen Aida Keifer Ryan Mellmer Nicholas Craig Yu Tang

TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

TeensyAudio CapstoneConnor DelaplaneJoshua BucklinJonathan JensenAida KeiferRyan MellmerNicholas CraigYu Tang

Page 2: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

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.

Page 3: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

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.

Page 4: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

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.

Page 5: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

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.

Page 6: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command
Page 7: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

PROCESS AND SCHEDULE(Iterative Waterfall)

ITERATION 1

Page 8: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

PROCESS AND SCHEDULE(Iterative Waterfall)

ITERATION 2

Page 9: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

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.

Page 10: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

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

Page 11: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

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

Page 12: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

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

Page 13: TeensyAudio Capstone Yu Tangwiki.cs.pdx.edu/capstone/fall_2016/team_presentations/TeensyAudio... · DELIVERABLES • SoundFont 2 file decoding script (in Python) • Run from command

Questions?