Tap Tempo LFO with PIC 16F684

Started by ElectricDruid, May 13, 2009, 05:22:13 AM

Previous topic - Next topic

JKowalski

Quote from: potul on January 14, 2010, 04:27:04 AM
I realized today that the site is not working in my Google Chrome. If I use IE, everything is fine.

Regards,

Potul

Huh, that's strange. I use Google chrome and every time I check it's up and running with no problems...?

potul

that's weird... Maybe related to the cache... don't worry.

JKowalski

Alright, I hope you manage to figure it out!

I am working on putting the wave distort feature from the VCLFO into the TAP LFO chip right now. I have it basically finished, the pulse width CV is now the wave distort CV with duty cycle control of all the waveforms.

I am considering messing with the available waveforms.... For example, taking out of the noise source and replacing it with something different. My first thought was a 90 degree phase shifted sine wave - while this would have the same waveform as the other sine wave normally, it would 1. allow the waveform to be started at a different point in time relative to your tapping, and 2. offer new possiblities with the wave distort (it will distort differently then the other sine wave, see the first waveform in the table below)

Here's a table of what I was thinking (middle is standard wave, either side is different wave distort directions):


ElectricDruid

Wow, there's been a lot of really great work going on here! Well done!

JKowalkski, if you're still struggling with a place to host files, I'd be only too glad to put them up on a page of their own on my website. I think the various options and mods you've done are ace, and I'm particularly impressed you managed to get it into an 8-pin chip. I'd thought it couldn't be done, but I should have known better than to tell a PIC hacker that something's impossible!

I'd be very interested to see the schematic for your optical trem too. Did you have to alter the datasheet design much? Anything you learned that I should put it the next revision to save other people some messing about?

For the record, changing the waveshapes on the chip isn't that difficult, and I could post a version without the random wave (if that's the least useful) but with a "user-alterable" table. You *could* just about make up some numbers and type them in, but using your favourite programming or scripting language is the better option. I actually used PHP to generate the original sine table, but you could use Matlab/Octave, or C/C++ or your faourite graphic calculator or etc etc...basically anything that prints a list of numbers.

BTW, I *am* currently on holiday, but I haven't forgotten about sorting out programmed chips for those without the wherewithall/desire to program PICs.

Thanks everyone - it's great to see this chip "out in the wild"!

Tom

JKowalski

Quote from: ElectricDruid on January 14, 2010, 06:37:43 PM
Wow, there's been a lot of really great work going on here! Well done!

JKowalkski, if you're still struggling with a place to host files, I'd be only too glad to put them up on a page of their own on my website. I think the various options and mods you've done are ace, and I'm particularly impressed you managed to get it into an 8-pin chip. I'd thought it couldn't be done, but I should have known better than to tell a PIC hacker that something's impossible!

I'd be very interested to see the schematic for your optical trem too. Did you have to alter the datasheet design much? Anything you learned that I should put it the next revision to save other people some messing about?

For the record, changing the waveshapes on the chip isn't that difficult, and I could post a version without the random wave (if that's the least useful) but with a "user-alterable" table. You *could* just about make up some numbers and type them in, but using your favourite programming or scripting language is the better option. I actually used PHP to generate the original sine table, but you could use Matlab/Octave, or C/C++ or your faourite graphic calculator or etc etc...basically anything that prints a list of numbers.

BTW, I *am* currently on holiday, but I haven't forgotten about sorting out programmed chips for those without the wherewithall/desire to program PICs.

Thanks everyone - it's great to see this chip "out in the wild"!

Tom

You are back! Well, sort of  :icon_biggrin:

I managed to get a website up for my files, they are in a good place now. If you wanted to put them up on your site to I wouldn't mind, after all they are just basically modifications to your code!

My optical trem was basically the same as in your datasheet. The only real differences were putting a trimpot as the feedback resistor on the second op amp for volume adjustment, and an inverter chip for buffering LEDS, inverting the clock output, and buffering the sync out pins (not that they really needed it).

Oh, are you still planning on putting the wave distort feature back into the chip? I figured I was on a roll with the mods and might try doing it myself but I am sure you could end up with a much more refined code... My work is basically:

1. Try to figure out what it does and how
2. Cut and paste
3. Integrate
4. Troubleshoot

I managed to get the WD feature into the chip and working correctly with my blunt methods, but there are two things I still need to work out:

1. A way to get a good clock output from the chip (the wave distort duty cycles the clock output, so I need to find a way to keep it 50% and at the original speed, or ideally 2x the original speed for proper chip-to-chip syncing) I'm not entirely sure how to go about this yet... I was thinking flipping the clock output at the start of the phase accumulator part A, but then that would divide the speed by two and I'd rather multiply it by two...

2. How to get the random wave working correctly again (only works when the wave distort CV is at it's highest setting at the moment, haven't looked into it yet, but then again I might not use it anyways)

JKowalski

#85
Quote from: JKowalski on January 14, 2010, 07:47:25 PM
I managed to get the WD feature into the chip and working correctly with my blunt methods, but there are two things I still need to work out:

1. A way to get a good clock output from the chip (the wave distort duty cycles the clock output, so I need to find a way to keep it 50% and at the original speed, or ideally 2x the original speed for proper chip-to-chip syncing) I'm not entirely sure how to go about this yet... I was thinking flipping the clock output at the start of the phase accumulator part A, but then that would divide the speed by two and I'd rather multiply it by two...

2. How to get the random wave working correctly again (only works when the wave distort CV is at it's highest setting at the moment, haven't looked into it yet, but then again I might not use it anyways)

Nevermind I figured something out. I just ran a separate linear phase accumulator in parallel with the wave distort-able one and used that for 50% duty frequency increments. Using bit 6 instead of 7 of the phase accumulator gave my 2X the speed for the output as well (why on earth did I not think of that?) The random works fine now as well.

I guess I will package it up and put in on my site tomorrow afternoon.



One thing I think is really neat about digital effects is their versatility after they are built. For example, since the PIC is the controller for the tremolo pedal I made and all features of it come from the LFO section, I can build the pedal and make major changes in the way it works just by editing code and reprogramming the chip! I don't know why but that's fun  :icon_rolleyes:

3080

tremolo comming soon. i will post here the final version too. here is the populated pcb:



i can't find anybody who can write to the PIC... but searching :)
ElectricDruid and JKowalski... well... all i can say: thanks!
it was really nice from you to public the codes/schematics.

G. Hoffman

Quote from: 3080 on January 16, 2010, 12:26:05 PM
i can't find anybody who can write to the PIC... but searching :)

There are a plethora of DIY PIC programmers out there, and the PICkit 3 isn't all THAT expensive, if you really feel like it and think you are going to want to do more with PICs. 


Gabriel

3080


JKowalski

Don't know if anyone was waiting for it but I uploaded the TAPLFO with the WAVE DISTORT feature (duty cycle for all waveforms) on my site a bit ago. 3080, your switching system will work the same with the wave distort. God idea!

JKowalski

Another PWM output solution:

It's easy to change the 0-5V LFO output to any voltage range. For example, say you want a 0-9v Analog LFO output. You just put the PWM output into a CMOS buffer with 0/9v supply and filter the output of THAT. Now you have a 0-9v analog LFO after filtering. 5/-5v? Use a +5/-5 supply CMOS buffer (or anything very high gain)

If you want to get a... say 3-6V P-P LFO wave output, to get around the supply rail limitations for most op amp inputs (they cant go ALL the way to their supply rails) just put a potentiometer on the output of the CMOS buffer (or op amp) to divide the digital PWM signal down to the voltage range you need.

The PWM output is actually VERY versatile.

3080


flo

Looks awesome!  8) Any gutshots with that?  :)

Is that printed on transparant sheet or something?
Perhaps you can post the graphics because they look great!

duffman0733

where can we find the schematic for this pedal?

3080

Quote from: duffman0733 on February 07, 2010, 02:25:32 PM
where can we find the schematic for this pedal?

... maybe in a topic called Tap Tempo LFO with PIC 16F684  ::)


3080

Quote from: JKowalski on January 27, 2010, 01:48:16 PM
Another PWM output solution:

It's easy to change the 0-5V LFO output to any voltage range. For example, say you want a 0-9v Analog LFO output. You just put the PWM output into a CMOS buffer with 0/9v supply and filter the output of THAT. Now you have a 0-9v analog LFO after filtering. 5/-5v? Use a +5/-5 supply CMOS buffer (or anything very high gain)

If you want to get a... say 3-6V P-P LFO wave output, to get around the supply rail limitations for most op amp inputs (they cant go ALL the way to their supply rails) just put a potentiometer on the output of the CMOS buffer (or op amp) to divide the digital PWM signal down to the voltage range you need.

The PWM output is actually VERY versatile.

which CMOS you prefer?

JKowalski

#97
Quote from: 3080 on February 08, 2010, 12:48:16 PM
Quote from: JKowalski on January 27, 2010, 01:48:16 PM
Another PWM output solution:

It's easy to change the 0-5V LFO output to any voltage range. For example, say you want a 0-9v Analog LFO output. You just put the PWM output into a CMOS buffer with 0/9v supply and filter the output of THAT. Now you have a 0-9v analog LFO after filtering. 5/-5v? Use a +5/-5 supply CMOS buffer (or anything very high gain)

If you want to get a... say 3-6V P-P LFO wave output, to get around the supply rail limitations for most op amp inputs (they cant go ALL the way to their supply rails) just put a potentiometer on the output of the CMOS buffer (or op amp) to divide the digital PWM signal down to the voltage range you need.

The PWM output is actually VERY versatile.

which CMOS you prefer?

Well it doesn't even have to be CMOS, just anything that can buffer a digital signal. It just has to be able to trigger on the 0-5V PWM and output a x-yV digital signal. I prefer CMOS digital chips because they are simple to use and they waste less power then other methods. Any ol' chip under the sun that can do the above (logic gates, inverters, digital buffers) would be usable. You just got to make sure the supply voltage ratings aren't exceeded.

3080

Quote from: JKowalski on February 08, 2010, 12:57:17 PM
Quote from: 3080 on February 08, 2010, 12:48:16 PM
Quote from: JKowalski on January 27, 2010, 01:48:16 PM
Another PWM output solution:

It's easy to change the 0-5V LFO output to any voltage range. For example, say you want a 0-9v Analog LFO output. You just put the PWM output into a CMOS buffer with 0/9v supply and filter the output of THAT. Now you have a 0-9v analog LFO after filtering. 5/-5v? Use a +5/-5 supply CMOS buffer (or anything very high gain)

If you want to get a... say 3-6V P-P LFO wave output, to get around the supply rail limitations for most op amp inputs (they cant go ALL the way to their supply rails) just put a potentiometer on the output of the CMOS buffer (or op amp) to divide the digital PWM signal down to the voltage range you need.

The PWM output is actually VERY versatile.

which CMOS you prefer?

Well it doesn't even have to be CMOS, just anything that can buffer a digital signal. It just has to be able to trigger on the 0-5V PWM and output a x-yV digital signal. I prefer CMOS digital chips because they are simple to use and they waste less power then other methods. Any ol' chip under the sun that can do the above (logic gates, inverters, digital buffers, hell even flip flops) would be usable. You just got to make sure the supply voltage ratings aren't exceeded.

i will try it with 40106...

JKowalski

Quote from: 3080 on February 08, 2010, 01:01:32 PM
Quote from: JKowalski on February 08, 2010, 12:57:17 PM
Quote from: 3080 on February 08, 2010, 12:48:16 PM
Quote from: JKowalski on January 27, 2010, 01:48:16 PM
Another PWM output solution:

It's easy to change the 0-5V LFO output to any voltage range. For example, say you want a 0-9v Analog LFO output. You just put the PWM output into a CMOS buffer with 0/9v supply and filter the output of THAT. Now you have a 0-9v analog LFO after filtering. 5/-5v? Use a +5/-5 supply CMOS buffer (or anything very high gain)

If you want to get a... say 3-6V P-P LFO wave output, to get around the supply rail limitations for most op amp inputs (they cant go ALL the way to their supply rails) just put a potentiometer on the output of the CMOS buffer (or op amp) to divide the digital PWM signal down to the voltage range you need.

The PWM output is actually VERY versatile.

which CMOS you prefer?

Well it doesn't even have to be CMOS, just anything that can buffer a digital signal. It just has to be able to trigger on the 0-5V PWM and output a x-yV digital signal. I prefer CMOS digital chips because they are simple to use and they waste less power then other methods. Any ol' chip under the sun that can do the above (logic gates, inverters, digital buffers, hell even flip flops) would be usable. You just got to make sure the supply voltage ratings aren't exceeded.

i will try it with 40106...

That will work perfectly. Just remember though when you invert the PWM signal you invert the LFO, so if you want it back to the original you have to invert it again somewhere down the line. Or you can just use two inverters in series.