Csound Csound-dev Csound-tekno Search About

Another TB-303 clone

Date1997-10-23 15:28
FromJosep M* Comajuncosas
SubjectAnother TB-303 clone
Hi Csounders...
I´m posting this to try to get some help... I´m making a sort of TB-303
emulator but is doesn´t sound that great by now. I cannot improve it
without reliable docs, and relying only in sound samples and some good
commercial emulators like Rebirth.
Like that one from Hans Mikelson, I´ve not implemented the accent
feature and the slide-legato mode... but it would´t be too difficult...
So you can test my instrument and make suggestions to improve the code.
I don´t matter if this envelope goes here or there, the point is to
emulate the sound...not the "model".
Please email me for any good idea... Tnx

Josep Mª Comajuncosas
gelida@lix.intercom.es

;ORC
sr = 44100
kr = 44100
ksmps = 1

instr 1 ; TB-303 emulator

; init variables
ibpm = p12; beats per minute (not bars)
ieventdur = 60/ibpm
inotedur = .8*ieventdur
icount init 0
imaxfreq = 2000
ipitch table 0,3
ipitch = cpspch(6+.01*ipitch)
afeed init 0

; twisting the knobs ...

;kcutoff randi .5, .9 , .32
;kcutoff = .5+kcutoff
;kres randi .5, .8, .62
;kres = .5+kres
;kenvmod randi .45, 1, .49
;kenvmod = .55 + kenvmod
;kdecay randi .5, .5, .33
;kdecay = .5+kdecay

; from the score

kcutoff line p4, p3, p5
kres line p6, p3, p7
kenvmod line p8, p3, p9
kdecay line p10, p3, p11

start:
ippitch = ipitch
ipitch table ftlen(3)*frac(icount/ftlen(3)),3
ipitch = cpspch(6 + .01*ipitch)
icount = icount + 1
iremaining = icount*ieventdur/p3
print ipitch, iremaining

; two envelopes & pitch with portamento

kmeg expseg .00001, .004, 1, .2 + 1.8*i(kdecay)- .016, .00001+i(kdecay),
.016, .00001
kveg linseg 0,.004, 1 ,inotedur - .02, 1, .016,0
kpitch linseg ippitch, .06, ipitch

; reinit code

timout 0, ieventdur , contin
reinit start

contin:

; amplitude envelope & generate bandlimited ~sawtooth wave

kamp = kveg*(1.1-kenvmod) + kmeg* (kenvmod)
knharm = int (imaxfreq/kpitch)
abuzz buzz 1000*kamp, kpitch, knharm, 1 ,0
abuzz2 gbuzz 700*kamp, kpitch, int(7000/kpitch)-knharm, knharm, .7 , 1,
0
abuzz = abuzz + abuzz2
asaw integ abuzz,0

; filter envelope & "4 pole" resonant lowpass filter

ksweep = kveg * imaxfreq + kmeg * kenvmod * 5000
kcutoff = 20 + kcutoff * ksweep

afilt = asaw - afeed; feedback for resonance

atone1 tone  afilt , kcutoff , 0
atone2 tone atone1 , kcutoff , 0
atone3 tone atone2 , kcutoff , 0
atone4 tone atone3 , kcutoff , 0

afeed = 4 * kres * atone4

; output (mono, of course!)
aout atone atone4,10 ; some DC removal
out aout

endin

;SCO
f1 0 16384 10 1
f2  0 1025  19  .5  .5  270  .5
f3  0  16  -2  0 12 0 0 3 0 0 0 0 15 12 0 6 15 1 4; sequencer (pitches
are 6.00 + p/100)

;------------ KNOB POSITION : INITIAL AND FINAL VALUES FROM 0 TO
1------------
;   cutoff freq resonance envelope mod. decay
;     0   -   1  0 ~ 1  ~ .1 - 1  0 - 1
;       start    end  st  end   st  end  st  end

i1  0 6      0        .3      .4  .4   .4   .4       .95 .95 240
i1  7 6   .95     .95     0   1         .95  .95       1    0    180
i1 14 6  0     1  0   1    .1   1         .05  .05 60
i1 21 6   .5     .5      .95 .95       .1   1         0    0  168

;------------------------------END OF
SCORE-----------------------------------
e








Received: from stork.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa03175;
          23 Oct 97 23:42 BST
Received: from pat.bath.ac.uk by stork.maths.Bath.AC.UK id aa18260;
          23 Oct 97 23:42 BST
Received: (qmail 19781 invoked from network); 23 Oct 1997 22:42:42 -0000
Received: from hermes.ex.ac.uk (144.173.6.14)
  by pat.bath.ac.uk with SMTP; 23 Oct 1997 22:42:42 -0000
Received: from noether [144.173.8.10] by hermes via SMTP (XAA23773); Thu, 23 Oct 1997 23:25:08 +0100
Received: from hermes.ex.ac.uk by maths.exeter.ac.uk; Thu, 23 Oct 97 23:24:50 +0100
Received: from ella.mills.edu [144.91.3.20] by hermes via SMTP (XAA19222); Thu, 23 Oct 1997 23:24:43 +0100
Received: (qmail 26804 invoked by uid 3049); 23 Oct 1997 15:26:15 -0700
Message-Id: <19971023222615.26802.qmail@ella.mills.edu>
From: David Madole 
Subject: Revised 3.47 PPC perf Beta at Mills ftp
To: csound-list , ccm@ella.mills.edu
Date: Thu, 23 Oct 1997 15:26:15 -0700 (PDT)
Reply-To: madole@mills.edu
X-Mailer: ELM [version 2.4 PL24]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk


Hi PowerMac Csounders,

I have put a revised 3.47 perf beta on the Mills ftp site (for
PowerMac).  It includes most of the new 3.47 opcodes (see jpff's and
rcb's recently posted release notes), apparently vastly improves the
phase vocoder, etc.  The only new opcodes that haven't been
incorporated are the MIDI out opcodes.  I'd like to thank rcb's crew at
Berklee for slogging (and crashing) through the original beta for the
last couple of weeks and for their bug reports.  I especially like (the
looks of) the new generalized filter opcodes, by the way.

This is a *BETA* though, and I assume I still haven't heard the last of
the code changes from jpff, so treat it as such, but tests & feedback
especially about the new stuff would be appreciated.  There will surely
be another release soon.

You still must remove old "perf"s from your system to run this one.  If
you are ResEdit (or Resorcerer) savvy, you can change the old perf's
owner to something other than "pErF" (in file info) and then the Front
End will find this beta instead.

This beta is configured to run in a 4 Meg partition.  Use Get Info to
make it smaller if you want to.

The file is:

perf3.47(beta).hqx 

at mills.edu in pub/ccm/csound.ppc

The banner in the text window should read version 0.3.4b2.

Dave

REMINDER: For those of you using the current Mills release, make sure
you have the fixed perf (perf.ppc.fix.hqx).  Otherwise your perf will
go away if you have "+"s in your score.

Dave Madole
Technical Director, Center for Contemporary Music
Listserv Administrator

Mills College
Oakland, CA 94613
510-430-2336

madole@mills.edu



Received: from stork.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa03442;
          24 Oct 97 2:16 BST
Received: from pat.bath.ac.uk by stork.maths.Bath.AC.UK id aa20986;
          24 Oct 97 2:16 BST
Received: (qmail 27892 invoked from network); 24 Oct 1997 01:16:47 -0000
Received: from eos.arc.nasa.gov (128.102.118.20)
  by pat.bath.ac.uk with SMTP; 24 Oct 1997 01:16:47 -0000
Received: (from jims@localhost)
          by eos.arc.nasa.gov (8.8.4/8.8.4)
	  id SAA08268; Thu, 23 Oct 1997 18:15:27 -0700
Date: Thu, 23 Oct 1997 18:15:27 -0700
From: "Jim Stevenson Ph.D" 
Message-Id: <199710240115.SAA08268@eos.arc.nasa.gov>
To: lwyse@iss.nus.sg, rwd@pact.srf.ac.uk
Subject: Re:  physical modelling in csound
Cc: csound@noether.ex.AC.UK, jpff@maths.bath.ac.uk

I am looking for examples of p m, implemented in csound.

Thanks.


Received: from stork.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa03479;
          24 Oct 97 2:32 BST
Received: from pat.bath.ac.uk by stork.maths.Bath.AC.UK id aa21227;
          24 Oct 97 2:32 BST
Received: (qmail 28371 invoked from network); 24 Oct 1997 01:32:02 -0000
Received: from hermes.ex.ac.uk (144.173.6.14)
  by pat.bath.ac.uk with SMTP; 24 Oct 1997 01:32:02 -0000
Received: from noether [144.173.8.10] by hermes via SMTP (CAA09150); Fri, 24 Oct 1997 02:13:46 +0100
Received: from hermes.ex.ac.uk by maths.exeter.ac.uk; Fri, 24 Oct 97 02:13:28 +0100
Received: from eos.arc.nasa.gov [128.102.118.20] by hermes via ESMTP (CAA03753); Fri, 24 Oct 1997 02:13:21 +0100
Received: (from jims@localhost)
          by eos.arc.nasa.gov (8.8.4/8.8.4)
	  id SAA08268; Thu, 23 Oct 1997 18:15:27 -0700
Date: Thu, 23 Oct 1997 18:15:27 -0700
From: "Jim Stevenson Ph.D" 
Message-Id: <199710240115.SAA08268@eos.arc.nasa.gov>
To: lwyse@iss.nus.sg, rwd@pact.srf.ac.uk
Subject: Re:  physical modelling in csound
Cc: csound@maths.ex.ac.uk, jpff@maths.bath.ac.uk
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk

I am looking for examples of p m, implemented in csound.

Thanks.