As a part of CS370 - Software Design at Whitman College, our team will be working on this semester-long project creating a personal sound archive in Python.
With the ubiquity of mobile technology and cloud storage, many of us have amassed huge digital photo archives documenting personal moments both meaningful and mundane. Yet these digital archives are oddly silent: You might have hundreds of photos of your dog, but to hear her bark you must conjure it from memory. How might developing a sonic archive, focused on personally relevant everyday sounds, reinvent our relationships with sound and encourage everyday sonic thinking?
A personal sound archive is highly complex with many possible features: managing the data and metadata associated with the sounds, organizing the sounds, providing ways for users to browse and listen to sounds, adding new sounds to the archive, remixing the sounds, sharing the sounds, and more. Your project will focus on a subset of these features. Project epochs
Our project will be divided into three main epochs that tackle specific features of developing a personal sound archive:
Contributions: Oliver: worked on getting the file manager and the interface to work so that we can parse the arguments and rename files and stuff like that. Grant: worked on original argparser that ended up turning in to our current command line interface, created unittests Gabe: worked on getting layering and playing to work as well as ended up not being able to get sequencing to work(had someone else take a look). Steven:
Use cases for epoch two:
New Features:
Program Usage:
Contributions: Oliver: I wrote the new interface, sql commands, and rewrote the audio handler to use pydub instead of simpleaudio. This allowed us to implement features like pausing / playing audio, creating and playing playlists, adding tags to specific files, and having a constant command line interface to use the program.
Grant:
Gabe: I got playing it backward to work, creating a sped-up version of a file, duplicating a file, recording new audio from an input, and trimming a file at certain specified points. I also added some helper functions such as check_inputs and check_length which are there to beable to check certain things
Steven: Changes to sql commands, error checking for sql commands and some other functions. Unified file system handling to make sure there's only one folder being used. Created a separate implementation of the audio player and CLI using pyaudio as pydubs doesn't want to work properly on Windows. The separate audio player has streaming, pause/play/stop implemented.