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 1. 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 */
instr 1: iroot = 440.000 instr 1: ifactor = 1.189 instr 1: inew = 523.229