Sophie

Sophie

distrib > Mageia > 5 > x86_64 > media > core-release > by-pkgid > b707d9a4ee443103660a75ccb6e51334 > files > 2464

csound-doc-5.19.01-10.mga5.noarch.rpm

#!/usr/bin/python

# Copyright (c) 2003 by Michael Gogins
# Shows how to render an ordinary MIDI sequence
# using a SoundFont

import CsoundAC

# Load the MIDI sequence into the score.
model = CsoundAC.MusicModel()
model.setCppSound(csound)
score = model.getScore()
score.load("c:/WINDOWS/Media/town.mid")
print("Score length = ", len(score))
csound.setOrchestra('''
sr = 44100
ksmps = 100
nchnls = 2
0dbfs = 1

gSfont                  =                       "../../samples/sf_GMbank.sf2"

giFluid                 fluidEngine
giSFont                 fluidLoad               gSfont, giFluid, 1

ichn                    =                       1
lp01:
ibank                   =                       (ichn != 10 ? 0 : 128)
ipreset                 =                       (ichn != 10 ? (ichn - 1) * 8 : 0)
                        fluidProgramSelect      giFluid, ichn - 1, giSFont, ibank, ipreset
                        loop_le                 ichn, 1, 16, lp01

                        event_i                 "i", 90, 0, -1

instr 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 ; FluidSynth General MIDI
; INITIALIZATION
; Channel, bank, and program determine the preset, that is, the actual sound.
ichannel                =                       p1
ikey                    =                       p4
ivelocity               =                       p5
ijunk11                 =                       p11
; AUDIO
                        print                   ichannel, ikey, ivelocity
                        fluidNote               giFluid, ichannel - 1, ikey, ivelocity
endin

instr 90
aL, aR                  fluidOut                giFluid
                        outs                    aL, aR
endin

''')

csound.setScore(score.getCsoundScore())
csound.setCommand("csound -RWdfo town.wav ./temp.orc ./temp.sco")
csound.exportForPerformance()
model.perform()