The value returned by the semitone function is a factor. You can multiply a frequency by this factor to raise/lower it by the given amount of semitones.
Here is an example of the semitone opcode. It uses the files semitone.orc and semitone.sco.
Example 344. Example of the semitone opcode.
/* semitone.orc */ ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Instrument #1. instr 1 ; The root note is A above middle-C (440 Hz) iroot = 440 ; Raise the root note by three semitones to C. isemitone = 3 ; Calculate the new note. ifactor = semitone(isemitone) inew = iroot * ifactor ; Print out all of the values. print iroot print ifactor print inew endin /* semitone.orc */
/* semitone.sco */ ; Play Instrument #1 for one second. i 1 0 1 e /* semitone.sco */
Its output should include lines like:
instr 1: iroot = 440.000 instr 1: ifactor = 1.189 instr 1: inew = 523.229