For an experiment, I need to write a sequence of notes where each note has a very special duration such as 1.728 seconds =~ 34.72222 bpm.

I want to be as precise as possible, and I also want to know how much this is satisfied. i.e. I would like to know if the software played at 34.72222 or only 34.72 bpm.

The sounds will be sine waves, getting faster or slower, so, each note will have its special duration.

It doesn't matter if I specify these values in terms of seconds, miliseconds or bpm. But I highly prefer miliseconds.

At the end, I would like to have a .wav file.

Can you please suggest me some software (possibly for mac os) that can create such files? It is okay for me if the software gives me a midi file, but i don't know whether converting a midi to a .wav file has an effect on note durations.

1 Answer 1


Both MIDI and .wav audio have its limitations in absolute time.

For .wav files, this is usually quite small. If the sample rate is 44,100 kHz, you have enough time resolution to control your note length to 1/44100th of a second or 1/44.1ms. If you need even more resolution, you can increase the sample rate to 48kHz, 96kHz, or even 192kHz if your audio interface supports it.

Think of digital audio in 'steps' where each step has duration equal to 1/sample rate. That's the ultimate limiting factor in the duration of a sound (among other things not related to this question).

MIDI has a resolution that depends on its implementation and is any case, it will be in the thousands of times smaller than digital audio. I wouldn't choose it for time critical applications if I can avoid it.

Although I haven't used this in more than a decade, most DAWs and wave editors should have a test signal function where you set your signal waveform (sine wave in your case), and duration. I remember SoundForge having it but that was ages ago.

Even if your DAW doesn't have one, you can use any synth that produces a sine wave, record it and cut the audio to the duration(s) you want it.

If this is a long sequence and what I suggest above i tedious, you can probably do it programmatically. Python would be a good start but it might also be an easy task for Mathematica or the free equivalent - Scilab.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.