-
Notifications
You must be signed in to change notification settings - Fork 3
how can I use clm play like a sampler?
Michael Edwards edited this page Jun 1, 2024
·
1 revision
By default, clm-play cycles through the sound files of its given group and transposes according to the pitch-synchronous or non-pitch-synchronous methods. But assuming you have pitched samples and can determine their fundamentals, clm-play can be made to act like a traditional sampler. Below is an example of how to do this:
;;; auto-create a sndfile-palette by reading a kontakt instrument file with
;;; the NKI tool from http://www.linuxsampler.org/nkitool
(let ((tp (kontakt-to-sfp
"/Users/michael/dl/TrumpetMute.nki"
"/Users/michael/dl/snd/TrumpetMuteSamples"
:group 'tp :converter "/Users/michael/bin/nki")))
(flet ((tp-name (name) ; extract the note info from the file name
(when name
;; file name is e.g. TpMt_sus_g#4_6.aif so skip the first 9
;; characters
(let* ((note (subseq name 9)))
;; change # to s character
(setq note (substitute #\s #\# note)
;; now skip the gunk after note info
note (subseq note 0 (if (char= #\s (elt note 1))
3 2)))
;; samples' notes use middle C = C3 so have to transpose up an 8ve
(+ (note-to-midi (read-from-string note))
12)))))
;; get the note info and set the frequency slot of each sndfile object in
;; the palette. NB the name-fun must return MIDI note numbers rather than
;; frequencies.
(set-frequency-from-filename tp :name-fun #'tp-name)
;; replace any existing sndfile-palette in my slippery-chicken object and
;; also give it a new place to write sound files
(setf (sndfile-palette +hyperboles+) tp
(snd-output-dir +hyperboles+) "/projects/dark-light/clm/")
;; generate the piece with my trumpet samples
(clm-play +hyperboles+ 1 '(solo computer-a computer-b computer-c)
'tp :channels 4 :srate 44100
:amp-env '(0 1 70 1 100 0) :src-scaler 1.0 :pitch-synchronous t
;; this is the all-important argument to override the cycling of
;; sndfile in the group and use selection by closest pitch instead
:snd-selector #'(lambda (sflist pitch event)
(declare (ignore event))
(get-nearest-by-freq
(frequency pitch) (data sflist)))
:inc-start nil :src-width 100)))
- which instruments are available in the standard instrument-palette?
- how can I change the default directory for output?
- how can I change the range of instruments in the standard instrument-palette?
- how can I stop (or start) slippery chicken from opening score files automatically?
- how do I make a one-note rthm-seq with a chord?
- set-limits by section
- empty bars
- combining bars
- combining chopped and unchopped rthm-seq palettes
- how can I 'roll-my-own' slippery-chicken
- graphics files as marks
- three-quarter tone accidentals
- what to do when lilypond fails?
- tuplets with colons e.g 7:6