Do you want to create a MIDI file, or do you want to send MIDI messages directly to a MIDI device?
Can you give a small example or tell us more about the simple spreadsheet file consisting of time, frequency and amplitude information? For example, I'm unclear about the following:
• Do you want one long note that is pitch bent (and volume changed) each time there is a new frequency (and volume)?
OR
• If you want multiple notes, how does the spreadsheet data indicate where a note ends?
Possible idea - MIDICSV
I am on a Windows computer, but here is a possible idea. When I have a spreadsheet of data I want to convert into a MIDI file, I use spreadsheet formulas and manipulation to get the data into the
MIDICSV file format.
Rough overview:
Using MIDI sequencer software, I create a starter MIDI file with the desired tracks, instruments, tempo, and time signature, and some dummy notes. Then I use the MIDICSV tool to convert that MIDI file to a CSV file.
In my spreadsheet of data, I use spreadsheet formulas to build up note data in the MIDICSV file format. Then I copy the MIDICSV-format text generated by the formulas.
I open the CSV file in a text editor, select the dummy note data and remove it, then paste in the formula-generated text. Then I save the modified CSV file.
I use the CSVMIDI tool to convert the modified CSV file back to a MIDI file.
Advanced Note: I use the text editor Notepad++ because it can do advanced Find and Replace functions like converting a specific character I choose to an Enter. To generate a note end (for the previous row's pitch), pitch bend, volume controller, and note beginning (for the current row's pitch) all at the same time position, I would generate multiple columns in the spreadsheet that each end with a special character. After I paste the text into Notepad++, I'd use Find and Replace to convert the special character to an Enter.
Disadvantages:
On a Mac, it looks like the MIDICSV tools would need to be compiled from the source code.
This kind of process doesn't exactly involve programming, but it does need a programmer-like mindset to design appropriate spreadsheet formulas (and, possibly, advanced Find and Replace commands in a text editor).
If you plan to do this conversion process many times, you might want to keep looking for a more automated conversion method -- or maybe even learn how to create a program or script to make the conversion exactly the way you want.