<div dir="ltr">In my current thread on the subject of "Next tutoring project" I believe I've nailed down my idea.  The project will be a node based sound and effect generation program where students can create functions that either create tones or effects.<div><br></div><div>I also want to add the ability to apply effects to sound files, in to generated tones, and from my previous experience with sound files I wanted to ask for some help from you the community to add this specific feature into the new music project for teaching kids how to program.</div><div><br></div><div>What I need is the following:</div><div><br></div><div>A function to take an mp3 stream and given a time and a duration to convert the mp3 data into left and right audio samples of a specific samples per second and sample type.<br></div><div><br></div><div>So for example, if I load an entire mp3 into a memory stream it might be called:</div><div><br></div><div>var</div><div>  MusicFile: TMemoryStream;</div><div><br></div><div>..</div><div>  MusicFile := TMemoryStream.Create;</div><div>  MusicFile.LoadFromStream('my_music.mp3');</div><div>  WriteLn('The music file is ', Mp3StreamDuration(MusicFile), ' long in seconds');</div><div><br></div><div>I would need these functions:</div><div><br></div><div>{ Return the duration of the music or sounds in an Mp3 stream in seconds }</div><div>function Mp3StreamDuration(Stream: TStream): Single;</div><div><br></div><div>{ Mp3StreamSamples outputs left and right audio samples from an mp3 stream given a Start, </div><div>  Duration, SamplesPerSecond, and buffer information. Buffer count will be = Duration *</div><div>  SamplesPerSecond rounded up to the nearest whole value }</div><div><br></div><div>type</div><div>  TSoundSample = record</div><div>    Left: SmallInt;</div><div>    Right: SmallInt;</div><div>  end;</div><div>  PSoundSample = ^TSoundSample;<br></div><div><br></div><div>procedure Mp3StreamSamples(Stream: TStream; Start, Duration: Single; SamplesPerSecond: Integer; Buffer: PSoundSample; BufferCount: Integer);<br></div><div><br></div><div>If these functions could be repeated for the wav file format or other formats (ogg and such) that would be much appreciate.</div><div><br></div><div>By the way, the mp3 format is now free of any licensing restrictions.</div><div><br></div><div>If anyone has any questions or would like to help let me know. I can provide you with a test application to output the sound into the platform independent audio system if you need it for testing.</div><div><br></div><div>Thanks again everyone.</div><div><br></div></div>