Looper's Delight Archive Top (Search)
Date Index
Thread Index
Author Index
Looper's Delight Home
Mailing List Info

[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 code


As 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.