[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]  
[
Date Index][
Thread Index][
Author Index]
re: Jeff's scratching - a pseudo VHDL code
please restate your response in the form of a question .......
yes ...... drop ten 5 - ditto hp ....... reunion tour cancelled on account of food poisoning .... stop ....... gem lexington overnight ..... stop ......... will call when paris is taken .... stop
or did I miss something ?
Actually ..... thats pretty similar to the algorythm we were talking about .... which is implemented by flyloops ..... and could be reworked to do the same (loop scratching) in Mobius it sounds like.  You seem to have forgotten that when released .... you dont want to return immediately to normal playback speed though, you need to ramp up. 
that is all, ciao
I havent actually been reading this thread until this last post though ...... so lemme know if there was an actual question somewhere .... hooahh ... tonight we will shave the mountain!
From: "Rainer Thelonius Balthasar Straschill" <rs@moinlabs.de>
Sent: Sunday, August 31, 2008 11:30 AM
To: Loopers-Delight@loopers-delight.com
Subject: Jeff's scratching - a pseudo VHDL codeAs an extension to my last message, here is some pseudo VHDL code (that's
because I'm not at all familiar what scripting language can do right now -
what's the status of the documentation?) to describe what I think needs to
be done:
-- I won't deal with variable declaration here
-- things we get externally: "controller", which is an integer describing
the finger position, "finger", a boolean stating whether the finger is on
-- the controller or not, finally "clk", a clock for the process. There's a
constant "clk_delta", which is the clock half-period in ms.
-- 
process scratching is
begin
	wait until finger'event and finger	-- wait until you put a
finger on the controller
	pause						-- pauses playback
	direction_s <= direction 		-- used to store playback
direction (Forward or Backward)
	rate_s <= rate 				-- and rate
	ctrl_last <= controller			-- store current finger
position
	ctrl_last2 <= controller
	loop: scratching				-- inner loop;
active while finger is on the controller
		wait until clock'event
		if controller = ctrl_last AND controller = ctrl_last2	then
			pause				-- pause playback if
finger hasn't moved for last two clocks
		elsif controller != ctrl_last then
			play
			ctrl_delta = controller - ctrl_last
			if ctrl_delta > 0 then	-- check for playing
direction
				if direction_s = forward then
					forward
				else
					backward
				end if
			elsif
				if direction_s = forward then
					backward
				else
					forward
				end if
			end if
			pbspeed = ctrl_delta/clk_delta	-- playback speed
scale factor is the controller delta since last clk'event divided by
clk_delta
			rate = ln(pbspeed)*17,3123404906676 -- ugly scale
factor to convert from pbspeed to rate
		end if
		if not finger then
			exit scratching				-- exit from
loop
		end if
	end scratching loop
	-- if in the loop the finger is lifted, we resume here
	direction <= direction_s
	rate <= rate_s
	play
end process scratching
Hope that helps to explain what I'm after. Aaron, I'd also like to hear your
comments if you'd like.