FV-1 Multi effect full forum project ready to go. (ShimmerVerb Also)

Started by Ice-9, September 08, 2013, 09:23:49 AM

Previous topic - Next topic

Ice-9

Looking good Athos, I see you opted for no battery /PSU only. Great to hear it is working first time. I'm also looking forward to more people getting involved in the programming side.
www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

Athos

Yea no battery. I don't want to add to the environmental problems caused by disposables!

The led is on the back side as I am using a light plate... :icon_idea:

This was a good build though and as I said earlier the pedal sounds great.

I want to experiment with some basic effects such as a straightforward delay. and perhaps a chorus. Then with luck on to the stranger side of things!!

Pic will be on order soon so I will keep everyone posted!

A

kooroshi60

Quote from: slacker on November 05, 2013, 01:30:58 PM
Fair enough. Yeah I gave up on looking for BCD/HEX switches pretty early on, the best I found were the same ones scuzzphut posted but these are a bit big if you're trying to build a compact pedal, plus they're a D shaft which limits your knob choice.

I've just been looking at rotary encoders instead of switches you can get small ones of these with detents for a couple of quid, one of those and a PIC might not be a bad way to go. The detents would reduce the chance of accidentally turning the pot and changing the patch if that's the objection to using a pot, I assume that's what Piet was referring to earlier.

By the way, if you're interested I've tweaked my code to run on a cheaper 12F615 PIC, about 30p less for the DIP version. This is a direct replacement for the earlier version, there are cheaper PICs you could use but the pinout would have to change.


;3 bit glitchless A2D converter
;Version 2 12/10/2013
;          __________
;   VDD ---|        |--- VSS
;       ---| 12F615 |--- Bit 0
; CV In ---|        |--- Bit 1
;       ---|________|--- Bit 2

   list   p=12F615
   #include <p12f615.inc>
    __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOREN_OFF)

   cblock 0x40
   new
   current
   count
   endc

   org 0

Start:
    banksel GPIO
    clrf GPIO          ;clear GPIO
    movlw 07h
    movwf CMCON0       ;turn off comparators
    banksel ANSEL
    movlw b'00010000'  ;set pin3 as input rest as output
    movwf TRISIO
    banksel ANSEL
    movlw b'00011000'  ;set pin3 as analogue input (AN3)
    movwf ANSEL
    banksel ADCON0
    movlw b'00001101'  ;turn on ADC on AN3 left justified
    movwf ADCON0

Mainloop:
   nop                 ;wait for a bit
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   banksel ADCON0
   bsf ADCON0,GO       ;Do ADC
   btfsc ADCON0,GO
   goto $-1

   banksel ADRESH
   movf ADRESH,w
   movwf new           ;write upper 8 bits to new register
   swapf new,f         ;swap upper and lower bits
   rrf new,w           ;move 1 step to the right bits 5,6,7 now in positions 0,1,2
   andlw b'00000111'   ;clear 5 upper bits
   movwf new           ;write back to new register
   subwf current,w     ;subtract from current value
   skpz                ;skip next line if zero ie:- new = current
   goto counter        ;if new <> current goto counter
   movlw b'11111111'   ;reset count to 255
   movwf count
   goto Mainloop       ;back to the start

counter:
   decfsz count,f      ;deduct 1 from count, if count = 0 skip the next line
   goto Mainloop       ;if count > 0 go back to the start
   movf new,w          ;if count = 0 move value of new to current
   movwf current
   banksel GPIO
   movwf GPIO          ;and send to GPIO
   goto Mainloop       ;back to the start

   end


I can't find 12F615. Would you please post the code for PIC12F683? Thank you

therealfindo


Ice-9

Deleted as wrong post
www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

Ice-9

Quote from: kooroshi60 on December 31, 2013, 04:26:47 PM
Quote from: slacker on November 05, 2013, 01:30:58 PM
Fair enough. Yeah I gave up on looking for BCD/HEX switches pretty early on, the best I found were the same ones scuzzphut posted but these are a bit big if you're trying to build a compact pedal, plus they're a D shaft which limits your knob choice.

I've just been looking at rotary encoders instead of switches you can get small ones of these with detents for a couple of quid, one of those and a PIC might not be a bad way to go. The detents would reduce the chance of accidentally turning the pot and changing the patch if that's the objection to using a pot, I assume that's what Piet was referring to earlier.

By the way, if you're interested I've tweaked my code to run on a cheaper 12F615 PIC, about 30p less for the DIP version. This is a direct replacement for the earlier version, there are cheaper PICs you could use but the pinout would have to change.


;3 bit glitchless A2D converter
;Version 2 12/10/2013
;          __________
;   VDD ---|        |--- VSS
;       ---| 12F615 |--- Bit 0
; CV In ---|        |--- Bit 1
;       ---|________|--- Bit 2

    list   p=12F615
    #include <p12f615.inc>
     __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOREN_OFF)

    cblock 0x40
    new
    current
    count
    endc

    org 0

Start:
     banksel GPIO
     clrf GPIO          ;clear GPIO
     movlw 07h
     movwf CMCON0       ;turn off comparators
     banksel ANSEL
     movlw b'00010000'  ;set pin3 as input rest as output
     movwf TRISIO
     banksel ANSEL
     movlw b'00011000'  ;set pin3 as analogue input (AN3)
     movwf ANSEL
     banksel ADCON0
     movlw b'00001101'  ;turn on ADC on AN3 left justified
     movwf ADCON0

Mainloop:
    nop                 ;wait for a bit
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    banksel ADCON0
    bsf ADCON0,GO       ;Do ADC
    btfsc ADCON0,GO
    goto $-1

    banksel ADRESH
    movf ADRESH,w
    movwf new           ;write upper 8 bits to new register
    swapf new,f         ;swap upper and lower bits
    rrf new,w           ;move 1 step to the right bits 5,6,7 now in positions 0,1,2
    andlw b'00000111'   ;clear 5 upper bits
    movwf new           ;write back to new register
    subwf current,w     ;subtract from current value
    skpz                ;skip next line if zero ie:- new = current
    goto counter        ;if new <> current goto counter
    movlw b'11111111'   ;reset count to 255
    movwf count
    goto Mainloop       ;back to the start

counter:
    decfsz count,f      ;deduct 1 from count, if count = 0 skip the next line
    goto Mainloop       ;if count > 0 go back to the start
    movf new,w          ;if count = 0 move value of new to current
    movwf current
    banksel GPIO
    movwf GPIO          ;and send to GPIO
    goto Mainloop       ;back to the start

    end


I can't find 12F615. Would you please post the code for PIC12F683? Thank you

I'm sure it was already posted earlier in the thread but here it is again for the 12F683


;3 bit glitchless A2D converter
;Version 1 05/09/2011
;          __________
;   VDD ---|        |--- VSS
;       ---| 12F683 |--- Bit 0
; CV In ---|        |--- Bit 1
;       ---|________|--- Bit 2

    list   P=PIC12F683
    #include "P12F683.INC"
     __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _IESO_OFF & _FCMEN_OFF & _BOD_OFF)
     
    cblock 0x20
    new
    current
    count
    endc

    org 0

Start:
     banksel GPIO
     clrf GPIO          ;clear GPIO
     movlw 07h
     movwf CMCON0       ;turn off comparators
     banksel TRISIO
     movlw b'00010000'  ;set pin3 as input rest as output
     movwf TRISIO
     banksel ANSEL
     movlw b'00011000'  ;set pin3 as analogue input (AN3)
     movwf ANSEL
     banksel ADCON0
     movlw b'00001101'  ;turn on ADC on AN3 left justified
     movwf ADCON0
     
Mainloop:
    nop                 ;wait for a bit
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    banksel ADCON0
    bsf ADCON0,GO       ;Do ADC
    btfsc ADCON0,GO
    goto $-1

    banksel ADRESH
    movf ADRESH,w
    movwf new           ;write upper 8 bits to new register
    swapf new,f         ;swap upper and lower bits
    rrf new,w           ;move 1 step to the right bits 5,6,7 now in positions 0,1,2
    andlw b'00000111'   ;clear 5 upper bits
    movwf new           ;write back to new register
    subwf current,w     ;subtract from current value
    skpz                ;skip next line if zero ie:- new = current
    goto counter        ;if new <> current goto counter
    movlw b'11111111'   ;reset count to 255
    movwf count
    goto Mainloop       ;back to the start

counter:
    decfsz count,f      ;deduct 1 from count, if count = 0 skip the next line
    goto Mainloop       ;if count > 0 go back to the start
    movf new,w          ;if count = 0 move value of new to current
    movwf current
    banksel GPIO
    movwf GPIO          ;and send to GPIO
    goto Mainloop       ;back to the start

    end

www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

Ice-9

Quote from: Athos on December 31, 2013, 01:07:26 PM


I want to experiment with some basic effects such as a straightforward delay. and perhaps a chorus. Then with luck on to the stranger side of things!!

Pic will be on order soon so I will keep everyone posted!

A

When you get your programmer give this bit of code a try, it is a simple delay/echo program that works quite well.


;Echo/Deleay New delay line (work in progress)

;Pot0 = Feedback
;Pot1 = Echo level
;Pot2 = Delay

;memory declarations:

mem   delay   32767

;register equates:

equ    potfil1    reg0   
equ    potfil2    reg1   
equ    mono    reg2
equ    dout    reg5
equ    dx    reg6
equ    lpf    reg7

;declare constants:

equ    fbk    0.95

;clear registers and initialize LFOs:

skp    run,endclr
wrax    lpf,0
endclr:

;sum inputs to mono:

rdax    adcl,0.5
rdax    adcr,0.5
wrax    mono,0   

rdax    dout,fbk
mulx    pot0
rdax    mono,1
wra    delay,0

;now get delay output, controlled by pot2:

rdax    pot2,1
sof 0.95,0.1 ;limit delay range
rdfx potfil1,0.001 ;filter pot value
wrax potfil1,1 ;write filter register, keep in ACC
rdfx potfil2,0.001
wrax potfil2,1
wrax    addr_ptr,0    ;write address pointer


rmpa    1      ;read pointer
rdfx    lpf,0.5
wrlx    lpf,-1
wrax    dout,1
mulx    pot1      ;adjust level with pot1
mulx    pot1      ;square  function
wrax    dx,1      ;write level adjusted delay out
rdax    mono,1      ;pass input
sof    1,0.02
wrax    dacl,0
sof    1,-0.04
wrax    dacr,0
www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

Ice-9

Quote from: Govmnt_Lacky on December 31, 2013, 07:28:57 AM
Quote from: Athos on December 30, 2013, 08:29:13 PM


Athos,

You might want to look at where you drilled your hole for the DC power jack. Doesn't look like its on the right side bro!  :-\

EDIT: Nevermind.... I see you are wiring it in  ;)

Just worth noting, the 3 slot pads at the bottom left of the PCB are not for a psu jack, they are used for a little spring clip which can be used to ground the pcb to the enclosure. I can't get these in the UK so use an alternative ground point which is at the top of the PCB just above the top left potentiometer, (I run a single wire from there to the pot casing, or simply connect the leg from one of the pots ground connections to the bodyof the pot).
www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

therealfindo

Finished mine!! Thanks Mick for all the help.. it's a great little unit



Reverse etched design.. Doesn't do wood.

therealfindo


Ice-9

Quote from: therealfindo on January 16, 2014, 10:34:15 AM
hmm... getting a fair bit of fizzy clipping...

Looks great,
Fizzy clipping ? Did you test the effect before boxing up ? was it working correctly then ? Try turning all the knobs low on the reverb program and see if the sound still clips. I have found a flat battery causes clipping but I think you are not running with a battery ? You could also try turning the vol down on your guitar to test if the clipping disappears. Let me know how you get on as the clipping isn't normal.

The other thing that springs to mind is a bad op amp. Another builder had a problem with low volume and clipping and it turned out to be the opamp.
www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

therealfindo

yeah I did test it before boxing.. but it was pretty late and so I didn't really notice till this morning when I turned the amp up a little (and it's worse with my hot-tele pups).
I tried changing the op amp, but still the same problem, though I might try and get a new one from the store tomorrow, as maybe the run I got from Tayda is bad..?

With everything turned to 0 and using a power plug, it still crackles a bit.

I did install the IRFD9024 the wrong way around and had to solder it.. it took a bit of getting off too, so I wonder if I might have fried that a little.. would that affect the sound if it was a little cooked?

Ice-9

Quote from: therealfindo on January 16, 2014, 11:50:31 AM
yeah I did test it before boxing.. but it was pretty late and so I didn't really notice till this morning when I turned the amp up a little (and it's worse with my hot-tele pups).
I tried changing the op amp, but still the same problem, though I might try and get a new one from the store tomorrow, as maybe the run I got from Tayda is bad..?

With everything turned to 0 and using a power plug, it still crackles a bit.

I did install the IRFD9024 the wrong way around and had to solder it.. it took a bit of getting off too, so I wonder if I might have fried that a little.. would that affect the sound if it was a little cooked?

With the builds I have made I use a guitar with really hot humbucker pickups (Seymour duncans and EVH pickups) and don't get any clipping, so even a hot tele pickup should be ok.
Are you using the guitar into the pedal then into the amp or is it somewhere in an effects chain ?
Can you try in your amps Fx loop. (best place for reverbs and delays) and see your results.
The IRFD9024 is there for polarity protection in case power is applied the wrong way round, so if the pedal is working then the 9024 should be ok.
Are you using a battery ?? (a dud battery will cause clipping for sure)
Also does turning the volume control on the guitar down eliminate the clipping ?
www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

slacker

Might be worth double checking the soldering on the Fv1. On one of my builds I had a bad joint and the chip worked but the signal was distorted.

therealfindo

Ok... so I picked up a new TL072 (a TI one) but still no improvement. The FV-1 solder looks good.

Here's a sound demo (using a PSU, not a battery.. excuse the playing):

First is with the unit in the amp's fx loop

0:00 - Off
0:16 - On (all three pots at 0)
0:27 - On (pots turned up a bit)

Then with it before the amp:
0:41 - Off
0:52 - On


Govmnt_Lacky

I noticed that Pin 5 of the FV-1 is not connected to anything but, just wondering if there needs to be some kind of resistance on that pin to compensate for clipping. Either that or it is something in the coding.

Directly from the Spin site:

"The CLIP LED is optional, but will flash for approximately 30mS if the internal ADC or DAC are driven to within a few tenths of a dB of a full scale. Any overflow from internal processing that does not produce a near full scale output will not light the clip LED."
A Veteran is someone who, at one point in his or her life, wrote a blank check made payable to The United States of America
for an amount of 'up to and including my life.'

Digital Larry

Digital Larry
Want to quickly design your own effects patches for the Spin FV-1 DSP chip?
https://github.com/HolyCityAudio/SpinCAD-Designer

Ice-9

Pin 5 can be left open if not being used to drive an LED, as Digital Larry mentions, check the PSU voltage and if you can measure the voltages on the PCB for appx 9v and a good 3.3v at the regulator.

Listening to the sound clip It sounds like there is no clipping when in the amp's fx loop but direct into front of amp there is definite clipping. Unless your guitar has a huge output level this should not happen. I wonder if you are able to test out on a different amp.
Also I ask again what happens if you back the guitar volume down a bit, does it still clip on the amps input ?
www.stanleyfx.co.uk

Sanity: doing the same thing over and over again and expecting the same result. Mick Taylor

Please at least have 1 forum post before sending me a PM demanding something.

therealfindo

There's definitely clipping when it's in the loop too, it's just smoother :D
Rolling the volume pot down doesn't make a difference either.

On the plus side, I get to learn how to use my multi-meter and measure voltages!

Am I correct to think that the black lead should connect to the G pin of the regulator? I did that, and then touched the Red lead to the S and then tried it on the D pins.. got the same reading: 7.45
So... I'm guessing it means the regulator is somehow a bit fried..?

I don't have another one hand to try swapping (though I do have a 78L33 - would that do the same job?)

Edit: ok, I'm a n00b, I was measuring the polarity protector mosfet...   :icon_redface:

Thoughts?

therealfindo

OK.. having now measured the regulator  :icon_cool: it doesn't seem to be the problem, as I'm getting 6.68 on one side (closest to jacks.. the regulator input, yeah?) and 3.11 on the pin closest to the top.. I also tried swapping it out for a new one.. still getting distortion with the hot-pickups. I can't really notice it with my other Tele..