Path: utzoo!attcan!uunet!lll-winken!lll-tis!ames!husc6!linus!mbunix!eachus From: eachus@mitre-bedford.ARPA (Robert Eachus) Newsgroups: comp.sys.amiga.tech Subject: Re: 2 More Questions Summary: Yes, it is doable Keywords: fft, regression, time-series analysis Message-ID: <39616@linus.UUCP> Date: 8 Sep 88 18:28:59 GMT References: <8809071942.AA05026@cory.Berkeley.EDU> Sender: news@linus.UUCP Reply-To: eachus@mitre-bedford.arpa (Robert I. Eachus) Organization: The MITRE Corporation, Bedford, Mass. Lines: 33 In article <8809071942.AA05026@cory.Berkeley.EDU> dillon@CORY.BERKELEY.EDU (Matt Dillon) writes: >>> QUESTION#2) Is it possible with software and hardware capabilities >>> to digitize a song and have the computer convert the >>> wavelengths into notes/sheetmusic and then print it >>> out? > > This is strictly a (read: major math) processing thing and is not >dependant on the particular graphics or sound capabilities for any computer. > Maybe on a mainframe, if it's possible at all! > -Matt This would certainly be doable on an Amiga (not in real-time of course), and it would be a lot of fun (and a lot of work). First digitize the signal, then do a sequential FFT with a sliding window 128 samples long. Use this to decide when new notes begin. (Look every 16 samples or so to see if succesive power spectra are proportional (same note increasing or decreasing) or not. Now transform each sample interval determined above using a larger number of samples. Determine the lowest fundamental frequency, and any notes within an octave above it. Use templates (transforms of samples of a single instrument playing a single note) to do a linear regression best fit to match notes being played to the instruments playing them. Analyze the residues for notes in the next highest octave and refit if necessary. Do any ADSR (attack, delay, sustain, release) analysis necessary to determine when each particular note ends, and you have all the information necessary to print the music (and to reconstruct it and subtract the power spectra) to make sure you got it right. Robert I. Eachus