Hej igen och tack för all respons.
Jag ska kolla in isoleringskretsen och jag ska vara noga med det. Enbart ett 9v-batteri ska driva instrumentförstärkaren. Och jag ska 
inte köra 9V genom kroppen!
Grunden till basicprogrammet hittade jag på internet - någon hade gjort ett förenklat oscilloskop som ritade kurvan på insignalen med hjälp av DLL-filen FMOD. Jag har modifierat programmet en del, men har absolut inte gjort något EKG-program av det, jag har bara testat så att jag kan lagra den data jag får in med väldigt låg samplingshastighet (då 44100 Hz är lite onödigt för en EKG-kurva!) samtidigt som jag visar inkommande data i realtid på skärmen.
Nu var det ett tag sen jag pysslade med det programmet - projektet har legat nere ett par månader (mycket jobb och familj) och jag upptäckte att jag gjort några olika versioner och minns inte vilken som är vad (jag orkar inte boota Windows nu där jag har min freebasic)
Så här ser det i alla fall ut, skrivet i FreeBASIC:
' Catching waveform direct from microphone or line-in
' I have a much better example here... 
' M a t t h e w   H a r t 
' modified by Jens Hallgren  
OPTION EXPLICIT
#INCLUDE ONCE "fmod.bi"      
' Init constants for FMOD
CONST FALSE = 0
CONST BUFFERSIZE = 2^14
CONST BUFFERBYTES = BUFFERSIZE * 2
CONST SAMP = 11025  ' 44100 original
IF( FSOUND_Init(SAMP, 32, 0) = FALSE ) THEN
        PRINT "Can't initialize FMOD"
        END 1
END IF
DIM AS INTEGER Rec_Buffer
' for sample lock
DIM s_ptr1 AS SHORT PTR 
DIM s_ptr2 AS SHORT PTR 
DIM offset AS INTEGER 
DIM length AS INTEGER 
DIM s_len1 AS UNSIGNED INTEGER 
DIM s_len2 AS UNSIGNED INTEGER
DIM i AS INTEGER
DIM c AS INTEGER
DIM x AS INTEGER
DIM AS INTEGER itr,cycles
DIM AS DOUBLE t
DIM j AS DOUBLE
DIM y AS INTEGER 
       
' nya
DIM max AS DOUBLE 
DIM mmax AS DOUBLE 
DIM medel AS DOUBLE    
DIM s AS INTEGER ' position på skärmen från 75 till 640
DIM amp AS DOUBLE
' This is the amount of bytes behind the
' record cursor that we want to lock.
' Each sample is 2 bytes, so we want
' to get twice the width of the screen
' in bytes.
length = 128
' set screen resolution
SCREENRES 640,480,8,1
' create the palette
FOR i = 0 TO 255
IF i > 127 THEN c = i*2 
IF i < 32 AND i>1 THEN c=64-i
IF i > 192 THEN x = i * 1.7
PALETTE i,i,c,x
NEXT i
                                                                  
' start the record buffer
Rec_Buffer = FSOUND_SAMPLE_Alloc (FSOUND_UNMANAGED, _
                        BUFFERSIZE, FSOUND_NORMAL, SAMP, 255, _
                        128, 255)
FSOUND_Record_StartSample ( Rec_Buffer, 1)      
t = TIMER
itr = 0
s = length/2+10
DO              
                max=0
                IF TIMER > (t + 1) THEN
                        t = TIMER
                        cycles = itr
                        itr = 0
                        LINE (s,y-10)-(s,y),255
                END IF
                itr += 1
                
                offset = (FSOUND_Record_GetPosition() * 2) - length
                IF offset < 0 THEN offset += (BUFFERBYTES)
                
                IF FSOUND_Sample_Lock (Rec_Buffer, offset, _
                                length, @s_ptr1, @s_ptr2, @s_len1, _
                                @s_len2) = 1 THEN
                        
                        SCREENLOCK
                        ' plot buffer contents
                        LINE (0,0)-(length/2+1,479),0,bf
                        PSET (-1,y),255
                        x = 0
                        y = 240
                        
                        FOR i = 0 TO (s_len1 SHR 1) -1 
                                
                                
                                j = ((s_ptr1)*.002)+y   
                                IF abs(j-y)>max THEN max=abs(j-y)
                                LINE -(x,j),255
                                x+=1
                                IF x > 640 THEN x = 0:y += 150: PSET (-1,y),200   
                                
                        NEXT i
                        
                        ' if the buffer has wrapped then get the
                        ' second chunk (at the start of the buffer)
                        IF s_ptr2 THEN
                                LOCATE 3,1: COLOR 200: PRINT "Wrapped!"
                                FOR i = 0 TO (s_len2 SHR 1) -1
                                        j = ((s_ptr2)*.002)+y 
                                        IF ABS(j-y)>max THEN max=ABS(j-y)
                                        LINE -(x,j),200
                                        x+=1
                                        IF x > 640 THEN x = 0:y += 150: PSET (-1,y),200
                                NEXT i
                        END IF
                        
                        LOCATE 1,3: COLOR 255: PRINT "Real-Time Audio Data Capture    "; 
                        IF max>mmax THEN mmax=max 
                        medel=(medel*100+max)/101
                        mmax*=.99
                        
                        IF mmax<0 THEN mmax=0
                        s +=1
                        IF s>640 THEN
                            s=length/2+10
                            'LINE (0,0)-(639,479),0,bf 
                        END IF
                        PRINT "Cycles per second: = "; cycles ;" max = ";INT(mmax*500);INT(medel *500)
                        amp=3
                        LINE (s+1,12)-(s,479),0
                        LINE (s,y+mmax*amp)- (s,y-mmax*amp),(mmax*2 AND 255)+10
                        LINE (s,y+medel*amp)- (s,y-medel*amp),s/5+50
                        LINE (s,y)- (s,y-max*amp),s/6+90    
                        pset (s,y),255
                        
                        SCREENUNLOCK
                        
                        FSOUND_Sample_UnLock (Rec_Buffer, @s_ptr1, @s_ptr2, s_len1, s_len2)
                ELSE
                        PRINT "Something CRAZY just happened!"
                END IF
                  SLEEP 1
LOOP WHILE INKEY$ = ""
FSOUND_Record_Stop
FSOUND_Sample_Free(Rec_Buffer)
FSOUND_Close
SLEEP
END 
Readme-fil:
Caption
program för att fånga insignalen från mic eller line-in
---
Av Jens Hallgren ( tack till Matthew Hart )
skapad med Freebasic och JellyFish Pro Editor
---
installation:
lägg programmet (capture.exe) samt filen fmod.dll i samma mapp
starta genom att dubbelklicka på capture.exe
avsluta genom tangenttryckning 
  en gång - ger stillbild
  en andra gång - stänger programmet
capture.bas är källkoden i Free-basic
---
felsökning:
" hittar ej fmod.dll" - prova att lägga fmod.dll i mappen C:\windows\
slät linje / ingen signal - gå in i volymkontrollen (högerklicka på högtalaren i windows)
välj "öppna volymkontroller" - alternativ - egenskaper
välj inspelning - (tryck OK) - justera volymkontroller för inspelning
kolla att "ljud av" inte är markerat
---
skärmbild:
fältet till vänster visar vågformen momentant
kurvan till höger är uppdelad i tre fält som alla visar volym.
avståndet mellan två vita linjer motsvarar en sekund förfluten tid
1) momentant värde
2) medelvärde under de senaste sekunderna
3) maxvärde som sjunker logaristmiskt med tiden.
---
utdata
 -  data till fil - ej klart
        [/quote]
och en screenshot på en variant av programmet som visar bla. medelvärde av insignalen... (skulle användas i ett annat sammanhang)

en variant av programmet

en annan variant (mest lik koden ovan)[/quote]
EDIT: jag vet inte varför bilderna inte visas, men här är en länk: 
screendump