The Unofficial Access Virus & Virus TI Forum - since 2002

The Unofficial Access Virus & Virus TI Forum - since 2002 (http://www.infekted.org/virus/forum.php)
-   General discussion about Access Virus (http://www.infekted.org/virus/forumdisplay.php?f=105)
-   -   Who designed the Access Virus?? (http://www.infekted.org/virus/showthread.php?t=24118)

anykeystudio 17.06.2004 01:34 PM

Well if you don?t got the basic in DSP programming start here.

http://www.amazon.com/exec/obidos/tg...glance&s=books

I think I have the same book in my bookshelf somewhere ? But I haven?t read it yet, but some day I will.
I think it?s cooler and harder to make a real physical synth. The difficulty in making an analog synth would be the design. When you do an DSP synt you can do what you whan, just make some new algorithms(sort of :wink: ).
But with a analog you have to make it discreet so it sound faaaat like the mini. Every component you add has to be powered or else all other components will perform less well.

If I live when I get retired I will make one.

Tomer=Trance 17.06.2004 06:42 PM

you also got to know about alot in electronic enginiering and even pysics.
"today's headline: a man in his mid 30s was fried today after trying to build his own true analog home made synthisizer"
that can be funny :lol:

dries 18.06.2004 07:04 AM

programming a dsp is about the most difficult of progamming anyway - that's not just writing a bit of c++. what they did at access was emulating original hardware sturkture by software modules. tough work in the beginning, but it helps later on creating a kind of sound and new features and functions. you have to know a lot of electronics and dsp and must be a absolut programming genious to create the corresponding lines of asm for the dsp. this kind of stuff: exerpt from:

Digital Plate-Class Reverberation Audio Effect - Griesinger's Model *
* Described by Jon Dattorro in "Effect Design Part 1: Reverberator and *
* Other Filters, " Journal of the Audio Engineering Society," Vol. 45, *
* No. 9, pp. 660-684


change_reverb_settings:
bit set mode1 SRRFH; /* enable background register file */
NOP; /* 1 CYCLE LATENCY FOR WRITING TO MODE1 REGISER!! */

/* if flag2_in jump change_parameter; */

r13 = 6; /* number of presets */
r15 = DM(IRQ1_counter); /* get preset count */
r15 = r15 + 1; /* increment preset */
comp (r15, r13);
if ge r15 = r15 - r15; /* reset to zero */
DM(IRQ1_counter) = r15; /* save preset count */

r10 = pass r15; /* get preset mode */
if eq jump reverb_settings_2; /* check for count == 0 */
r10 = r10 - 1;
if eq jump reverb_settings_3; /* check for count == 1 */
r10 = r10 - 1;
if eq jump reverb_settings_4; /* check for count == 3 */
r10 = r10 - 1;
if eq jump reverb_settings_5; /* check for count == 4 */
r10 = r10 - 1;
if eq jump reverb_settings_6; /* check for count == 5 */

reverb_settings_1: /* count therefore, is == 6 if you are here */
r14 = 0x40000000; DM(decay) = r14;
r14 = 0x7f5c28f6; DM(bandwidth) = r14;
r14 = 0x0010624d; DM(damping) = r14;
r14 = 0x5999999a; DM(decay_diffusion_1) = r14; /* = 0.50, Decorrelates tank signals */
r14 = 0x40000000; DM(decay_diffusion_2) = r14; /* decay diffusion 2 = decay +0.15, floor = 0.25, ceiling - 0.50 */
r14 = 0x60000000; DM(input_diffusion_1) = r14; /* = 0.75, Decorrelates incoming signal */
r14 = 0x50000000; DM(input_diffusion_2) = r14; /* = 0.625, Decorrelates incoming signal */
bit set ustat1 0x3E; /* turn on Flag4 LED */
bit clr ustat1 0x01;
dm(IOSTAT)=ustat1;
jump done;

reverb_settings_2:
r14 = 0x007fffff; DM(decay) = r14;
r14 = 0x60124321; DM(bandwidth) = r14;
r14 = 0x000007ff; DM(damping) = r14;
r14 = 0x00100000; DM(decay_diffusion_1) = r14;
r14 = 0x00100000; DM(decay_diffusion_2) = r14;
r14 = 0x50000000; DM(input_diffusion_1) = r14;
r14 = 0x60000000; DM(input_diffusion_2) = r14;
bit set ustat1 0x3D; /* turn on Flag5 LED */
bit clr ustat1 0x02;
dm(IOSTAT)=ustat1;
jump done;

reverb_settings_3:
r14 = 0x10000000; DM(decay) = r14;
r14 = 0x6f5c28f6; DM(bandwidth) = r14;
r14 = 0x000fffff; DM(damping) = r14;
r14 = 0x01000000; DM(decay_diffusion_1) = r14;
r14 = 0x02000000; DM(decay_diffusion_2) = r14;
r14 = 0x60000000; DM(input_diffusion_1) = r14;
r14 = 0x50000000; DM(input_diffusion_2) = r14;
bit set ustat1 0x3B; /* turn on Flag6 LED */
bit clr ustat1 0x04;
dm(IOSTAT)=ustat1;
jump done;

reverb_settings_4:
r14 = 0x40000000; DM(decay) = r14;
r14 = 0x7f5c28f6; DM(bandwidth) = r14;
r14 = 0x0050624d; DM(damping) = r14;
r14 = 0x70000000; DM(decay_diffusion_1) = r14;
r14 = 0x40000000; DM(decay_diffusion_2) = r14;
r14 = 0x60000000; DM(input_diffusion_1) = r14;
r14 = 0x50000000; DM(input_diffusion_2) = r14;
bit set ustat1 0x37; /* turn on Flag7 LED */
bit clr ustat1 0x08;
dm(IOSTAT)=ustat1;
jump done;

reverb_settings_5:
r14 = 0x57000000; DM(decay) = r14;
r14 = 0x3f5c28f6; DM(bandwidth) = r14;
r14 = 0x0001004d; DM(damping) = r14;
r14 = 0x72222222; DM(decay_diffusion_1) = r14;
r14 = 0x60000000; DM(decay_diffusion_2) = r14;
r14 = 0x60000000; DM(input_diffusion_1) = r14;
r14 = 0x50000000; DM(input_diffusion_2) = r14;
bit set ustat1 0x2F; /* turn on Flag8 LED */
bit clr ustat1 0x10;
dm(IOSTAT)=ustat1;
jump done;

reverb_settings_6:
r14 = 0x50000000; DM(decay) = r14;
r14 = 0x5f5c28f6; DM(bandwidth) = r14;
r14 = 0x0000004d; DM(damping) = r14;
r14 = 0x72222222; DM(decay_diffusion_1) = r14;
r14 = 0x60000000; DM(decay_diffusion_2) = r14;
r14 = 0x60000000; DM(input_diffusion_1) = r14;
r14 = 0x50000000; DM(input_diffusion_2) = r14;
bit set ustat1 0x1F; /* turn on Flag9 LED */
bit clr ustat1 0x20;
dm(IOSTAT)=ustat1;

done:
rti(db);
bit clr mode1 SRRFH; /* switch back to primary register set */
nop; /* 1 cycle latency for switching to occur */


/* ------------------------------------------------------------------------------------ */
/* */
/* IRQ2 Pushbutton Interrupt Service Routine */
/* */
/* This routine allows the user to modify reverb presets on-the-fly to allow for */
/* control of the predelay and left right panning of the reverb response */
/* */
/* Also note, early reflections and later reverberations are panned differently */
/* between left and right channels for all reverb presets. For example, early */
/* reflections may come from the left speaker, while the later reverberations */
/* come from the right speaker. */
/* */
/* yL(n)=0.33*(Gain)*x(n) +0.33*(Gain)*x(rev_result) + 0.33*(Gain)*x(predelay) */
/* yR(n)=0.33*(Gain)*x(n) +0.33*(Gain)*x(rev_result) + 0.33*(Gain)*x(predelay) */
/* ------------------------------------------------------------------------------------ */

modify_reverb_mix:
bit set mode1 SRRFH; /* enable background register file */
NOP; /* 1 CYCLE LATENCY FOR WRITING TO MODE1 REGISER!! */

r13 = 6; /* number of presets */
r15 = DM(IRQ2_counter); /* get preset count */
r15 = r15 + 1; /* increment preset */
comp (r15, r13);
if ge r15 = r15 - r15; /* reset to zero */
DM(IRQ2_counter) = r15; /* save preset count */

r10 = pass r15; /* get preset mode */
if eq jump reverb_mix_2; /* check for count == 0 */
r10 = r10 - 1;
if eq jump reverb_mix_3; /* check for count == 1 */
r10 = r10 - 1;
if eq jump reverb_mix_4; /* check for count == 3 */
r10 = r10 - 1;
if eq jump reverb_mix_5; /* check for count == 4 */
r10 = r10 - 1;
if eq jump reverb_mix_6; /* check for count == 5 */

reverb_mix_1: /* count therefore, is == 6 if you are here */
r14 = 0x7FFFFFFF; DM(DRY_GAIN_LEFT) = r14;
r14 = 0x1FFFFFFF; DM(DRY_GAIN_RIGHT) = r14;
r14 = 0x00000000; DM(PREDEL_GAIN_LEFT) = r14;
r14 = 0x0FFFFFFF; DM(PREDEL_GAIN_RIGHT) = r14;
r14 = 0x57FFFFFF; DM(WET_GAIN_LEFT) = r14;
r14 = 0x7FFFFFFF; DM(WET_GAIN_RIGHT) = r14;
r14 = 200; DM(predelay_time) = r14;
bit clr ustat1 0x3E; /* turn on Flag4 LED */
bit set ustat1 0x01;
dm(IOSTAT)=ustat1;
jump exit;

reverb_mix_2:
r14 = 0x00000000; DM(DRY_GAIN_LEFT) = r14;
r14 = 0x7FFFFFFF; DM(DRY_GAIN_RIGHT) = r14;
r14 = 0x00000000; DM(PREDEL_GAIN_LEFT) = r14;
r14 = 0x00000000; DM(PREDEL_GAIN_RIGHT) = r14;
r14 = 0x7FFFFFFF; DM(WET_GAIN_LEFT) = r14;
r14 = 0x00000000; DM(WET_GAIN_RIGHT) = r14;
r14 = 1000; DM(predelay_time) = r14;
bit clr ustat1 0x3D; /* turn on Flag5 LED */
bit set ustat1 0x02;
dm(IOSTAT)=ustat1;
jump exit;

reverb_mix_3:
r14 = 0x00000000; DM(DRY_GAIN_LEFT) = r14;
r14 = 0x7FFFFFFF; DM(DRY_GAIN_RIGHT) = r14;
r14 = 0x00000000; DM(PREDEL_GAIN_LEFT) = r14;
r14 = 0x00000000; DM(PREDEL_GAIN_RIGHT) = r14;
r14 = 0x7FFFFFFF; DM(WET_GAIN_LEFT) = r14;
r14 = 0x2FFFFFFF; DM(WET_GAIN_RIGHT) = r14;
r14 = 2500; DM(predelay_time) = r14;
bit clr ustat1 0x3B; /* turn on Flag6 LED */
bit set ustat1 0x04;
dm(IOSTAT)=ustat1;
jump exit;

reverb_mix_4:
r14 = 0x7FFFFFFF; DM(DRY_GAIN_LEFT) = r14;
r14 = 0x7FFFFFFF; DM(DRY_GAIN_RIGHT) = r14;
r14 = 0x00000000; DM(PREDEL_GAIN_LEFT) = r14;
r14 = 0x7FFFFFFF; DM(PREDEL_GAIN_RIGHT) = r14;
r14 = 0x7FFFFFFF; DM(WET_GAIN_LEFT) = r14;
r14 = 0x00000000; DM(WET_GAIN_RIGHT) = r14;
r14 = 4000; DM(predelay_time) = r14;
bit clr ustat1 0x37; /* turn on Flag7 LED */
bit set ustat1 0x08;
dm(IOSTAT)=ustat1;
jump exit;

reverb_mix_5:
r14 = 0x00000000; DM(DRY_GAIN_LEFT) = r14;
r14 = 0x00000000; DM(DRY_GAIN_RIGHT) = r14;
r14 = 0x00000000; DM(PREDEL_GAIN_LEFT) = r14;
r14 = 0x00000000; DM(PREDEL_GAIN_RIGHT) = r14;
r14 = 0x7FFFFFFF; DM(WET_GAIN_LEFT) = r14;
r14 = 0x7FFFFFFF; DM(WET_GAIN_RIGHT) = r14;
r14 = 1200; DM(predelay_time) = r14;
bit clr ustat1 0x2F; /* turn on Flag8 LED */
bit set ustat1 0x10;
dm(IOSTAT)=ustat1;
jump exit;

reverb_mix_6:
r14 = 0x7FFFFFFF; DM(DRY_GAIN_LEFT) = r14;
r14 = 0x3FFFFFFF; DM(DRY_GAIN_RIGHT) = r14;
r14 = 0x00000000; DM(PREDEL_GAIN_LEFT) = r14;
r14 = 0x7FFFFFFF; DM(PREDEL_GAIN_RIGHT) = r14;
r14 = 0x7FFFFFFF; DM(WET_GAIN_LEFT) = r14;
r14 = 0x7FFFFFFF; DM(WET_GAIN_RIGHT) = r14;
r14 = 1200; DM(predelay_time) = r14;
bit clr ustat1 0x1F; /* turn on Flag9 LED */
bit set ustat1 0x20;
dm(IOSTAT)=ustat1;

exit:
rti(db);
bit clr mode1 SRRFH; /* switch back to primary register set */
nop; /* 1 cycle latency for switching to occur */

still want to program a dsp?

good luck.

Juho L 18.06.2004 07:28 AM

Quote:

programming a dsp is about the most difficult of progamming anyway
You probably mean ASM? Well, ASM is quite cryptic if you're used to programming languages. ASM is not harder, it's just more time consuming way of programming (and debugging is insane in big projects). The good thing in ASM is that the machine does exactly what you want it to do.

saba 18.06.2004 08:14 AM

NOP.
________
Lovely Wendie

dries 18.06.2004 08:36 AM

Quote:

Originally Posted by Juho L
Quote:

programming a dsp is about the most difficult of progamming anyway
You probably mean ASM? Well, ASM is quite cryptic if you're used to programming languages. ASM is not harder, it's just more time consuming way of programming (and debugging is insane in big projects). The good thing in ASM is that the machine does exactly what you want it to do.

wow, thanks a lot for the info, you realy cleared me up here.

*gg*

;-)


All times are GMT. The time now is 01:59 AM.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2002-2022, Infekted.org