Skip to content
Permalink
master
Go to file
 
 
Cannot retrieve contributors at this time
3723 lines (2334 sloc) 103 KB

Oh, eternity with outstretched wings, that broodest over the secret truths in whose roots lie the mysteries of man—his whence, his whither—have I searched thee, and struck a right key on thy dreadful organ!

[Thomas de Quincey. The Dark Interpreter]

plan

send by 15th->pcbcartDONEawait PCBsARRIVED, assembled, to be testedDONE

1 phase: hardware switchingsDONE + architecture outlineROUGH 2 phase: datagens/hardware tests BY BEGIN JAN! DONE

3 editions: lach,susp,tene

1-Mater Lachrymarum, Our Lady of Tears: just processing: no hardware/untying. 2-Mater Suspiriorum, Our Lady of Sighs: no untying. 3-Mater Tenebrarum,—Our Lady of Darkness: all.

3 phase: grains/audio buffers and processing (any mixing of signals?)

4 phase: knobs assigned and all tests/tweak/RELEASE

NOTE-==memory management/areas refresh==

3 blocks SRAM : 112KB + 16KB + 64KB (64 is ccmdata see delay code)

use 112KB+16 for general/sample buffer (int pointer to int will use 128k?)

//how access 2nd block - should be continuous addressing with first

ccmdata for datagens/backwards/forwards/BUFFER

knob->control samplerate, + writebuffer is just one edge moved by knob up to limit

  • marked all questions as **TODO

  • test lower board potis!DONE
  • simple co-eff filter additions in cpuDONE simulation.cDONE (8bit and 16bit)
  • add ifdefs, includes etc. for PC/arm code compilation compile optionsTEST-DONE
  • test new code/makefile that still actually runs! IT DOES!
  • cleanups/fix adc code/test ADC now?
  • replace RAND with ad620/floating-DONE which is ADC 9-AD620 is on ADC1_IN11-DONE
  • overlap and uint16 sizes for CPU.c or somehow 2 sets options - now working in CPUint.cDONE

TEXTS

intro

[dark organ quote]

The Dark Interpreter is a clear successor to the Blackdeath noise module, extending contagious granular audio processing with new plague processing units, leaky, promiscuous code simulations and geometric analogue filtering and distortion (optional).

Following the work of Thomas de Quincey, The Dark Interpreter re-casts the contemporary noise instrument as a “dark symbolic mirror”, placing control of parameters on the skin, strapping a psyche/plague village interface to the head. Modern live coding without screen, keyboard or conscious control.

The Dark Interpreter thus seeks to return all contagious execution to the skin, rewriting the history of technology as the plague which seeks to shift that site into the earth itself.

details

The truth I heard often in sleep from the lips of the Dark Interpreter. Who is he? He is a shadow, reader, but a shadow with whom you must suffer me to make you acquainted.

The Dark Interpreter operates as contagious sample granulator, distortion, and unique sound generator based on a speedy ARM32F4 processor with Wolfram audio codec allowing 16 bit sampling at 16KHz.

The Dark Interpreter is delivered in three versions fully assembled, and features high quality ALPS potentiometers, optional BOSS style 9v power socket (+9v/positive on the outside, negative centre, minimum 200mA) or battery clip, and full size (6.5mm) JACK input and output sockets. Please note that versions cannot be extended, they are not cross-compatible.

The three versions are:

1-The eldest of the three is named Mater Lachrymarum, Our Lady of Tears.

The simplest Dark Interpreter consisting of one digital base board for solely digital processing and generation. Order with 9v socket (default) or battery clip on the back. Some skin control.

170 euros

2-The second Sister is called Mater Suspiriorum, Our Lady of Sighs.

The second Dark Interpreter consists of one digital/analogue base board with digital processing and generation extended by symmetrical custom filters, distortion, and switchable feedback paths. Order with 9v socket (default) or battery clip on the back. Some skin control.

230 euros (with free worldwide shipping with track number)

3-But the third Sister […] her name is Mater Tenebrarum,—Our Lady of Darkness.

This two-tiered Interpreter extends the Mater Suspiriorum with a skin breakout board and skin/EEG amplifier (strap it to the head, stick it in the earth, pull it across the skin, into the body). All signal paths and settings are accessible to the skin for complex hand re-routing, and feedback. Of course the device can be used without any wished skin transfer. Order with 9v socket (not recommended for safety reasons) or battery clip (default) on the back.

310 euros

Samples/recordings

419 and 420: no input, early dev tests with just hardware

Video

Layout and controls

Rough guide

Hardware and software

The Dark Interpreter is licensed as open hardware and free software with all schematics, software and layouts/notes available at:

https://github.com/microresearch/dark-interpreter

Contact/mailing list

References

random quotes

  • for the three versions:

The eldest of the three is named Mater Lachrymarum, Our Lady of Tears.

The second Sister is called Mater Suspiriorum, Our Lady of Sighs.

But the third Sister […] her name is Mater Tenebrarum,—Our Lady of Darkness.

The truth I heard often in sleep from the lips of the Dark Interpreter. Who is he? He is a shadow, reader, but a shadow with whom you must suffer me to make you acquainted. You need not be afraid of him, for when I explain his nature and origin you will see that he is essentially inoffensive; or if sometimes he menaces with his countenance, that is but seldom: and then, as his features in those moods shift as rapidly as clouds in a gale of wind, you may always look for the terrific aspects to vanish as fast as they have gathered. As to his origin—what it is, I know exactly, but cannot without a little circuit of preparation make you understand. Perhaps you are aware of that power in the eye of many children by which in darkness they project a vast theatre of phantasmagorical figures moving forwards or backwards between their bed-curtains and the chamber walls. In some children this power is semi-voluntary—they can[Pg 8] control or perhaps suspend the shows; but in others it is altogether automatic. I myself, at the date of my last confessions, had seen in this way more processions—generally solemn, mournful, belonging to eternity, but also at times glad, triumphal pomps, that seemed to enter the gates of Time—than all the religions of paganism, fierce or gay, ever witnessed. Now, there is in the dark places of the human spirit—in grief, in fear, in vindictive wrath—a power of self-projection not unlike to this.

This trial is decisive. You are now satisfied that the apparition is but a reflex of yourself; and, in uttering your secret feelings to him, you make this phantom the dark symbolic mirror for reflecting to the daylight what else must be hidden for ever.

(brocken)

The Dark Interpeter “will not always be found sitting inside my dreams, but at times outside, and in open daylight.” (see full quote below)

The Greek chorus is perhaps not quite understood by critics, any more than the Dark Interpreter by myself. But the leading function of both must be supposed this- not to tell you anything absolutely new,- that was done by the actors in the drama; but to recall you to your own lurking thoughts,—hidden for the moment or imperfectly developed,—and to place before you, in immediate connection with groups vanishing too quickly for any effort of meditation on your own part, such commentaries, prophetic or looking back, pointing the moral or deciphering the mystery, justifying Providence, or mitigating the fierceness of anguish, as would or might have occurred to your own meditative heart, had only time been allowed for its motions. The Interpreter is anchored and stationary in my dreams; but great storms and driving mists cause him to fluctuate uncertainly, or even to retire altogether, like his gloomy counterpart, the shy phantom of the Brocken,- and to assume new features or strange features, as in dreams always there is a power not contented with reproduction, but which absolutely creates or transforms. This dark being the reader will see again in a further stage of my opium experience; and I warn him that he will not always be found sitting inside my dreams, but at times outside, and in open daylight.

TO REMEMBER/TODO

  • always set define for board (TENE, LACH or SUSP) in MAKEFILE and make clean first!!!
  • caps across potis for top-board
  • make clean after changes to settingsarray or MAKEFILE!
  • program from the BACK!

PROGRAMMING

build/test PROGRAM:

1-DTEST_STRAIGHT test 2-re-program full/test 3-assemble 4-test EEG 5flash/testallknobs/battery

MANUAL IN PROGRESS

basic operation/theory/background

The Dark Interpreter is influenced and guided by body capacitance, skin resistance, biological micro-voltages and the fleshy conduction of all signals. These are ways of saying that the Dark Interpreter is completely open. It is not to be considered as a closed and bounded device which is subject to an exterior control “by the body.” The Dark Interpreter is an electronic and thus earthy shadow of the body, it is (inside) the body.

The Dark Interpreter is thus not to be controlled. It is an obsidian electronic mirror, the earth and skin itself.

The preliminary working of The Dark Interpreter (reflecting the state of the improviser) should be considered as part of the creation of a unique, skin-sensitive instrument. The border between this first stage and the improvisation and playing of the instrument is diffuse, the mirror surface is ill-defined. The Dark Interpreter leads a path for skin, fingers, earth and head.

To define the uses and potential paths of The Dark Interpreter we refer to the five knobs/potentiometers and the finger-board, the gold set of contacts which in the case of Tenebrarum is seperate from the two pronged fangs (for head and earth use).

The three synths and how they differ and can be used:

Mater Lachrymarum

No analogue processing hardware so all settings which relate to hardware are redundant. The fifth knob, which in other synths is tied to hardware routing and settings, is now repurposed as recording effects. Finger/skin controls are as on the Mater Suspiriorum.

Mater Suspiriorum and Mater Tenebrarum

These both share the same analogue processing hardware. Mater Tenebrarum adds a new head, earth, skin and finger board which breaks out for the flesh world most of the important digital and analogue signal paths and settings, allowing for the unhanging of settings from digital dependence and re-placement on the skin.

The Tenebrarum also adds the crude EEG/micro-voltage fanged amplifier for head and earth. All knob controls are the same for both synths, although the layout is different. Finger controls are also arranged differently.

The knobs from top down and left to right (diagram for each)

for TENE is:

1

2

3 4

5

for LACH/SUSP is:

1 3 4 2 5

The fingerpoints or finger-board (2 diagrams)

Mater Lachrymarum and Mater Suspiriorum

L U IN V GND D R OUT

For Mater Lachrymarum IN is unused!

[diagram also]

Mater Tenebrarum

[diagram]

The knobs and their functions

//REWRITE!

1- These first three knobs are the same in all synths (placement only differing). This first knob selects one of 16 modes, divided into basic modes and mirror settings, which effect how The Dark Interpreter develops and is played/reflected. The modes are roughly as follows. Each mode effects the bevahiour of the finger-board and the second, third and fourth knobs. Modes allow for entry into the core plague code (fingers in the code), audio settings, villager parameters and mirror settings. Behaviour is different for each set of modes (see list of modes below). Finger pressure also effects varying parameters for each mode. Nearly all modes provide sufficient (lack of) control to allow the Dark Interpreter to be played solely in each mode.

2- This knob controls specific settings within the 16 modes (only when we have a finger on any of the pads of the finger-board).

3- This third knob is only used when certain parameters are attached to it by way of some of the modes. (TENE - also offsets distortion)

5-The last knob strictly controls the hardware operations and signal routing, including opening up of routes, and settings to the skin (we call this unhanging of hardware options). Here we can set the signal path through analogue filters, digital filters and various distortions.

In the case of Lachrymarum (no analogue hardware), this last knob controls outgoing audio effect parameters.

////Modes

1- Effects (READ/WRITE and in case of TENE/SUSP filter and directions select input mode=) with fingers as effect modulation

2- Direction (left and right with up as wormdir select and down as finger into direction). Which direction to effect (eg. hardware direction, filter) is controlled by the second knob, step by the fourth and speed by the finger.

3- Set start(second knob), wrap(fourth) and step(finger) for up=read,down=write,left=village_read, right=village_write.

4- HW:TENE and SUSP: hardware start(second), wrap(fourth) and step for varying 4 hardwares (on directions). LACH-data walker settings

5- EXECUTION: sets maximum stack(second) and executable process(finger) for on each direction: cpu, cellular automata, simulations and total execution stack. Also sets maximum village extent (fourth) on all fingers.

6- DATA WALKERS: start/wrap/step for data walkers

7-11 MIRROR/ATTACH. We attach settings to a range of parameters/code by selecting a group. The group start is set by fourth, wrap/extent by second. Directions indicate what is to be attached (up is detach), down is EEG/skin, left is third knob, right is data. Into:

7-settings 8-villagers 9-function stack 10-cellular stack 11-cpu

12-ALGO attach into all (again start is fourth, extent is second)

again with directions at to what to attach

13-swops by direction. up is in settingsarray(second=extent,third=srcoffset,fourth=destoffset)

14-COREDUMP (up and down only)

15-INFECTION

16-FINGERS in the CODE - no knobs!

The hardware

RECORDINGs of note

763(no in),767/777(mixer noinput)

GDB DEBUG

note added -ggdb to makefile

GDB debug with st-link (rather than JTAG):

PATH=~/sat/bin:$PATH
st-util 

in one terminal

arm-none-eabi-gdb main.elf 

followed by command in gdb to connect

tar extended-remote :4242 

NEXT - how set/delete break points, show data from code, test FPU,

1- breakpoints

break sinf
delete 1

delete break

cont

(for continue)

2- FPU

show arm fpu

VFP = vector floating point

3- code data/print variable (what do we want to print?)

Refs:

http://edb-journey.blogspot.de/2013/08/debugging-fpu-registers-vfp-in-gdb.html

MON 13 OCT

for this master/diana branch add modulus with buf16 as effect to all in audio.c TO TEST!

  • remove all! TODO or use SEPT backup branch!

MON 15 SEPT

towers branch forked

git checkout master
git checkout towers

MON 18 AUGUST+notes/re-appraisal

  • post-release re-appraising (older code is in gitaugclone)

and:

  • 48k/32k?????- now back to 32k!
  • fixed LM bug in hardware.c (did this effect anything? - NO)
  • looking at 40106 range and PWM there//>>4 now so is 0->2048 range - now in CONS
  • maxim also now >>1 for range
  • bufsel as lowest bit in sim and ca
  • changing speedmod >>5 for mode 15 - also changed mode 15 so is not >>6 which makes no sense
  • fixed bug for stack attached as was not STACKPOS/Y *4 (so not full)
  • fixed bug in case 12 would always be on left when no finger
  • re-ordering in case 4// now not important
  • fixed bug with tmpp as u8 for some cases in audio.c// now tmpw
  • vill as static is not same vill at end???DONE changed to vilr,vilw,vilf
  • removed 40106 clock unhang in hardware.c as makes no sense
  • bug in ca start code in main.c (<4 not <<4) fixed
  • bug in case 4 stack code fixed (<<10 etc setting of type)
  • -O3 now in Makefile
  • break missing in filter read code in audio.c FIXED/filter tested and maybe odd tweak…
  • changed to all CONS and BASE for HW
  • changed HWSPEED
  • randis to rand in datagen inits
  • in audio.c and hardware.c now all digfilteraction is &1 for extra process of detached filter
  • extra bit on HW selects HW as walker or as attachment (and removed HW averaging)
  • change resistors on end/out so and RETEST with this volume/feedback [R38 as 47k, R36 as 100R]
  • HW speed changes in mode 3
  • knob 3 selects which stack item to change in mode 4
  • villagers and anydata doubled up in modes 2 and 5(filt only)
  • added speed setting for attachments (datagen coo++ only - removed MACHINESPEED)
  • added in * FMOD for straight audio in (modulation) in readins (not filter readin)

///for much later:

  • order middle/early modes// concat some attachments and possible mode changes:

so we would remove modes 1,2,5 and concat 8,9,10 to add new modes for 1samplewrite, 2sampleread, 3data_or_village_write, 4data_or_village_read, 5filtread, 6filtwrite, 7data_or_village_filt

[still need extra modes]

// all knobs replaced by finger points untied // add depth/divider for maxim in hardware options (where?) TODO // that can change its own setting layout/interface somehow - OVERLAY/MIRROR TODO//PALIMPSEST // more control over stack TODO // expansion of wormcode TODO

THU 17 JULY

  • change size of infection init
  • fixed error in cpusizing in main/attach

WED 16 JULY

build/test PROGRAM:

1-DTEST_STRAIGHT test 2-re-program full/test 3-assemble 4-test EEG 5flash/testallknobs/battery

TUE 15 JULY

ALL TENE/NO INPUT: recordings: 742(longer)*,743(startonly)/744(startonly)/745(edit)/747editALLAfter//

749(short vocal)

LACH:750(vocal)

NO input improvisation using The Dark Interpreter (Mater Tenebrarum) synth module. Hand manipulation. As always no effects, no edits, recorded on DR-07 direct from monitor speakers. Details: 1010.co.uk/org/darkint.html

Announce

Oh, eternity with outstretched wings, that broodest over the secret truths in whose roots lie the mysteries of man—his whence, his whither—have I searched thee, and struck a right key on thy dreadful organ!

[Thomas de Quincey. The Dark Interpreter]

http://www.1010.co.uk/images/dix41.jpeg

After months of search and trial, I am pleased to announce the first release of a limited edition (10) of that dreadful organ, The Dark Interpreter, possibly one of the most versatile and destructive granulation and synthesis modules currently available.

The Dark Interpreter is a clear successor to the Blackdeath noise module, extending contagious granular audio processing with new plague processing units, leaky, promiscuous code simulations and geometric analogue filtering and distortion (optional). Dark Interpreters (the users) guide and steer sample and code operations with head, fingers, knobs and flesh.

The Dark Interpreter re-casts the contemporary noise instrument as a “dark symbolic mirror”, placing control of parameters on the skin, and strapping a psyche/plague village interface to the head.

http://1010.co.uk/org/darkint.html

https://soundcloud.com/martin_howse/sets/the-dark-interpreter-released

This trial is decisive. You are now satisfied that the apparition is but a reflex of yourself; and, in uttering your secret feelings to him, you make this phantom the dark symbolic mirror for reflecting to the daylight what else must be hidden for ever.

MON 14 JULY

XX740/739/738 SUSP

  • manual///documentation///website(samples/rough guide)

  • added default into all cases in audio.c
  • switched village/effects round so top 2 bits is village
  • check SUSP crash-wierdness/no unhang of hw TESTED!

FRI 11 JULY

choose 729

**729(vocal)/728/727.wav(all/time)fingersincode(mode5),

LACH 732*/733*/730*(vocal)

SUSP 734**/

/////

  • all TESTS all modes across:

LACH=ALL/DONE/1by1DONE

SUSP=ALL/DONE

TENE=ALL(short/REDO!)//1by1DONE

  • removed switch in mode 12 as seemed cause LACH problems//also changes in 15 for same reason ???
  • randi changed to rand() on LACH//changed for both
  • bug in mode 1 for LACH fixed!
  • fix to effattached
  • tested villagers conclusively
  • breaking down villager in audio.c so works?? re-test with villager set mode=mode2left/right=tweakedforspds
  • re-test running of cpu(4)DONE
  • tweaking fingerdir/spdDONE
  • re-test infection 14 DONE(small changes)
  • re-check speed code:mainX,audioX,cpuX(missing reset),pure(missing reset) FIXED

THU 10 JULY

726/725/724/*721/720.wav(HW,time),

  • float exception fixed in main/hw
  • pcsim fine
  • RAND and randi question to resolve
  • any hardware tuning on maxim
  • mode 12 swaps can go a bit dead?
  • (coo%((FOLDTOP>>10)+1) in attachs to look into - changed to >>1 TEST
  • better re-organise hardware options (place unhangs earlier) or not? NO
  • extra settings on village effects
  • tempered 40106 on knob three
  • fixed signed bug in village and other audio code
  • steps on knob four also in new mode 1 direction/speedTEST (as changed order of steps in settingsarray)
  • added extra HW mode 10
  • HW averaging or not? NOT!
  • retest unhang all (removed PC13 hang as is no fingerpad)
  • shifted mode 1 ->4 for stack stuff

WED 9 JULY

716/715/714/713/712=longestjam///startonlyof711///710/709/708/707.wav(all)

718/717-LACH

  • swop fixed in infection case 15
  • speedups in main/modes
  • attachments moved to before modes!
  • infection now only on fingers and with start and extent on 2nd and 4th knobs
  • possible fix to villager stack
  • fix to algo mode which would clear it!
  • redoing HW basesDONE
  • checked all wormflags and all match directionsDONE
  • timeslices must be static u8 i! - no timeslice NOW
  • exestuff now in settingsarray - init okay and replace refs in runners…also cleared in attached
  • extra mode 5 but ditched minormode idea
  • where to set LMERTWO? set NOW as third knob (as HW=hdgener/lmer/lmertwo/40106/maxim=5)

TUE 8 JULY

695/693/692/691.wav(timein,hard),700/699/698(all,vocalin), 702/701(with storm), 706/705/704/703(LACH,vocal)

NOTE: setted= UP=NONE/DOWN=EEG/finger/LEFT=KNOB/RIGHT=BUF16

  • changing hard settings in case 4/changed also for LACH there…
  • test LACH// each mode tested FINE
  • wrapread error for LACH FIXED!
  • finally back to 48000 as time-share
  • how to buffer generations of setting infection in mode 14? (2 arrays or?)DONE
  • re-check time-share-switch or not in sim and ca!DONE or as option???TODO
  • steps and speed >>10
  • lack of few breaks in cases in main
  • shifted HWspeed somewhat
  • leftside amped in codec.c for filter
  • changed hardware clock unhanger so doesn’t change input
  • checked digital filter effectsDONE
  • TEST now wrapped all hardware in HWSPEED
  • TEST new worm changes in audio.c and also changes to orderDONE

MON 7 JULY

689/688/687(vocal,hard),685*/684*/683.wav(in,nohard)

///MODE QUESTION???

  • somehow a new first mode which describes (by hand) an arrangement or reduction of modes!!! how exactly: hand walker of walkers

:

  • changed order in audio.c
  • villager array in audio.c as 128 long
  • few corrections in main/sizewise, changes to direction array in audio.c
  • full mode TESTS
  • re-try 48000 samplerate last time - ALWAYS 32K NOW!!
  • latest runs fine on valgrind
  • fix to runoregon variable in sim
  • fingerspeed setting removed as unused
  • TODO: 4 new cases in hardware.cDONE-feedinto distortion twice after filter
  • re-check all HW: DONE

cases 9/10 and 11/12 are the same in hardware.c // also replication in unhanging as feedin doesn’t change anything fixed bug with ~ in hardware.c

//check re-hanging all-CHECKED

  • checked all wormflags in audio.c
  • fixed major filterbug in audio.c - re-check all “}”!
  • case 1 changed so villagestackpos is on knob FOURTH ALWAYS!
  • fixed stack bug in case 1
  • need somewhere set what is being executed- in case 1DONE
  • dir and speeds protected in mode 2-TEST!
  • new modes:-TEST ALL!

3- set start, wrap and step: tweak step<< from spd, all speeds and steps in settings +1 and now >>9 -TESTwithvillagersTESTED!

  • re-test speeds in mode 2DONE

4- hw settings/fmod settings on LACH-DONE/TESTED! 15- fingers in the code!DONE/TESTED!

  • hw dc offset for 40106=LMER - somewhere (as part of hw knob?)TEST-compare closelyTESTED!
  • infection across all in mode 14 TEST-WORKING!

FRI 4 JULY

681(nohard,IN),673(nohard,TMin),674*(hard!,TMin),675(nohard,TMin),676(nohard,noin),677/678(hard,noin),680(noard/noin)

/////

mode0: effects/inp *// changed OK! EFFECT MODE

1: stack * REFINE/RETEST- STACK MODE

2: dir/speed * GOOD!- knobs for what?

3- setted for all SETTED! - NOW as one mode (minormode as mod)-REVERT

4-algo attachall* ALGO ////////////////////////////////////////

5-settings to settings: leftright=pos2 updown=pos1 knob2=howmuch *SWOPS/MIRRORS ONE MODE

6-dump all to datagen and back (up/down)* COREDUMP

7-infection (could be across all?) INFECTION - size mismatch - infect across allTODO

/// //????????????????????????????????????//////

  • simplify audio effects and settings:

pin down settings: speed/step/start/wrap/dir + misc: fmods, foldback…

speed/dir as direct

leaves step/wrap/dir and misc…

  • villager model for all
  • self-modifying modes and setup (how?)

  • reduced to 8 modes - with minormode
  • fixed problems in modes esp. with stack size…
  • changed case 0 and 1 for all effects now - RE-TEST!
  • back to 48k samplerate// back to 32k
  • effect offsets elsewhere than settingsarray
  • final convolve effects fixed
  • fix mode issue/silence..speed issue-> working on/DONE
  • check wrap on knob1-REMOVED
  • why inp mode failed 0 was wrap REMOVED
  • finger in speed to invertDONE

MON 30 JUNE LONDON

  • finger_as_speed in navigation mode (2) DONE - to TEST!

  • do we use fingerspeed(also on first knob) - TEST

???? - what else on mainmode knob (some kind of contraction in reverse)=samplewraps! ???? [commented at moment]

  • changes last effect in audio.c case 15…
  • effectread offset is now on knob 2 when we have mode 0 selection
  • mode 9 is algo selection into all-tested
  • some mistakes fixed

SAT 28 JUNE EDINBRGH

672/671.wav(noin)

  • add one extra mode!

NOTE- backed up last to: main.c.bac28june

DONE:

options: keep as is, reduce modes and keep as is, new mode/knob scheme more or less as below (opted to reduce modes and remove mirror)

  • retrying sans slicing in ca/sim (commented out)- so now runs full stack

removing foldback. expanding attachments. where we set foldoffset and foldtop - in settings.h replace expands

FRI 27 JUNE

control of settings(?)=ATTACHgroups// direction(worm?)// processes=foldback and process on these parameters

knob=groupsel/speeds knob=offset left/right = contract/expand size up/down = attach/unhang what? or as modes

offset/size for a group… what to attach/detach(1 or 2 knobs are free) = can also be a process

////

  • which modes work best?// or a new scheme - see above

0-set setting 1-which input-NEEDbut is kind of knobless -switched with 1 2-set stacker/stackery 3-set cpu 4-set villager 5-set villager effects

6-set max stacks TEST (could be part of settingsarray if take speeds out - 4 speeds - 2 in case of LACH and where we set 4 speeds)

7-directions

[8-foldback settings???]

[9-settingsarrayattached is set??? 1-8]

[10-datagenbbuffer defines settings - settingsarray 11-^villager 12-^foldback

13-worm across settings set 14-^villager 15^fold - ditch maybe?]

16—– attaching to group! RE_TEST

//could also attach group to stack/villagers

17-foldback on settingsarray - buf16 18-^randi - could be ONE but how as we use all fingers?

19-on villager 20-^randi - could be ONE

21-on stacker 22-stackery - AS ONE

23-on cpu 24-on foldback itself [25-on settingsarrayattached ???]

26-copy settingsarray to itself* 27-villager* 28-villager->stack* 29-stack->village- AS ONE back/forth with finger

30-datagen and back**** 31-virus*

// trim modes???but would have to be to 16

/////

  • some way to fold back speeds of fingers(set these % of MAINMODE/firstknob)=fingerspeed 1-33!NOTDONE-retest!

  • TENE mode 0 exchanged for 1
  • fixed bug in village effects as not static (so always 0)
  • testing gdb/valgrind (was error in pcsim code now okay)- passed
  • reduce and expand all stack sizes as a mode 6 (replacing)
  • timeslicing in sim, ca DONE/TEST- cpu and leak as unsliced!
  • extra execstack option for nothing happening!
  • set bit (say top of howmuch) for which buffer ca and sim work on

bufsel (1 or 0) is top bit of howmuch now

THU 26 JUNE

DONE:

  • - test changes to fingerdirleftrighttx,tested updownOK, fingerdirOK in modesDONE
  • check if can bounce back datagen->whole space in mode 30 - DONE/

note: fingerdirupdown is 0 for up // 1 for down… in mode 30: down dumps settings to buf16… up dumps buf16 to settings

WED 25 JUNE

667/666(notsohard),665,664(hard),663(hardbass),662(hard),661*(vocalnohard), 660(vocalnohard-eeg),659(feedback),657(time,nohard),658(time,hard)

TODO:

  • recordings/video/manual-in progress/website

DONE:

  • whether mode 1 (TENE) should be attach or not? NOT!
  • mode finger speeds to tweak (as whole)?
  • switched mirror and settingsarray code so mirror stays longer
  • also extend wormdir across all walkers TODO after TEST!
  • hole in attach for mode1 DONE-TEST!
  • extra first mode for inputs (on fingers)/taken out of hardware knob-NO LACH-DONE-TEST!
  • where to set wormdir: TODO:new wormdir array,,, >> for effectsDONE

for mode 7: up=set wormflag for dir ser by knob 2/right=unsetworm/right/left=so//down=dirbyfinger

  • if attachment should include randi() (how it could?) - in case of TENE instead of attach finger is eeg/randiDONE-TEST!

TUE 24 JUNE

655,650,648, 647 (hard, srcin), 649 (noard,srcin), 651(hard,vocal),656/654(nohard,voin)

  • RE-ORDERED hardware so input options are lowest - but somehow nice as seperate flag for input options (but where to set?)

//- sample rates: 8000, 32000, 44100 in main.c Codec_Init(32000); // was 48000 (+sim)

  • set to 32000/32K!
  • are effects too jittery ? possibly - both effects and hardware too crowded somehow
  • test with other fingersDONE-fine!

MON 23 JUNE

638.wav(SUSP-no hardsett),642/641/639(SUSP,hard),644(TENE,nohard),645(TENE><HARD)`

DONE:

  • RECHECK MAIN.C: fixeda few bits,
  • re-check hardware and 40106 voltage
  • check last effects replacement DONE

FRI 20 JUNE

note: resonator in nsynth.c - after setabc(frame->F1hz, frame->B1hz, &r1c);

  • test SUSP (first with audio.c effects)
  • FORMANT does not work with floats (only in test.c with doubles)-replaced!
  • test LACH-okay!
  • settings.h as IFDEFed for LACH - double up and regroup
  • ifdef setup/init code and set EFFECTREAD there too

THU 19 JUNE

  • IFDEFs - hardware knob replaced with EFFECTREAD ifdefs in main and in audio
  • re-test all functions in sim: put vars and inits INTO functionsDONE
  • rechecking audio.c: removed if (wrapper==0) wrapper=1 (as WRAPs are always +1), fixed duplicate effects
  • TESTed audio walkers again: model fine (but what of wormdir-fixed as rogue case in village==0)
  • in audio.c we end up reprocessing with village_effect in 3 cases! REDO!!!
  • TODO!audio.c: + or - 32768 between buf16 and audio_buffer - TESTED!

(audio backed up to audio-backjune.c)

  • use UP/DOWN for foldd[1] in cases 26+ UNTESTED (but should be fine)

WED 18 JUNE

624*/623/622.wav(hard,timemachines),632,630,629,627/626(hard,voice),634,631(nohard,voice),

  • fixed many ++ mismatches in audio.c for ldst rdst++ TO TEST
  • *src++ as src++ in audio.c
  • HDGENERCONS in settings.h +1
  • in audio.c shifted villager >>1
  • check again all bit sizes in settings.hDONE-check against main.c
  • re-measure M3 schrauben (6mm)//order reicheltDONE
  • TESTED mirror/setting mode code (each case//in full)
  • effect offset should be 7 bits as 128! also shifted where offset is so no lag in audio.c
  • tuning speed of fingers - now without float but with fingerdirleftrighttx(vall) - which maintains state thoughDONE (vall is speed) - also updownx DONE
  • small fixes - VALGRIND okay checked 18.43…
  • ADD additional CPUs in all (simX,cpuX,leakX,caX) which do NOTHING and update totals
  • main.c add in rest modes and check ALL by hand(few fixes eg. hardware)
  • run through hardware.c: fixed odd mistake
  • checking all FILES and remove stale TODO, clean: mainX,hardwareX,simX,CAX: fixes in sim
  • mismatch of bits in pushn in ca and simXfixed

TUE 17 JUNE

617.wav (hardset,noin),618/619/620/621 (hardset,no/somein),

DONE:

  • test new wormdirDONE
  • test eff knob and offsetsDONE
  • TESTS:test audio effects again
  • audio.c: fixed FMOD as were all the same FMOD (no FMODW etc), fixed bug as + morph_inv and not *, fix FORMANT,- audio.c 417: 3,4,10,11 to redoX,fixing13,14,15theretoo,
  • effects outX, worm in effectsX, effects as offsets from writesX, add DIRECTIONS into mainmodeX
  • effects knobX
  • added mirror/settings code
  • village_size is 128=7 bits
  • mirror/swop/attach code now (watch as mirror is now sep.stacker/stackery/cpu)DONE
  • ALL above tests fine in valgrind/commit/add

last audio file now as: audio_olderjune.c

MON 16 JUNE

TODO:

  • new layout/modified now:

1-mainmode=x8 || x8 // mirror/attach(using finger UP/DOWNtoggle)->mirror edge(LEFT/RIGHT as extent)

2-knob for mainmode //mirror edge

3-action/agent-continuum? OR pull speeds/other settings out of settings?but how different each speed?

4-attached knob

5-HW//EFFECTWRITE in LACH

whether all cpu/pureleak and villager values should also be 16bit and >> in each

random notes:

fingers are always navigation (through varying spaces which are set by what????)

virus across, spawn walkers and kill walkers (like agents which can be controlled), dump section/all to datagen and back again… must inc. wormdir, worm processes (mirror worms in soil)

hardware and audio/effects as somehow fixed to always control (how switch between 2 or 3 sets effects other than reduce effects and have as one knob and then what instead of HW for LACH?)

other model than stacks (as don;t like push and pull?) - reduce and increase number of running procs

DONE:

  • stacker and stackery as 16 bits values constrained for CPU and howmuch! DONE-TO_TEST! (and fixed one mistake wit stacker there)
  • test DISIM with new arrays as memoryDONEfixed still error in ca
  • re-tested villager effects with corrected code
  • check CPU and stack constraintsDONE-changed but do we need new way organise large array of all? NOTED that constrained in place so don’t need to do elsewhere…
  • re-organised settingsarray for new hardware offsets, add these to hardware, TESTED!
  • EFFECTREAD and co. replaced with array

SAT 14 JUNE+

607.wav (horbuch,hardware),609(hor,no hard),610(hor,hard),615,613,611,616(hor,nohard),612,614(hor,hard)

TODO LAYOUT:

  • simplify to 16 modes: groups (maybe lose fingers??), mirror and

attach! (or fingers are modulated by knobs) 4x4 modes somehow reflect knob use on each other also somehow modes as a continuum? wormdir and fingerdir??? do execution changes/push pull as one group///stack???

groups-finger-attach-execution//mirror

TODO GENERAL:

  • push different buffers for datagens (buf16/audio_buffer)?
  • replace red rooms wrap reduction in pureleak and cpuintrev3 with???now removed
  • swop/dump all of settings/stacks to datagen in one mode (and back again)
  • wormdir and fingerdir also (put in one of finger modes)

/// see below./////

  • removed pureleak and cpu wrap reduction
  • added all per villager effs/fixed problem there/TO TEST
  • checked toggling in wider context
  • having to tweak finger settings right down…TODO CHECK re-check/tweak/change all (also see if simpler boards make difference)
  • checked that execution is working fully (examining datagen and note that pureleak gives us beginning bleeps as storage is there)
  • added audio wormdir code in WRITE only but still to toggle SOMEWHERE!
  • tweaks to most modes
  • sampleexpand across all modes

FRI 13 JUNE

TESTS:

++from TUE/WED below->SAT:

  • tweak speed of fingervalright
  • tweak speeds in settings.h (remember to update initialisation in main.c)
  • wormdir - how we can toggle use of this(bitwise on mode?) and if makes sense?TEST?

// wormdir for read/write/filter WHERE?????

////

  • test basic board/s and other fingers

DONE:

  • last mirroraction 31 = infection
  • finished extramirror and attach
  • changed mirrors so is not always << and >> using eff[x]->check
  • added knobs in stack/fingermode TO TEST
  • testcode in one instance for village_effects (note need to change tmp in village code) in audio.c
  • added IFDEFS for LACH in main
  • cpu and pureleak fixes for use of wormdir

THU 12 JUNE

603.wav (horbuch,hard,nocode),604ad603butnoin

DONE:

  • small fixes to villagers in audio.c, and new speed setup in main.c (TODO: change if we tweak speed in settings.h)
  • delay added in randi() into datagenbuffer
  • finished mirror and running mirrors//-TO TEST!

WED 11 JUNE

599.wav (horbuchin,nohard,noplay), 601.wav/602(horbuchin,nohard,noplay)

  • new layout - mode quadrant as 1-groupsX/2-fingerX/3-mirror(inc eeg)/4-attach=finger/process/detach/knob
  • simulate whole in one space(double each and every op as local memory/datagen????)
  • knob settings in fingers (eg. for stack settings, what else)
  • tweak speed of fingervalright
  • tweak speeds in settings.h
  • wormdir

//////

  • bounce stacks and CPU to villagers - live re-org villagers as blocks(change order) m->m_threads[sel].m_start m->m_threads[sel].m_wrap
  • fixed runcel in CAforstacksansmem//fixed cel errors in CAforstacksansmem
  • groups/fingers DONE and tested
  • re-instated exestack from mainquestion.c
  • re-tested CPUintrev3/pureleak (esp ants/turmites)FIXED
  • cleaned up execution- WHAT to execute and where/how to add or remove?
  • added EXPANDS to all audio.c UNTESTED!
  • checked STACKSTART etc. are inited okayyyy in main.c
  • audio.c conv/form and co. moved out of sz loop (cannot be per villager effects)

TUE 10 JUNE

597.wav (noin,hard)

//////TODO:

  • refine and add in IFDEFs
  • test on basic board/s
  • worms through all, infectuous groupings and processes in settings
  • walkers can also be like ants, turmites and so on - MODES/location/walker walkers(=mirror?)
  • per villager effects (how to attach) but no process attach (regions only)… how many villagers we can have in memory???
  • tie villagers also to CPU as well as stacker/stackery
  • randi as one issue (as varies quite small)TODO
  • hardware is all same walker with shifts from base value!TODO! FIX!(but shift is also important)

  • crash when start with hardware not set to zero FIXED as tmp and tmppp not set, also one divide by zero in HDGENERCONS (feels like done this before but???)
  • small CA fixes and added KRUMMEL

MON 9 JUNE

597.wav (noin,hard)

NOTES:

////

  • new architecture:
    • per villager details(execution/attachment,location,per grain effect) (how many and how to store)?

and/or we need 3 sorts of villager for each mode R?W?F?

each of R/W/F modes: 6 bits=EFFECTREAD/WRITE/FILTER

  • greater execution control/fingers in code
  • varying modes
  • mirror and double
  • new controls:
    • finger modes (untied, into code, into villagers)
    • 8 controls as per new diagram

example modes for arch: villager, walker

// for control: navigate, fingers in the code, in the stack, head in code etc…

  • does it still crash? doesn’t seem so but anyways major changes to come!
  • strip and re-test granulationDONE
  • cleaning up inittable and #define STACK_SIZE 16 is now ONLY in simulation.h
  • cleaning up direction arrays
  • re-familiarize and make general tests - cpu in CA and SIM should be alterable in stacker and stackeryDONE
  • small fixes to effectsDONE
  • expand AND contract the WRAPS _ TODO fully but tests well
  • SEIR fixed (wrong array)
  • SIMULATIONS to fix: IFSY(input conditions?)DONE, ////secondrosslerDONE,

TUE 27 MAY

  • where crash could be then (if still exists) - dir arrays are only more or less left
  • isolate and test/pcsim datagens
  • re-test granulation
  • strip code and figure out new finger setup - how can be pulled together more closely

  • what errors will valgrind detect (all arrays as malloced in PCSIM will work better)DONE-all arrays converted and checked with valgrind-no errors/below:
  • fixed for pointer/potential crash in audio.c
  • fixed other wierd/overflow/crash bug in runconvforaudio in audio.c

MON 20 MAY

585(nohardvocals),589(nohard,noin),590(nohard,noin),592(hard,noin),593(hard,noin+play),594(hard,noin), ,595(hard,noin),596(noin,nohard)

(all limited play)

TODO:

  • ONE CRASH (none in SIM)
  • effectmod is not working as sets all effects to be same on modchange// but we re-do all knobs anyways

recent notebook notes:

  • knob settings not quite right(finger issues, also too much use of knobby)
  • fingers as navigation thru micro-macro states (how?)
  • how well do datagens work - test and isolate
  • test granulation also and control of macro wraps
  • test mirror of mirror
  • fingers in the stack

KNOBS:

1-HW 2-effects (how with effectread/write/filt?) — 3- setting 4- param <- ->also with up-down to set/unset push/pop 5- mirror op and amount to mirror (??) or fingers as mirroring

+somehow stack of settings (well is 2 arrays/sets of arrays) +how we use direct finger setting

//from pre-riga:

  • fix fingermod so doesn’t reset settings-still knobs not right also on mirror toggle all wrong
  • embed in itself (how? self-simulation, own stack pointers made audible?)

DONE:

crash appeared fixed but now crashes if start with certain mirror ops - now fixed with init of m1flag and m2flag!

CRASH notes:

  • can we count on adc being max 12 bits or always test (and does it make a difference?no)
  • why does valgrind report undefined errors?

// DONE

  • fixed bug in fingervalleff code (recheck all)DONE
  • re-instated: - last of one of effects gives high pitch??? check out-runformforaudio was commented outRE_TEST-DONE and made global freq

SUN 11 MAY RIGA

DONE:

  • more complete simulation now segs, float point error/fixedDONE
  • put fix into sim with runform after valgrind tests DONE
valgrind  --undef-value-errors=no --leak-check=full ./DISIM
 valgrind  --undef-value-errors=no --leak-check=full --show-leak-kinds=all ./DISIM

-runcel1d in ca needs a re-write DONE

Notes:

  • gcc warning flags but not: Wconversion - some fixes
  • lots of undefined value errors in valgrind (datagen?)

/// debug tip:

ulimit -c unlimited

run code then with generated core:

gdb DISIM core

check leaks with:

valgrind  --undef-value-errors=no --leak-check=full ./DISIM

SAT 10 MAY RIGA

DONE:

Working on pcsim of all relevant files - completed…

  • add to pcsim: hardware settings, something else???
  • seems to run without any segfault
  • checked all *src++ businesses in audio.(*ldst++ = *src++; is fine) DONE
  • fixed secondbuf bugs in audio.c filter code and bits and pieces

FRI 9 MAY+

  • fix fingermod so doesn’t reset settings-still knobs not right also on mirror toggle all wrong
  • mirror of mirror in main or not?
  • embed in itself (how? self-simulation, own stack pointers made audible?)
  • simulate audio and settings.h for crash test

[- reduce always-running mirror ops?]

THU 8 MAY

samples: 581*** hardware, no input 584*** no hard, vocals

2 crashes

DONE:

  • take effects out of FOLDBACK
  • maybe retry with float mod - TODO across all!TESTED!!
  • added extra into mirror + speedups in mirror (not 32 bit flag)
  • order of mirroring/foldback(first) and settings(later)TEST - not much diff as depends when audio int is called but stick with settings first as then altered…

WED 7 MAY

samples:// no in 549HW,550HW,551HW

HWvocal559,569and570(eegonly),571,575**,576*,577=test1

noHW/vocal: 553,554,555=test2,556===,557,560=3,561,562,564,565,566,567,568,572,574

noHW: feedback: 558

still odd crash???? see below- stack size increased, is it NaN is sim?

DONE:

  • redoing effectmod so makes more sense TEST
  • checked all files for over buffer DONE
  • further bugs in stacker and stackery (one serious)
  • replaced >>9 for mirror with >>10
  • check villagestackpos upto 190
  • rid in audio.c of traps for mod0 - reverse!REDONE
  • bug with unassigned HW wrapper in main
  • got rid of +1 for wraps as would hit 32768 (but always mod so???) whereas div0 not-REDONE
  • CPUintrev3 and pureleak - fixed one overflow in biotadir
  • audio.c fixed mismatch in settingsarray and villagersize(?), also mismatches in pureleak…
  • redone simulationforstack as sans mem - simforstacksansmemDONE-TESTED

one crash so far: note that cpuintrev still uses malloc but all at start

MON 5 MAY/TUE 6 MAY

TUE samples: no hardware/no input/TENE: 530,531,534,548

nohard/vocl: 537,540(no action),542(action-good!),544,546,547

hard/no in 533(not much hardware)

DONE:

  • now with CAforstacksansmem TEST…
  • fixed wrong size for villager array

///-decided not use below:

  • float mod for effects in params (-hard,-effectmod as not a setting=2)DONE-put into audio.c TODO!!!

    float32_t morph_inv = 1.0 - FMOD;

    f_sum = (float32_t)*asrc++ * morph_inv + (float32_t)*bsrc++ * FMOD;

    float32_t morph_inv = 1.0 - morph, f_sum;

#define FMOD (settingsarray[46]/65536.0) #define FMODF (settingsarray[47]/65536.0) #define FMODW (settingsarray[48]/65536.0)

  • hardware in foldback as questionableDONE-removed
  • effectmod is a bit oddFIXED
  • fixed exespot error - check settingsarray in mainCHECKED
  • fixed bug in mirroring
  • fixed stacker overflow with %96 oversight!
  • fix each mirror action as having it’s own parameters (64) and mirror of mirror into this:DONE

    //// fix these as they all write to same place. pos in buf16 //// should also incrementDONE

    //// also we need to sort mirror of mirrorDONE //// so we need change mirror so doesn’t skipTEST

FRI 2 MAY

Samples: 506 is LACH only (same for any hardware only recordings), 507- with hardware/no input mostly

  • new knobs
  • TODO:make sure we have copy stacker/stackery into villager (but just start and end not howmuch)

knob notes:

// what makes sense to set from settings.h:

starts wraps/cons STEP/SPEED - have above

village settings stack settings FOLDBACK settings

EXESPOT

HARDWARE

///

third as more modifiers for hardware(first),effects(second), constraints, speed, steps, dir, village, stack and foldback=set with knob(where),hand up/down,open hand(straight set but we have 4 pads to set 4 settings=5,6,7,8-do in loop!)/adc

third works fine now kind of… could be tidier maybe way of tying settings to specific finger/adc9/knob

could be fourth=stack/execution or as set knob with stack and exespot above as before fifth=mirror/foldback

////

q of last 3 knobs(or 4):

set a region/group of settings (size of group->all->single) –> attach/set by fingers/knobs/adc9/datagen

copy a region/group to another group//other operations

region/groups are defined (as eg. wrap, speed) as contiguous and selected

  • set a region of stacker and villager –> attach/set by fingers/knobs/adc9/datagen
  • stack settings and push and pull
  • how to set and attach these regions // as an array or?

  • effectmod into settingsarray, reduce array to 64 with hardware at 65 as special case (so shift out infection, leak and set at beginning as randi) now HARDWARE is within 64 total…DONE
  • check all ifdefsDONE
  • add ifdef for eeg/adc9 = -DTEST_EEG and test this!DONE
  • testing LACH (funny hum sometimes with effect on LEFT=adc8-REDO some effectsDONE

THU 1 MAY

major changes to test:

  • fix audio.c villager codeDONE-TEST
  • adc9 -> datagenbuffer (at start)TEST
  • maybe inc villager max number(now is 128 which is 64 villagers) (inc to 96*2=192) and TEST!

samples: 497+ are with 48k (earlier were with 16k)

CRASH notes//appears now fixed as of 1 MAY 6PM+

Possible crash tech: optimization, stack size/overflow, memory overflow larger stack: _Min_Stack_Size = 0x400; * required amount of stack *

-audio.c simulation

-in runswapaudio/runORaudio in simulation was audio_buffer overflow - FIXED!

-clean up variables (ints, u16s esp. for dirs)DONE

-test behaviour on divide by zeroDONE-no crash

-estimate RAM use by way of arrays/structures (SEIR in sim is quite heavy max=1k)DONE

-check null on inits in CA and sim???DONE

-redo CA, CPU and sim without any mallocs… test without these (CPU just mallocs at beginning)DONE

  • some kind of foldback for hardware setting in main.c -DONE. tests but doesn’t seem-tweak
  • try 48k again (change in main and in sim)-now back to 48k
  • masque code in pureleak and cpu should be ok?
  • fixes to fingervalright so wraps correctlyDONE
  • fix for new fingerval - must init all settings or crashes
  • checked in sim: rosslers and co for output scalings
  • cleaned vars/checked arrays//- watch for stacker and stackery not being set
  • jumble in main of elses FIXED
  • rewrite simulationforstack to avoid waste in sineDONE
  • check all TODO, TESTYs and TESTERs, cleanups
  • bug in CA pushn code fixed
  • in runswapaudio in simulation was audio_buffer overflow - FIXED!

WED 30 APR-FINISH

DONE/NOTES:

  • simulate dir changes-DONE
  • crash - still unknown but stopped now
  • small fixes to mistakes in audio.c
  • in main init add all datagens and villagers.
  • crash tests- could be in stacker(which must be restricted - stackery is ok as refers to 8bits), fixed but still crash//could be villager>>1fixedNON… //enlarged audio_buffer by a margin seems some kind of fixNON
  • volume for feedbackTEST in codec.c - DONE
  • settings with knob is now after mirroring

MON/TUE 28/29 APR

samples: 473

NOTES:

effectmod is bits 1,2,4 fingervalup16bits 3rd knob 8-16 is push/pop

PLAN: W/THU/test basic brds/tweak/record/document

tweakS!:

  • villager max number tweaks
  • adc9 -> datagenbuffer (at start or?)
  • bare finger entry into settings/datagen
  • some kind of foldback for hardware setting

new knob scheme:

1-hardwareDONE 2-effects-test jitter (effectmod also from below)DONE 3-mod for up/down/left/right and foldback (mirror) 4-settings X-TODO! 5-settings Y

  • mirror/writing into villager array-TEST and test all mirrorings
  • figure out clockhangflag bits in hardware.cDONEand fixed
  • improvements to audio.c walkers - count now as signedTESTall walker settings
  • fixed if/else problem with mirrorings
  • foldback onto foldback-TEST!
  • tested with fixed effectmod
  • port formant, fill in all effects and TEST!

formant: file:~/Downloads/Tiny Speech Synth/TinySynth.h

  • EFFECTREAD, WRITE, FILT audio.c! - only 0-7 settings!! FIX!! other option is to remove clipping and put into cases so can expand to 16 options - do and test…

EFFECTXXXX: lowest 2 bits are VILLAGE/GRAIN selection, next is effect, top bit is buffer

  • samplespeed as 16K - TESTED and decide with granulation tests
  • re-organised hardware settings so top bits now set inout
  • test hardware all cases and speeds//all tested
  • shifted machine_count wrapper
  • crash in stackery/stacker-appears fixed but some strangeness
  • simplify direction and wormcode 1, -1 DONE
  • fix 16 bit settings of settingsarray DONE
  • stack/knob/foldback code
  • fixed randi() mismatch in main!
  • added in mirrorspeed

TEXT:

two necessarily entwined processes: the simulation of plague and contagion within a small, medieval village and the actions of virus and leakage on the digital apparatus, the computer which is generating this simulation. There can be no better description of reality, aside from the dark interpreter.

FRI 25 APR

  • somewhere we lose audio in settingsarray! - try to find problem- was in SPEED - DONErestrict
  • test 40106 if leaks and run continuous if not leakyDONE
  • flatten stacks and villager to single arraysDONE///and fixed problems in CA and sim!
  • re-arrange settings to change easily increment for fingersDONE

THU 24 APR

  • do new knob scheme as below-IN PROGRESS
  • where to constrain settings 32768/256 with >> (in defines or?)DONE

but then constrained settings like speeds and so on move too fast (inc as argument to fingerval DONE - but arrange settings so easy to diff this or make inc changed by user)-TO TEST

  • see main.c for stack notes:

~/collect2012-4/dark-interpreter/src/main.c

DONE:

  • so far forgot what to do with villager[x][x] array for grains - work into stacks!DONE
  • we need to make sure all wraps are non-zero (inc overflow)DONE
  • do ifdefs for all changes of ADCs DONE
  • test new integration of villages into EFFECTREAD/WRITE/FILT-DONE

-fixed one issue with second/firstbuf and can add extra effects to 16 or keep as 128 as LIMIT? -added SAMPLEWRAP as constraint on other grainers -digfilterflag zeroes in hardware.c IMPORTANT!

  • test new CA and simulation on ARM DONE
  • test new hardware reduction DONE
  • add in new village option with array of START/WRAPS (array for read, write, filt or one array and set walk-through for read/write/filt) DONE_TO TESTED!

WED 23 APR

RELEASE THU 1 MAY

  • if we use 40106 as control then should do pwm on this all the time???DONE

potential new knob scheme and mirroring:

0/mirror/->/mirror of mirrors/foldback/fingers as micro/macro

1/hardware/->/effects

2/settingsarray/->/ops on this = mirror_on_to_a_section,mirror_axcross,constrain,expand,shift,copy(eg.eeg),contagion

3/stacks(but how to set-withknob?)and how push/pop/->/ops on this as above

4/spare setting knob for stacks and/or mirror right extra

/////

//what settings need to be limited within a range (say 255) and where? //where we change wrap->directions arrays? //wormdir?

//stacks:

push and pop with settings…

operations on sim and CA: max 16x:

  • simulation: stack[stack_pos] with variables… MAX 16
  • CAforstack: stack[stack_posy] with variables… MAX 16

but we would need to re-write so variables are in the stack TODO!done for both TEST!

////

///oldernotes/more abstractThu/Fri

-

  • extras like grain spawn mode, mirroring of settings
  • new constraints of all datagens and walkers(inc foldback to areas only) under micro-macro -> file under ACTIONS again such as mirroring, constraint, expansion, reduction
  • modulation for eeg/adc across settingsarray/otherarrays… dir directly across all arrays
  • wormdir and all TODO

[extras]THU/FRI

  • test LACH board only(remember HW knob change but we still need effects), parts count, recordings/video/manual

-should be also make hardware less complex with single walkerDONE

-reduce effects in audio.c and add in villagewriteetcDONE - but extra village setting to exploit!

  • why does settingsarray settings not go into audio.c//line 450tests - most likely from redroom code? CHANGE or KEEP?. removed from pureleak but still in CPU! TODO?back in
  • test finger code directionsDONE-working
  • smoothing tests doneTESTED
  • abstract out finger code and test-up/down is working!
  • fixed dire issues in audio.c

TUE 22 APR

rewrite as series of embedded stacks mirroring each other: audiostack, settingsstack

notes:

//// SMOOTHY:

[smoothing: My solution for STM ADC is: take 8 samples, get rid of the 2 highest values and the 2 lowest values and average the 4 remaining]

or running average in adc.c DMA2_Stream0_IRQHandler

http://00xnor.blogspot.de/2014/01/7-stm32-f4-adc-dma-temperature-sensor.html

stacks are:

[- exestack: list of stacks to run (list of types 0-3) MAX of 16 (reduce?)]

  • cpustack: this->m_threads[this->m_threadcount] with variables MAX 120
  • pureleak: as above but all stored in buffer…

///vs… // these we can access stacks:

  • simulation: stack[stack_pos] with variables… MAX 16
  • CAforstack: stack[stack_posy] with variables… MAX 16

  • lack of transparency in push/pop settings// also unknown crash???FIXED?

-exestack is somehow wrong as idea but works to re-order execution DONE

  • sim,ca need be re-written so can swop buffers for each stacked itemDONE
  • push and pop/buffer and TEST! - ok-ish

MON 21 APR

  • done away with general speeds as we can alter locals
  • add constraints for hardware effects // start and wrap kindofDONE
  • real walker with step and dir in simulationDONE
  • test filter/leftbuffer effects? testing filter!DONE
  • re-test hang/unhang in hardwareDONE
  • filter and effects as walkers (add to settingsarray means we have > 32)DONE. TO TEST!DONE
  • redo cpuintrev2 with local buffer assign per cpuDONE

SUN 20 APR

  • DONE: do we want to use rdst more in audio.c // monobuffer???? we

use it for leftbuffer only??? // so can discard it when we don’t use leftbuffer

//DONE:***

  • TODOs in each file (check all audio so far) - recheck all TODOs as some are new:

cpuintrev2.c: as above; leakiness and co speeds;steering in wormcode CAforstack.c: buffer constraint in SIR16init-IGNORE! pureleak.c: hardware tie-in for masque; SPL in corewars

  • TODO: chunk movers in simulationDONE
  • all effectsDONE

FRI 18 APR

DONE:

  • settingsarray changed to 16bits (if like keep portion as 8 bit for dirs but…)DONE
  • test hardware walkers with start/wrap and cons DONE
  • implement/TEST new walker scheme (audio) and do away with cons…*TEST*
  • check sqrtf code with float and co…DONE

THU 17 APR

DONE:

[1day]WED

  • simplify read/write in audio.c - DONE
  • TODO // where to map directions to wormdir (now halved)
  • start and wrap code all datagens: is just ca, simDONE. TO TEST!DONE

[2days]THU+

  • do away with wormflag//all walkers with start and wrap, constraints in audio.c DONE
  • assign/map new knobs and all settings re-arranged DONE

WED 16 APR

TUE 15 APR

new ideas/TODO:

  • that grains can set datagen start/wrap settings also (grain spawn mode) and vice versa
  • macro-chunk operations/feedback like this above
  • edge/wrap for read/write become part of mirrored list of walker settings
  • new knobs= push inits + pop (as 2 knobs also with swops of buffers, other datagen settings);micro-macro

DONE:

  • add start and wrap for all datagensDONE
  • mirror (or not) READ/WRITE ops in audio.c and abstract out/down to grain has length 32768 (straight play), grain is determined size, grain is 1-DONE

MON 14 APR

new ideas/more or less DONE?TODO:

some kind of compression of data spaces (so we could restrict datagens to certain areas, restrict foldback to areas - ie. expand and contract)

THU 10 APR

  • playing with cons as % or >> in audio.c -> % is favoured
  • tested edger code…
  • formant code appears to work
  • junked former finger/settings code to main.c.discarded
  • do granulations/complexity make sense/sound okay?SEEMS so - redo maybe overflow

FRI 28 MAR

  • test formant filter from tinysynth below -> ARM!DONE!
  • q of steps in CA and simulationTODO

THU 27 MAR

//?NEW IDEAS?

-datagenarray - shifts so we operate on audioarray (or both? - select in stack?)

so all effects are from this mixed operation (not set or set some mixes/morphs)

(edger becomes more important - where to set? some dark int/double theory to double up all potis/shadows/connections/mirrors)

so we have 8 knobs + mirror===mirror somehow knob (but should do more than mirror)

so let’s say top knob acts as crossover but also with options to mirror one set of settings to other half (or add or subtract, or multiply),also foldback for these settings

mirror and stacks!

so we have top=mirror/darkint

1-hardware 5-filterops/effectops

2-leadingedge 6-topedge - and/or set who that edge is for? HOW?

3-speed 7-complexity/farm off some of settings here (also to speed) 4-settings/foldback.directions/push/pop - and how this works with fingers (fingeroverride?) //8-operations on settingsarray (walker, mirrors, viral etc.) is this foldback?

-or mirror complexity=audiobufferops with filterops and speed with hardware???

////

but for filter/leftbuffer effect we have no buffer spare - should act as mirror with list of ops: mix/multiply left with audio/datagen, write left into audiobuffer or datagenbuffer, playback from place in audiobuffer -> these ops perform at location array[XXX]

formant

http://www.musicdsp.org/showArchiveComment.php?ArchiveID=110 (but if we use floats?)

http://www.p01.org/releases/JS1K_Speech_Synthesizer/

http://smelt.cs.princeton.edu/code/motion/motion-sing.ck

and tinysynth

  • using bit fields to restrict values - is slower on PC?so leave out

eg:

struct flagtype { u16 d : 15; };

  • tests as is (very low hum is present)? PSU? (present when we don’t sample anything in, present with 9v - to do with filter- now do:

    GPIOB->BSRRL = (1<<8);// this gets rid of hum IN hardware.cDONE

  • perhaps lose delay from caforstack and simulationforstack in favour of stepping- deleted delay codeDONE - how to step?

WED 26 MAR

TODO: -control/effects for filter in audio.c -controls/settings - -datagen tests/stackings -fill out all complexity settings -tweaks

  • trying to sort fingers/knobs…

decide so far on for settingsarray:

x knob (when 0 default to fingers) y is up/down/push and pop

how to make all settingsarray the same, viral ops on settings array, all of these as new settings of settings of… black stack… movements thru settingsarray

as last knob - operations on settingsarray->various foldbacks, these ops, also exchanges between: copy, parallel, what else?

-settingsarray(expand/contract) -datagenarray -audioarray

//-> TESTS as below

MON 24 MAR

  • new tests/check code integrity-DONE

FRI 20 MAR

NOTE: settings reduced to 7 bits cos of jitter!

  • add push/pop for finger codeDONE—> TEST
  • codec.c inc. gain (again) DONE - RETEST
  • somehow SIMULATION.h screwed up REDO!!!done after march 21 15.24 reverted files somehow????
  • finger code - dirTEST/ISOLATE_DONE!
  • TESTtry to push/pop poti on all stacks!NEW CODE-seems to work?

THU 19 MAR

////

[marking test settings as TESTER]

  • what if steps are zero??? what else should not be zero. trap this//some fatal/trappedDONE

[but with knobs steps should never be set to zero?]

  • why crash is only manifest with edger and now not? some kind of leakage

///

  • speedups - why sound is so bitty?

///DONE

  • try to make one setting (clear all else and focus)DONEbut is q. hard (maybe limit for set poti can be a setting but where?)
  • basic fingers

WED 18 MAR

1- test new hardware optionsDONE-example code for digfilterbackDONE-TEST!OK!

2- execution stack for datagensDONE-TEST!OK!

3- test new speed settingsTESTEDOK!+// granulationDONE-TEST!OK

4- handling edger via complexity- as set of options/walkersDONE-TEST!OK

///

5- where we do stack push/pulls and the appropriate settings?TEST so far….

6- master foldbacksettingwalker is set where?as extra setting-past end of settings TEST

//////

  • finger setting - up/down, direction-STARTED
  • extend complexity setting
  • effects/filtereffect

////

done

[check filter flags for filterfeedback!]DONE

  • new hardware settings:

in hardware.c maybe enlarge range res2 to 32 (combinations of hangs/unhangs, filter feeds and so on)

add flag for filtermix back in to audio (digfilterflag=32) and TEST simple code there!

MON/TUE 16/17 MAR

complexity:

audio: 0-> for granulation +[ effects, digfiltereffects=settings], edger cases?

effects in straight complexity setting, filter????

//////

settingsarray (replace these with direct DEFINES/aliases) - aim for 32::

main.c:

m->m_leakiness=randi()%255; m->m_infectprob=randi()%255; m->m_mutateprob=randi()%255;

lmer->step=1; lmer->speed=1; wormflag maximer->step=1; maximer->speed=1; wormflag f0106er->step=1; f0106er->speed=1; wormflag hdgener->step=1; hdgener->speed=1; wormflag

simulation: function%NUM_FUNCS,delay,howmany - are these not set on a push! cpu: addr, wrap,CPU%31,delay leak: addr, wrap,CPU%31,delay CA: CA%NUM_CA,delay,howmany]

!leakspeed, machinespeed!

audio.c:

NORMAL: samplestep,samplewrap,samplestart,speed DATAGENWALK: anyspeed,anystep

incoming sample: edger as setting, instep

EDGEWALK: edgespeed,edgestep;

////

  • 2 walkers for effects, filter effects: step,speed

how these work?

////

  • settingarray code

X/Y if Y is 0 then use fingerboard

  • setting of directions? sampledir,anydir, hardware dirs, other walkers for effects?

////

  • all effects
  • further tweaks/TODOs each file - THU/FRI

///////

DONE:-

  • re-try leakage etc. code in cpuint DONE
  • double up audio switches with playback all of datagen DONE. TEST upto 21
  • option for dictated direction of playback (complexity setting)DONE-TEST!->5
  • question of wrap and backwards directions in audio.cTESTED: get rid of wrap. also in main.c. DONE- TEST DONE
  • grain start and end wrap still to solve (with forwards and backwards only)DONE-TEST ALL!DONE
  • TODO:!edge can be own knob on LACH!DONE
  • fractions in audio steps!-DONE with speed wrapper, fixed granulation
  • no jitter in ADC// leakage or swapaudio. and fix runswap/DONE-it was swaps!…
  • finish/test grain codeDONE - re-test!DONE

- REtest ALL datagens TOGETHER APPEARS FIXED but init questionDONE

// crashes in combinations with machine_run (not on its own)

checking CPUintrev2: is not stack, all not initialised (but then shouldn’t run?) CHECK OUT what needs to be inited/running here…

  • move commented code to audio-discard
  • check inits: still crash sans inits (even if init CA)

///

FRI-SAT 14/15 MAR

  • test bulk all 4 datagensDONE, push/pop etc.CAandSIM=CRASH_TOFIX

re-did stack, new syscall.c with brk thing….

CA: problem in cel1d/table(shift to main). not in malloc/free -still there in cel1d/4TODO/FIX(table access)TODO?????

SIM: seems OK,fixes to runsine DONE

cpuint: OK pureleak: crashs frequently-FIXED

- REtest ALLTOGETHER

///

  • finish/test grain code - also normaldir TODO!
  • complexity setting
  • settingarray code
  • all effects
  • further tweaks/TODOs each file

////

  • test ADC limits - HOW/trigger when reach 4095DONE
  • re-test with AD620-TESTED, working

  • hardware wrap… DONE.TEST(simthenreal)REALTOTEST-DONE

RETEST all datagens:DONE

-SIM-tested one by one and all worksDONE, tested full-DONE -CA-DONE -CPUint and pureleak -DONE

  • hardware wrap… DONE.TEST(simthenreal)REALTOTEST

WED 12 MAR

  • re-test floating/hardwareDONE
  • mind the sample gap(how fix?)-edger also no longer as adcDONE
  • re-test clock unhang/hangDONE

[so far so good but strange that speedwrapper is now fast - also maybe seperate wrapper for hardware and datagens!]

  • check TODOs
  • test all stacking/unstackings
  • check extent of ADCs

/////

  • knob code-have array of settings(and walk also thru to set - also with wormdir)
  • samplerate confusion??? do all now in read-in decimation!DONE - to still keep samplerate change on boot?TODOorNOT???

/////

  • knobs redux: 1hard,2speed,3complex,4,5X/Y or set to use directions(if 5 zeroed say?), edger as setting in x/y, or 5 as add/remove stacks

complexity:

audio.c:

complexity->0/straight,1/straight walk,2/wormcode walk,3/datagenasdirwalk,4/walk datagen dir as grains 5/walk datagen dir as samples, 6/walk datagen with wormdir as grains 7/walk datagen with wormdir as samples

????set via walker for effects//complexity????-multiplies above??what does this mean?

main.c:

running of 4 datagens - bitwise

that dir can also be wormdir, sampledir(from fingers) - set thus by complexity?

  • complexity also as bitwise for datagen buffer pointer swappage/reference

settingsarray (replace these with direct DEFINES/aliases) - aim for 64

main.c:

m->m_leakiness=randi()%255; m->m_infectprob=randi()%255; m->m_mutateprob=randi()%255;

WALKERS:

lmer->step=1; lmer->speed=1; lmer->dir=1;lmer->start=1;lmer->end=32767; maximer->step=1; maximer->speed=1; maximer->dir=1;maximer->start=1;maximer->end=32767; f0106er->step=1; f0106er->speed=1; f0106er->dir=1;f0106er->start=1;f0106er->end=32767; hdgener->step=1; hdgener->speed=1; hdgener->dir=1;hdgener->start=1;hdgener->end=65535;

that dir can also be wormdir, normaldir(from fingers) - set thus by complexity?

// what of 4 sets of stack add/remove (they have their settings too // which can still be in settingsarray):

simulation: function%NUM_FUNCS,delay,howmany cpu: addr, wrap,CPU%31,delay leak: addr, wrap,CPU%31,delay CA: CA%NUM_CA,delay,howmany

audio.c

  • walker for edger- replace with step/dir/start/end
  • step for incoming samples/walker? - replace with step/dir/start/end
  • samplestep/walker? - replace with step/dir/start/end
  • walker for datagen
  • 2 walkers for effects, filter effects: step,speed,dir, start, end x2

/// some kind of foldback where walker also sets settingsarray

TUE 11 MAR

  • order for tests…SEGOR-DONE/MOUSER-DONE
  • samplerate changes crash when we don’t do STRAIGHT/ie. use hardware changes/sethardware or pwms???? for whatever reason floating PB9 causes this carsh with the samplerate changing???? - so decide on either - samplerate is a bit crappy!!!DITCH for new samplerate change on startupTODO
  • cleanups/check all TODOs in each file//plan

top knob layout: 2,0,3,4,1

quick knobs: 1hardware=ADC2, 2speed/samplerate(16*16)=ADC0, 3complexity+ADC3, 4settingforup/down(inc add/remove stacks?)=ADC5, 5/edge(edge set as datagen or as straight set)-or 5/add/remove stacks (with edge in up/down)=ADC1

////

10-audiobuffer->grainstart/endSTARTED

11-knobs assignment/direction code

12-effects

MON 10 MAR

[- build/test minimal LACH -DONE

  • maybe increase db on wm8731 (codec.c) DONE]

[- test hardware/datagens/all code so far/clocks unhanging/hang how to test hang/re-hang???with fixed filter/TESTED!]

ad620/ina129 problems/EEG

  • desolder lower potis/DONE/re-test ad620 circuit - test with BATTERY SUPPLY.

adc input is definitely working but even testing just last op07 response of eeg circuit is flat…

replaced ina129 - still no good??? op27s??? rebuild/breadboard

  • ina129 cannot work with 3.3v - try with ad620 AGAIN! (do we have?)

op27 also is problem - need rail-to-rail 3.3v opamp

op295 is dual so NO, ca3140(rail to rail, but 3.3v?), lt6230

tlv271:

http://de.mouser.com/ProductDetail/Texas-Instruments/TLV271ID/?qs=sGAEpiMZZMutXGli8Ay4kDZAgHiRY67V%2fRSA941NXqs%3d

opa337(CHOSEN):

http://de.mouser.com/ProductDetail/Texas-Instruments/OPA337UAG4/?qs=sGAEpiMZZMtCHixnSjNA6Mrdwin7F8A2TZGxYLtT858%3d

SAT 8 MAR

  • for our audio tests with datagens we need cast datagenbuffer

    int16_t buf16 = (int16_t) datagenbuffer;

+pureleak still not so good!

  • also check if same/u16 cast should be done for hardware/clock settings (which is u8 which u16)FIXED/DONE
  • re-test hardware/datagen - seems to work!
  • test clocks and unhanging?->needs code to finish it - coded but

needs TESTING (whether re-hang is working with just re-attach - seems so!)

FRI 7 MAR

  • is adc9 working and how to test(live sample in)DONE

(adc is on pin 9 - connected to 17 on top conn(9 bottom across from left)WORKS

TODO: FRI:

  • re-test datagens: cpu (pc, ARM) -> cpuint we put in wrap (could also be as a flag so that wrap/unwrap for whole buffer)…

and pureleak: lots of fixesDONE

  • what was slowdown in mutate etc/cpurev? in leak FIXED but still cpuint doesn’t sound as good as on PC (WHY? speed of execution but buffer is played back?, randi()-does make change

[- question again of randi() as adc???]

////

reset_clocks function in hardware.c - WRAP in ifdef - no leave as is!

///

5-test all datagen/hardware flags with datagen running _ NEXT WEEK,,, seems OKAY so far!

THU 6 MAR

  • why floor/division crashes in pureleak and cpuintrev - cpu 16/hodgeFIXED

USE FLOORF - no doubles ever…

see: http://www.triplespark.net/elec/pdev/arm/stm32.html

  • test CAforstack.c - all delays in this + simulation changed to u8

problem is all +/- in array read/write! DONE?FIXED-check others for code:

cpuintrev2-Xchecked, pureleak-Xchecked, simulationforstack-Xchecked

RE_TESTING: sim-DONE, pureleak-DONE, cpuint-DONE,CA-DONE

so all datagens should be working…

WED 5 MAR

tests:

CPU: slowed down by leak, mutate etc. to check. otherwise WORKING I think once we init datagenbuffer

PURELEAK: fixing number of threads as buffer0, crashes in cpu==16-floor-hardtofixDONEfloorf!

////

  • test bulk malloc/frees/allocations,DONE

////

  • sampling rate changers as array DONE but bit flakey and is in i2s.c! RETEST
  • speed knob: wrap whole main in speed loop, what other speeds?
  • complexity knob: which stacks we run?

(how remove from stack works ?

if knob not changed add/remove (add which one/ remove top of 4 stacks?)

stacks are: CA, leaky, cpu, simulations

WED 26 FEB

  • for stacks need to manage malloc/free of structures (with case/array) so that multiple instances don’t share same delay and so on DONE/TESTED for stack CA and simulations
  • SINE datagen works in main.c/audio.c but not as STACK runner- NOW DONE (signed char)
  • now stack run works so chances are malloc, free work but test with thorough WORKOUT!DONE

further - from 17 feb:

3-test Nan (which datagens - brussely and co.)

brussels OK, others no sound, FITZ - crashs and on PCSIM 0.0000 FIXEDwith fmodf

4-sampling rate change = see WAN0117.pdf - keep to prescribed table (RETEST for audio length, not resampling as doesn’t sound changed at all???)

is NOT in Codec_Init but register 08 in init_data: codec.c bits 1->6

http://www.wolfsonmicro.com/products/audio_hubs/WM8731/

/////

5-test all datagen/hardware flags with simple datagen running

6-test clocks and unhanging?->needs code to finish it?DONE

7-[construct/test simple board]

8-hard tests on all hard-specific

MON 24 FEB+

  • new knob scheme:

/hardware/complexity/speed/add-sub stacks/selectsettingforpads-directions

how add+sub works on one knob?

  • speed also of how often we sample some knobs
  • stack of various directions, array of all settings which map into real settings

THU 20 FEB

ADC notes:

top knob layout: 2,0,3,4,1 lower knob layout: left: 3,0 right: 2,4,1 diamond:

^ ^ 8 5 VVVV 6 7 V V

testing all ADC - but (8) seems strange/unresponsive - problems with GPIOC? DONE/FIXED - problem was extra GPIO_Init(GPIOC, &GPIO_InitStructure) in hardware.c which cleared structure.

WED 19 FEB-

  • CA.c as stack -> CAforstack.c DONE
  • functions (in sim) to write knob or eeg values into datagen buffer - DONE (nearly- find the knob!)
  • and to swap audio/datagen bit by bit//section by section . DONE runswapaudio

////

  • look into simulationforstack and others as all array???… how all can be indexed by array->arrays!

eg. in CAforstack and simulation for stack we push on stack:

stack[stack_pos].howmuch=randi()%255;
stack[stack_pos].delay=randi()%255;

which need to be set either in push or run through array…

and in CPU and pureleak we have:

cpustackpush(machine *this, u16 address, u16 wrapaddress,u8 cputype, u8 delay)

TODO:maybe add a delay around this//machine_run// for whole cpu????

/// array could be settings we run through when we push to stack and so on… or not

so we could have array of settings (from knob, from other array) which is walked through for actual settings - or vice versa (a map) or something like this!

all is arrays that can be walked or wormed through (we set step, speed and direction)

-> how this could work???

  • knob/index into array, knob/set array value

walk through that array->set settings (how, map?)

where that array is (as knob, as datagen, as audio)…

//one knob adds.subtracts datagen types to/from stacks //speed knob also for how often we update/sample knobs/direction //wormdir and dir from pads

//TEXT:

The Dark Interpreter returns contagious execution to the skin, rewriting the history of technology as the plague which seeks to…

MON 17 FEB+

first test all hardware-specific:

1-test lower potis(hardware), DONE

1.5- problems with ccmdata as wasn’t in flash.ld but if we use 407.ld or add ccmdata to flash.ld we end up with huge binary???

how to test with pointer straight to memory? write&read datagen->audiobufferDONE

also look at:

http://andrei-development.googlecode.com/svn/branches/dev/stm32f3-discovery/Navigation/stm32f30_flash.ld

2- malloc and free: SEEMS okay, but only lite tests//test FREE!!!

3-test Nan(and datagen)

4-[simple board]

5-sampling rates change,

/////

6-test all datagen/hardware flags with simple datagen running

7-test clocks and unhanging?->needs code to finish it?

8-simple buffer and filter code…

then datagen stacks/arrays into

then controls and code steering

complexity

tweaks and sounds/samples/images/publicity/manufacture

THU 6 FEB

  • simulationforstack as all array???… how all can be indexed by array->arrays!
  • start hardware tests
  • all settings as array which can be mapped over datagen array (but differing sizes u16???)

index and setting - what exactly needs indexing (and how much is say add/remove from stack)? see 22 JAN -> we need to set for:

lmer->step=1;lmer->speed=1;lmer->dir=1;lmer->start=1(u16);lmer->end=32767(u16);

so same for 4(total) hardwares (index)+[plus]+audio+filter+2xeffects+fordatagens(?)

(size issue solutions: all u16 or u8?)

  • complexity as bitwise setting flag
  • datagen operations as knob?
  • functions (where?) to write knob or eeg values into datagen buffer and to swap audio/datagen bit by bit//section by section
  • complexity for playback: run thru, run thru with no input(no in as bit), follow dir for chunks, follow dir as pointer to chunks, pointers single samples, pointers to pointers

WED 5 FEB

TODO- break down to arch. specific tests and do these:

test lower potis, test Nan, malloc, simple board, sampling rates change, hardware flags with simple datagen running, simple buffer code…

  • further code: knobs, how to reach all settings, buffer processes
  • update notes for pureleak, simulationforstack and CPUintrev2(is as before):

:: pureleak:

cpustackpushhh(buffer,addr,addr+randi()%65536,randi()%31,randi()%255); machine_runnn(buffer);

:: simulationforstack:

allocate memory for unit! func_push(stack,runconv,convinit,unit,xxx); // todo maybe as array//u8 as identifier also for malloc func_runall(stack,xxx);

so we have 1-CA=run specifics(as stackTODO?DONE), 2-CPU stack, 3-pureleak stack, 4-simulation stack as time-sharing processes in datagenbuffer!

////

  • re-init for simulationforstack - how- we now have it in funcpush???
  • fix cpuint issues below -> CPUintrev2.c FIXED but messy and test all CPUs from 6upDONE, move ifndefsDONE
  • finish porting all to pureleak.c DONE
  • check for randi()%65536 - how is handled??? with ifdef - but all are in mainsDONE

TUE 4 fEB 2014

  • in complexity setting we could select have 2 knobs as selectors or up-down as settings
  • hardware tweaks/output (filter settings) in CPUint.c // now CPUintrev2.c
  • problem in simulationforstack as all delay limits are shared (or use as array-DONE) and maybe array for howmuch (movements through stack)-done as part of stack structure
  • further problems with access to unit -> now fixed!
  • fixed m_pc bug in CPUint.cDONE
  • TODO 8bit bug in CPUint.c with machine poke always to 8 bit addressDONE

WED 29 JAN 2014 +

  • if we do make stack of function pointers then each function (in simulation.c we start to test this) needs to cast void to relevant struct DONE

//but is more complex as we need to init (and maybe malloc) each as we add/free from stack - one answer would be to malloc one instance of each, and add init/re-init with flag to running - or init/re-init in stack push?

now as simulationforstack.c DONE

  • pureleak.c - called by complexity setting??? - all memory and parameters are in the datagenbuffer (based on CPUint.c)DONE

TUE 28 JAN 2014 +

  • do lower potisDONE, build simplest, photos, test potis/straight thru on both
  • test new hardware ops in main (counter wrap)DONE, u8 castDONE
  • test cpuint, simulation (NaN), malloc on ARM
  • datagen stackDONE
  • generic speed setting

MON 27 JAN 2014

  • specify potis by way of inside (fine &x) and outside >> bitshift settings
  • what relations could be between post-filter and input (we can go straight out/thru 40106 but still switch in digital filter and mix left INTO right)… but where to spec. - in complexity (as hardware settings are full)

TODO: add as extra 2 options in hardware.c with control by complexity (marked as **TODO)

  • fix count problem in simulation.c and leakage in CPUint - TO TEST in full…
  • for some reason when use malloc in main need to provide _sbrk stub???

(as we don;t use it elsewhere as that is defined for pc code)

according to:

https://sites.google.com/site/stm32discovery/open-source-development-with-the-stm32-discovery/getting-newlib-to-work-with-stm32-and-code-sourcery-lite-eabi

all mallocs should be TESTED

  • how to index into settings easily?

SAT 25 JAN 2014

notes on datagens/olde:

CPUint.c:

machine *m=(machine *)malloc(sizeof(machine)); machine_create(m,buffer); // this just takes care of pointer to machine and malloc for threads m->m_leakiness=randi()%255; m->m_infectprob=randi()%255; m->m_mutateprob=randi()%255;

cpustackpush(machine *this, u16 address, u16 wrapaddress,u8 cputype, u8 delay) -up to max of 30 CPUs

and:

machine_run(m); (which can also be slowed/delayed with surrounding delay)

////////////////////

CA.c:

specific inits and specific:

count=runSIR16(count,1,buffer,howmuch,unit);

////////////////////

simulation.c: - see updates above

specific inits and specific:

//runfitz(uint16_t count, uint16_t delay, uint16_t workingbuffer, uint8_t howmuch, struct Fitz unit)

WED 22 JAN 2014

poti list (top down= 2,0,3,4,1):

0-hardware(2) (and for Lachrymarum? - options: repeat up/down of 4finger-mod, simply leave off this knob, or as end of sample in (edger style))

1-micro->macro with cross - how? (0) - mods the cross/so for example code/sample steering enabled, add/subtract from stack..? also see modifier below

2-edge (for incoming samples) (3) DONE

3-SPEED///modifier (4) - re-inits, add to stack, memory exchange, cpu-swap factor, samplerate, leakiness, mutation rate, digital filter effects, granular or not, chaining of datagens (new stack) … or most as in 1 above

// here focus on speed/and/step but these are for each CPU and/or for: samp/hard/clocks

[changing sample rates only possible for usual 1-44.1, 2-16, 3-48, 4-96, 5-8, 6-88.2 KHz]

so we could have 0-5 on outside for sample rate and perhaps generic speed multiplier for all on inside!

4-complexity (1) - signal straight thru/no write/sample by simple datagen/effect/granulation/meta-pointer-to-pointer/effectonsample(bitwise thru all!) /wormthrubuffer/othermovementthrubuffer

max number of cpus, of datagens…

///

<^> - as finger = up/down set position in stack/settings-(micro-macro), left/right mod settings… V

or knob as position in stack/settings and use left/right to set these (and up and down just for direction?)

  • steps/path/speed through 1-sampledatagen counter/dir // 2-hardwareswitch into datagen // 3-filterops into datagen // 4-clocks into datagen

shorthand above as samp/hard/clocks

//eg.xxxx(samp/hard/clocks)->step,position,direction(into array),speed,start,end

(but also how often we want to update hardware and clocks which are different, also samp has granular start/end option)

refine all to ops in datagen-buffer/swaps with samplebuffer movements through datagen-buffer

// TODO:

  • 16 bit math ops in cpuint - DONE and also fixed float error in hodgeDONE
  • fix simulation.c overflow possibility - SHOULD be fixed - DONE!
  • first attempt at audio buffer (how to restrict to 32768 index & 32767)
  • test lower layer potis
  • does NaN cause problems or not?

TUE 21 JAN 2014

  • memory management _DONE/still untested
  • outline flow -DONE

MON 20 JAN 2014

  • testing 16 bit SIR -DONE
  • CPUint.c: note that infection only updates cpu cells when it is run

infection, mutation now as machine characteristics (swap not yet implemented)

added and tested hodge cpu…

extern u8 wormdir 

—> is wormcode direction

swapping of cpus is possible but we never call this function

TUE 14 JAN 2014

  • 16 bit SIR code

FRI 10 JAN 2014

  • delay for each CPU-DONE
  • test pointers to int/char - seems work OK

general TODOs:

//for CPUint:

hodge.c CPU, test new functions and note that infection only updates cpu cells when it is run

also question of wrap on and wrap off functions… and wormcode steering buffer

  • much more

//for CA:

16 bit SIR // in progressDONE

THU 9 JAN 2014

  • oops we can’t store 65536 ints for simulation.c (only)! FIXED with overflow of 800 bytes to save on mods…

WED 8 JAN 2014

TODO:

  • TODOs from each file
  • new ADC - re-test with DMA// DONE - but need to test lower board alone!TODO
  • for lone lower board hardware.c sans hanging - IFDEF!
  • changing sample rates only possible for usual 44.1, 16, 48, 96, 8, 88.2 KHz

TUE 7 JAN 2014

RESOLVED with latest makefile

  • now with all flags works with -mfloat-abi=hard
  • downloading new ARM toolchain as described on first site below.
  • note also that we changed all doubles to floats in simulation.c

//older…>

// so after new toolchain only compiles if we use:

LD      = $(PRG_PREFIX)ld

rather than gcc as indicated on site below (lots of VFP register errors)

  • now with gcc and a few changes:

and we still have problems with the one malloc in cpu.c and with fmod!

  • now with -mfloat-abi=softfp which should still use FPU compiles but still:

undefined reference to `_sbrk

  • now solved with additions:
LFLAGS_END = -lm -lc -Wl,--gc-sections

perhaps useful for ref: http://www.embedded.com/design/mcus-processors-and-socs/4007119/Building-Bare-Metal-ARM-Systems-with-GNU-Part-1–Getting-Started

https://my.st.com/public/STe2ecommunities/mcu/Lists/STM32Discovery/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2FSTM32Discovery%2FlibPDMFilter_GCC.a%20%28pdm_filter.o%29%20does%20not%20uses%20VFP&FolderCTID=0x01200200770978C69A1141439FE559EB459D75800084C20D8867EAD444A5987D47BE638E0F&currentviews=668

https://wiki.debian.org/ArmHardFloatPort/VfpComparison#A.22softfp.22

//just to rewind: was compiling fine with hard from brombaugh makefile before rand (to replace) and fmod, malloc…

Note: for toolchain following triplespark below but without dev branch (just as:

 git clone git://github.com/esden/summon-arm-toolchain

note tho that malloc was not in stm code only in pc code

MON 6 JAN 2014

  • question of malloc, sin, rand(replace with ADC), fmod, also with array init!

hardware floating point issue see:

http://www.triplespark.net/elec/pdev/arm/stm32.html

SOLVED: other refs:

http://www.eevblog.com/forum/microcontrollers/stm32f4-arm-none-eabi-gcc-not-linking-to-math/

https://github.com/libopencm3/libopencm3/pull/65

OK getting there with Makefile - now problem with fmod (commented to fix) and also undefined reference to `_sbrk (in mallocs in CPU.c) - something to do with newlib

see:

http://balau82.wordpress.com/2010/12/16/using-newlib-in-arm-bare-metal-programs/

https://sites.google.com/site/stm32discovery/open-source-development-with-the-stm32-discovery/getting-newlib-to-work-with-stm32-and-code-sourcery-lite-eabi

http://embdev.net/topic/266617

FRI 3 JAN 2014

  • idea- grain stack as indexes into codebuffer(index can also be further ref to memory) - indexes generated by datagens, also by worms/directions and so on

worm windows

  • added simple CPU and datagens (freq table, add, subtract)
  • leaky.c renamed to CPU.c
  • fixed bug in count in simulation.c (retest SIR!_DONE)

DONEall hardware testing: straight throughDONE, our defineDONE, any bleedDONE, feedback switchPC13DONE,40106 pwmDONE,all hardware switches…

  • re-test new hardware/pcb/constructed TO TEST-DONE
  • new hardware switches to note:

switch audio input on/off via PC13 (pin 2) DONE

40106 on TIM1_CH2 (pin 42) DONE/coded I think DONE

TUE 31 DEC

// datagentest is now simulation.c

//how SIR_CA can work with 16 bits per cell or somehow as parallel?

simplest version more crush,loop,granulate (hence controls)

64k max sample buffer size

MON 30 DEC

TODO: port hodge into CA.c, CA style SIR code in CA.cDONE

THUS there are 3 sorts of datagen: CPUs, float-style simulations, cellular automata

all of which are writing across 64k buffer space which grain parameters can move in directions across (as a worm or CPU itself again) and also exchange data with…

window into each!

TODO: re-do leaky.c for larger cellspace/overlaps

  • add wrap/limit and cellsize to each cpu if make full cell space

—-

  • added more ant code…

http://www.google.com/url?q=http://arxiv.org/pdf/1202.1639&sa=U&ei=xXXBUpq_K8jNswal3IHYDA&ved=0CDAQFjAD&usg=AFQjCNHLwRHZkmxORJkDZN0wwj7JnVvA3g

—-

  • each cell has population which can travel/move across cells

SEIR model- number of pop of: suscept, exposed, infected, recovered

see: http://users.dickinson.edu/~siglej/131/materials/labs/lab03/handout.html

FRI 27 DEC

  • turmite and ant code added as CPUs to leaky.c (total now 14 CPUs)
  • TODO add for datagens: CAs(2xone dim, life, two dim)DONE,

working on hodge: microbd version, old hodge.c version, just found version is hodgenet in sim. mod each so is just one line at a time…

//

  • place all into datagens and resolve huge buffer question (perhaps that simulation-style datagens write history consecutively into working buffer but reserving first part for settings)
  • war of “real” datagens/cpus

THU 26 DEC

-knob->samplerate -worm/ant as sample-er

:::leaky.c

  • port all microbdDONE
  • “real” redcodeDONE - still needs SPL!
  • potential other stack based machines:

malbolge: converts all of memory first for interpreter so no-go befunge: possible… http://en.wikipedia.org/wiki/Befunge DONE stack1: http://www.ece.cmu.edu/~koopman/stack_computers/sec3_2.html#321 DONE

  • differentiate cpus and other datagens? competing for buffers?
  • stack code to add and subtract CPUs and bring into main code for ARM

MON 23 DEC

  • 1-stacks for grains/villagers 2-stacks for CPUS, mix, merge, leak each other

WED 4 DEC

for stack machine/forth see:

http://www.ece.cmu.edu/~koopman/stack_computers/sec3_2.html#321

http://www.holmea.demon.co.uk/Mk1/Architecture.htm

BIOTA=befunge: http://en.wikipedia.org/wiki/Befunge

malbolge

TUE 3 DEC

  • decided just read buffer as 8 bit so no conversion and have uint_16t as limit of 655536 for working buffer which can also point into audio buffer
  • how we deal with offset into working buffer for datagen settings
  • have just audio and datagen/working buffer or 1,2,3 buffers audio,datagen results, working
  • TODO: test NaN, fix biota and after that port all micro/BD code (make each microcoded/cpu as threaded (as is sample leaky stack code)

MON 2 DEC

datagen work:

questions/TODO:

  • will NaN from supercollider code crash ARM?
  • 8/16bit (inline?) conversion code - buffer at end of codebuffer but if overlaps?
  • are datagens flexible enough in terms of use?

notes in meantime

  • list of chunks also as a stack which can be pushed and popped
  • D.I text - projection/de quincey. site of execution is the skin. worm code and plague code becomes contagious on the skin…

see last old notebook notes

MON 18 NOV notes

PCB checklist:

  • still filter question! kind of resolved with extra cap!
  • drcX
  • non-connsX
  • eye checkX
  • gnd and power/all analogue linesX
  • sanity check of new changes+once over eyes/components/viasX
  • check all layersX
  • DRCX
  • check size for dc socket/printX
  • zonesX
  • redo-eye-checkX
  • punch viasX
  • gerbers and check ORDERED

new PCB summarised for coding:

  • switch audio input on/off via PC13 (pin 2)
  • 40106 on TIM1_CH2 (pin 42)

FRI 15 NOV TODO

-as below - trying filter resistor (was 33k replacing now with 100k)- no great change -as below - 16bit->8bit when port instruction sets

try r11 as 100k seems improve somewhat

added optional cap next to r11 for filter (100n with 100k and 100k pwm for filter)

-finish/overview of PCB:

losing Nreset cap as was just debounce?

WED 13 NOV TODO

  • question of 8/16 bit translation for datagens

do we use a function to convert x buffer back and forth (not possible for any size of buffer!)

  • also if we have 3x datagens writing to same buffer - either do matrix with offsets into buffer or ….
  • start to port supercollider datagensDONE-to test and tweak as questions are acceptable inputs and also how to reset and some protection of locals in workingbuffer
  • also how to use datagens eg.worms to steer grains or are these seperate?

all should be in workingbuffer so can be used…

  • ringing filter mods 13700=r27 try as 100k

notes on modes/movement

key as being mirror and freezing!

x x x finger direction grid depending on mode: x

1- code movement (how? does this work only for instruction sets?) 2- grain movement 3- movement through stored datagen/parameters 4- micro-macro levels 5- read/write buffer, storage buffer, flip-flop

TUE 12 NOV TODO

  • start datagens
  • PCB as below

backwards/forwards through stored datagen space as general feature (not of datagens)

say we have datagens 1,1,1 then we store just 1 …

generic datagen 1,2,3 as three levels (also with different timing and macro levels) and we assign real datagens to these

then we have hardware matrix

  • confusion as there are potentially 3 buffers: 1-audio, 2-operating(though this can be also 1- or 3-), 3-back/forward datagen storage
  • mirroring and doubling between these and datagens…

datagens remain as they are

MON 11 NOV TODO

  • re-test hardware knob and audio out FIXED so does not re-init
  • add power socketDONE and check if can do simplified audio route for v basic D.I: DONE

these can be done with additional jumpers: on U2 4053:pins 12-14, on 10,11 on U3, next to incoming audio CHECK ALL

working on REVISING2

PCB CHECKLIST:

  • new track widths for all audio/adc 0.5mmDONE
  • look where we have xtal,pwm and I2S signals crossing audio/adcDONE

TODO- check new additions/changes

  • ground plane AGND/DGND????
  • any refinements to filter?-tests
  • check&tidy/zonesandvias/re-checkall/SEND!

///

  • assign parameters/knobs - mode knob, no. of grains and other macro settings

in length/cycle… out length?

one knob selects setting, other assigns setting (or 2 settings knob)

1-hardware assigned 2-param 3-assigned to setting 4-??? 5-mode: how we distribute grains/overlap, micro/macro crossover

forwards/backwards/grid for datagen->filter/pwm

datagen->hardware

1,1,1 2,2,2 3,3,3 1,2,3 3,2,1 usw… how many=27 (cut down?)

  • start on datagens/port from wormcode/new datagens/clean up

FRI 8 NOV TODO

TEST:– attempt to use new pin 42 and thin wire for new PWM tests (and reconnect 40106) *WIRED

TIM1 CH2 - ?? WORKING

  • now test all hardware options DONE

//

  • test unhanging (and how works with top board)DONE and works well though could be more options of what to hang?
  • and re-hangDONE
  • revising bottom design (see all notes below) + [bridge for optional 3.3v powers 40106???]

///

[think on adding signal-> 40106 into filter clock?]

  • brainstorm re-design//programming

//

test audio->40106->clock of MAXIM filter

THU 7 NOV TODO

  • suddenly huge amp noise when we use 40106power… into LINEINR - fixed when shift TIM2 to TIM4 but shouldn’t be issue for new 40106 routing DONE (still some issues here…) UNSOLVED
  • re-test with ADC DMA - no good/can use multiple in one go sans DMA? - have to set channel each timeDONE
  • test all hardware options // one by one OKAY - though didn’t test 40106!

1uF for incoming divider is better (CHANGE size on plans) DONE

TODO: larger caps on 40106 power if that helps

Is PWM or 40106 the problem as now no audio with 40106 PWM (TIM4)?

  • detached power from 40106 and R5 connection to lm358 and still have

(worse) noise problems

– can only attempt to use new pin 42 and thin wire for new PWM tests!

//

  • test unhanging (and how works with top board) and re-hang
  • revising bottom design (see below) + finish and send

knob notes:

1-HW 2-macro/attachment for 3-datagen select 4-parameters for above datagen 5-application of datagen…???? grainsize somehow on micro/macro

  • 4 arrows —-> left/right code movement/speed… up/down as length sample????

WED 6 NOV TODO

new design notes:

PC13 (pin 2) switches audio in!

TIM1 CH2 is for now 40106 PWM

//add caps/extra pads?/check&tidy/anydesignQ?/zonesandvias/re-checkall/SEND!

ground plane AGND/DGND????look where we have xtal,pwm and I2S signals crossing

TODO:

  • test with ADC cap///single ADC
  • re-test with ADC DMA
  • test new averaging scheme
  • test all hardware options
  • test unhanging (and how works with top board) and re-hang

My solution for STM ADC is: take 8 samples, get rid of the 2 highest values and the 2 lowest values and average the 4 remaining

//- revising bottom design (see below)

- datagen should also be tied to full hardware switch

///

STARTED with hardware switches but ADC jitter makes impossible or is some other problem!

Most noise is on AVDD:

Suggestions for re-design:

  • AVDD line thicker and clearer tracked
  • moving AVDD filter closer to potis and AVDD chip
  • AVDD cap/s(1Uf and 10nF) close to chip (between 12 and 13- VDDA and VSSA)

(c21 and c13 should be closer to chip)

  • AVDD caps close to potis or at least around and about
  • see other design notes(fix pwm, fix input bias), lose poti strips, make bottom less symmetrical…

///TODO:

see if can insert 100n close to AVDD for testing?DONE and works better

test chip caps (soldering), 40106?(remove/check) NOT DONE!

how much in software can be done - slow down, averaging? RECHECK

//THOUGHTS->

  • how we can simplify, less touch points and reduce to one board??? OR NOT???

PROs: reduce filter crap and parts count (not so much-could lose 4053), lose top connector, not so much hanging

TUE 5 NOV TODO

  • to easily try with other 4066? or do we need to bias incoming and if so where?

other hc4066 works but only biasing audio->cap->resistor divider works

could also use U6 extra pins…

bias where we have feedback label straight on jack

gets rid of all bleed on input!! (in 4053 and other)

  • test pulse and width for LM13700 DONE

///

  • clean up hardware switches drastically TODO - but it works

STARTED with hardware switches but ADC jitter makes impossible or is some other problem!

  • if we just have hardware switches to poti as all switch binary options very simply mapped to pins (what if all on say? or rather reduce options)

but then also option to untie all clocks and to untie switches themselves

-untie each/all switches (total 10 bits) -untie each/all clocks // in parallel to untie all switches and all switch options (3 bits) -tie each datagen to each clock (3 x 3 =4 bits???) -bitwise for switches (10 bits) - somehow with untied -which datagen determines whole set of bits for above (ie. all switches)

a switch can be on/off/untied/datagen tied(and which of say 3)? = 6 states = 3 bits

so 30 bits switches+4clocks=34! so needs be simplified by re-mapping

eg. some bits only if filter is on make sense

//note also filter can be detached on one side so leftaudio goes ONLY to filterin

///

MON 4 NOV TODO:

where is map of pads? ON WALL!

how many bits is ADC? 12 bits = 0->4096

what should LM13700 PWM be like? 39KHz? check! - replaced routine with same as maxim - to be cleaned up!

to test fingers/potis - fingers done…TESTED WORKING

poti fingers - some effects on top board but not on bottom as no generators

///

problems are:

  • bleedthrough 4053, 4066 (what if was replaced with non HCT - check resistance - will it switch?)
  • we can’t cut input signal out of loop // re-test if feedback somehow does this? NO - but can still keep as option
  • ringing in the filter - maybe change PWM timing? TEST

otherwise

1-all hardware switches working

////

hardware:

  • is feedback bleed so bad when we have signal? YES!

also problem is how to cut feedback from justin (as we have this on 4053)

so leave feedback for now and do some of this in software…

  • testing feedbackX, LM358 - main signal bleeds also through
  • test EEG signals:

no results: bad solder (redone), bad design (recheck - checked),

remade all and now works??? is in adc_buffer[9[]

  • how avoid filter ringing? look at filter signal path (re-solder all also) DONE

coding:

issues

NEW DESIGN fixs!

  • audio bleed is through 4066 feedback switch (even when off - perhaps add resistor to signal path (pin 2) - TEST! - with 10k is very minimal bleed

what we’ve done is added 20k from pin 12 of 4053 to pin 2 of 4066 (detached from pcb) to insert 20k in path from JACK in (but would need to change design so for first 10 leave without feedback path!)

  • power consumption seems high? TEST THIS
  • some issues with ringing of lm13700 in filter feedback path

programming

PATH=~/sat/bin:$PATH
PATH=~/stm32f4/stlink/flash:$PATH
make stlink_flash

connection on own board is VDD, SCLCK, SWDIO, GND (so last 2 are swapped from STLINK board)

older TODO:

0- all code structure with headersDONE

1-audio codec/left and rightDONE

2-hardware switchesDONE

2.5-test audio in/out straight DONE but 4053 seems not quite right RETEST. FIXED

2.6 get knobs and touch sensors in TO TEST. TESTED ADC0 (2nd knob down) TEST TOUCH (lower and top)DONE

4-PWM/interrupts TO TEST nearly DONE

4.5-fingers//EEG//LM358IN DONE

///

5-filter and all hardware switches nearly DONE

5.6-buffer treatment tests/ideas.

6-datagens - backwards, code chunks, symmetry, code direction and recoding/rechunking

(read from lists of grain size and position, what to do if fill buffer part way through grain?)

7-stack/frame -> stack machine in buffer

8-final tests and release

code notes

  • micro-macro slider/control for all ops.

grains as villagers/following instructions +read/write head

-plague village/turing tape combination. -random walk through code/sample space. swapping those 2 buffers(past/future)… fingers select code movements

perhaps some kind of succession of read/write/code buffers with grainsize as process…

various mapped movements through these buffers

and also finger as code movement - let’s say 4 directions, a kind of cross controller., but also fingers or some way of activating a matrix signal path (through buffers, through distortion and feedback)

also control speed/playback

-an architecture/x buffers are switchable

-some way of using fft//grains as villagers

-grains as multiple executable threads

  • xread/write/instruction pointer
  • revisit promiscuous
  • multiple threads which share stack/registers/memory space but which have seperate code/cpu identity and/or have leaky stacks

software filters

moog voltage controlled lowpass filter of 4th order from http://www.musicdsp.org

see also: http://www.kvraudio.com/forum/viewtopic.php?p=5184160

code

./audio.h:13:#define BUFF_LEN 128 /2 for stereo=64

48000 samples per second = 750 buffs per second

yes looks like. how to adapt to write/read individual locations from large buffer

-is 64 our smallest grain size or do we change this? -array of sample locations for each sample (generated by main code)

  • big buffer or 3x buffer
  • macro-micro
  • port micro-bd/wormcode
  • note 3 blocks SRAM : 112KB + 16KB + 64KB (64 is ccmdata see delay code)

notes from notebook

  • all pads should be enabled (hardware knob)
  • concentric code lines (grain, buffer, time)
  • turing machine
  • contagion back/forwards in time - time axis manipulation
  • de quincey texts
  • micro/macro code and grain chunks - grains ordered//chunks ordered
  • code chunks shifted by hand
  • villagers/grains/barriers/walls

assembly of code chunks…

datagens: number of data returned, buffer, step-size, direction

algos=supercollider, micro+BD, isometric worms

knobs:

1-hardware/filter switches** 2-speed/stepsize 3,4-datagen for each macro level 5 macro level, direction.

or writegen/readgen on knobs

code movement on pads

questions

  • how many bits is audio codec set to?

16 bits so at 48k we have 96k samples per second = around 1 sec

at 8k we have 6 sec… TO DECIDE (can also cut down bits)

  • how to work on micro-macro levels for code and grains/villagers
  • how and where barriers are installed…
  • do we work with 64 as lowest chunk size (or lower in chunklist/writeloc approach or hardwired)

this should be set as BUFF_LEN in:

I2S_Block_PlayRec((uint32_t)&tx_buffer, (uint32_t)&rx_buffer, BUFF_LEN);

buffer question

1-

macro as list of grains/villagers which can be moved (by hand) read/write

(but how many, general size?)

micro as manipulation of buffer itself/churn (how?)

and how this translates into chunk for callback

2- what is worm/BD model???

  • interrupt at samplerate reads/writes sample at read/write points determined async by algorithms and outputs sample/mix (of read/write pointer)

further/code gens

latestresearch/sc3-plugins-src-2012-05-26/source/SLUGens/SLUGens.cpp

http://doc.sccode.org/Classes/FitzHughNagumo.html

also Oregonator (reaction.diff), brusselator…

Patterson’s worms…