|
|
|
07-16-2014, 01:22 PM
|
#1
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
EEL/LUA: Take envelope scripts
Edit. August 04, 2015 - Lua scripts in post#26
Take envelope scripts (EEL/Lua scripts, needs SWS extension):
1) Create take volume envelope from active take in other takes in item:
2) Store envelope source take (stores active take's ID only)
2a) Paste take vol envelope to active takes in same group
2b) Paste take vol envelope to active takes in selected items
(Store and paste take vol envelopes to active takes in same group):
Download:
https://stash.reaper.fm/21228/Store%2...scripts%29.zip
The zip file contains: - Create take vol envelope from active take in other takes in item.eel
- Create take pan envelope from active take in other takes in item.eel
- Create take mute envelope from active take in other takes in item.eel
- Create take pitch envelope from active take in other takes in item.eel
- Store take envelope source.eel - This is meant to be used together with the following scripts:
- Paste stored take vol envelope to active takes in selected items.eel
- Paste stored take pan envelope to active takes in selected items.eel
- Paste stored take mute envelope to active takes in selected items.eel
- Paste stored take pitch envelope to active takes in selected items.eel
- Paste stored take vol envelope to active takes in same group.eel
- Paste stored take pan envelope to active takes in same group.eel
- Paste stored take mute envelope to active takes in same group.eel
- Paste stored take pitch envelope to active takes in same group.eel
Last edited by spk77; 08-04-2015 at 08:22 AM.
|
|
|
07-16-2014, 01:28 PM
|
#2
|
Human being with feelings
Join Date: Oct 2013
Location: Argentina
Posts: 1,303
|
Dude, this is fabulous! I´ll test them as soon as I can! Thanks so, so much!!
|
|
|
07-16-2014, 01:41 PM
|
#3
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Quote:
Originally Posted by Soli Deo Gloria
Dude, this is fabulous! I´ll test them as soon as I can! Thanks so, so much!!
|
Thanks! They work quite ok ( and are currently meant to be used) with multitake items.
They might work with items that starts at the same position also.
|
|
|
07-18-2014, 01:18 AM
|
#4
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Zip file updated - these are added:
- Paste take mute envelope from active take to other takes in item.eel
- Paste stored take mute envelope to active takes in selected items.eel
- Paste stored take mute envelope to active takes in same group.eel
...and of course, the scripts can be combined by making a custom action:
|
|
|
07-18-2014, 02:32 AM
|
#5
|
Human being with feelings
Join Date: Apr 2011
Posts: 3,451
|
Great! Thank you very much spk77! :-)
|
|
|
07-20-2014, 11:36 AM
|
#6
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Added: - Paste take pan envelope from active take to other takes in item.eel
- Paste stored take pan envelope to active takes in selected items.eel
- Paste stored take pan envelope to active takes in same group.eel
- Paste take pitch envelope from active take to other takes in item.eel
- Paste stored take pitch envelope to active takes in selected items.eel
- Paste stored take pitch envelope to active takes in same group.eel
|
|
|
07-20-2014, 11:57 AM
|
#7
|
Human being with feelings
Join Date: Nov 2010
Posts: 2,436
|
Code:
Paste take pan envelope from active take to other takes in item
May I just recommend to rename this to something like this:
Code:
Create take pan envelope from active take in other takes in item
Because technically, to paste something you need to copy it first. That, and it can get confused with other similar scripts that paste stored envelope.
|
|
|
07-20-2014, 12:15 PM
|
#8
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Quote:
Originally Posted by Breeder
Code:
Paste take pan envelope from active take to other takes in item
May I just recommend to rename this to something like this:
Code:
Create take pan envelope from active take in other takes in item
Because technically, to paste something you need to copy it first. That, and it can get confused with other similar scripts that paste stored envelope.
|
Yes, that would be better, I'll change those names, thanks!
I wish EEL support for SWS ReaScript functions would happen in the near future. You have recently made/exported many nice envelope related functions for ReaScript Python
Edit: Changed the names.
Last edited by spk77; 07-20-2014 at 12:28 PM.
|
|
|
07-31-2014, 12:35 AM
|
#9
|
Human being with feelings
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
|
Oh, hang on.. pitch already exists!
I wonder why I didn't have those on my PC? I must have deleted them. D'oh!
Thanks spk77!!
Last edited by daxliniere; 07-31-2014 at 01:43 AM.
|
|
|
08-02-2014, 06:11 PM
|
#10
|
Human being with feelings
Join Date: Nov 2009
Posts: 2,227
|
dude! you're well on your way to replicating with eel the python scripting i'm having trouble with:
http://forum.cockos.com/showthread.php?t=143550
you've worked with envelopes so far. i've (most of the brainular work is Breeder's, i might add) used a gui checkbox dialog to list item parameters, such as envelopes, as well as mute state and others. there are two scripts, one to copy all item parameters, then a second that opens the dialog and asks the user to check off which parameters to paste. have a look. the code is in the linked thread. well done and keep going! love what you're on to here. the stuff we did is giving me trouble with the advance of reaper so it would be great to see it rebuilt in eel.
BabaG
|
|
|
08-18-2014, 02:54 PM
|
#11
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
"Simulating" noise gate and compressor with take vol envelope
Here's a script for testing purposes:
"Simulating" noise gate and compressor with take vol envelope
The envelope "view" in Reaper is not linear - it's possible to change the "ratio" by dragging the points up/down and then f.ex adjust the item volume. The script selects only the points above "noisegate threshold".
I'm using the vocal take (Vox.mp3) from "All Through the Night" -demo project. (I rendered it mp3 -> wav):
http://wiki.cockos.com/wiki/index.php/REAPER_User_Guide
There are all kind of limitations- Item has to be short enough:
- 10ms window size -> item max length 20s
- 100ms window size -> item max length 200s item etc.
- Works only on mono takes
- Doesn't work if "take playrate" is not 1
- Doesn't work "take start offset" (start in source) is not 0:0.000
- Values are hard-coded - I should make a GUI
Download:
https://stash.reaper.fm/21523/Envelop...Compressor.zip
Last edited by spk77; 08-18-2014 at 03:13 PM.
|
|
|
08-19-2014, 02:56 AM
|
#12
|
Human being with feelings
Join Date: Feb 2009
Location: Dunedin, New Zealand
Posts: 205
|
Wow! This looks incredible...
|
|
|
08-19-2014, 04:11 AM
|
#13
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Quote:
Originally Posted by sfzgeek
Wow! This looks incredible...
|
Thanks I hope I can make a GUI for it, so it would be easier to use.
|
|
|
11-20-2014, 08:36 AM
|
#14
|
Human being with feelings
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
|
Quote:
Originally Posted by spk77's script
Code:
msg_s("Please select a 'mono' take")
|
spk77, this script only works on mono audio or mono takes?
mono audio = wav file is 1 channel
mono take = wav file is any number of channels, but channel mode is mono
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template
|
|
|
11-20-2014, 08:51 AM
|
#15
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Quote:
Originally Posted by Argitoth
spk77, this script only works on mono audio or mono takes?
mono audio = wav file is 1 channel
mono take = wav file is any number of channels, but channel mode is mono
|
Mono audio (IIRC).
|
|
|
03-01-2015, 11:05 AM
|
#16
|
Human being with feelings
Join Date: Jun 2006
Posts: 22,567
|
I love this, but I haven't quite thought of a use yet.... installed tho!
|
|
|
03-01-2015, 12:49 PM
|
#17
|
Human being with feelings
Join Date: Jun 2009
Location: South, UK
Posts: 14,214
|
again.. much awesomeness!
__________________
subproject FRs click here
note: don't search for my pseudonym on the web. The "musicbynumbers" you find is not me or the name I use for my own music.
|
|
|
03-02-2015, 02:07 AM
|
#18
|
Human being with feelings
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
|
Hey spk77,
I can definitely confirm that the scripts are not working in REAPER 4.77 x64.
I have re-downloaded and re-loaded them and unforunately I get no joy.
If no item is selected when I run the store (copy) script, I get a warning about that, but pasting doesn't work.
Tested for vol & pitch.
|
|
|
03-02-2015, 06:51 AM
|
#19
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Quote:
Originally Posted by daxliniere
Hey spk77,
I can definitely confirm that the scripts are not working in REAPER 4.77 x64.
I have re-downloaded and re-loaded them and unforunately I get no joy.
If no item is selected when I run the store (copy) script, I get a warning about that, but pasting doesn't work.
Tested for vol & pitch.
|
I'm using REAPER 4.77 (WinXP32) and the scripts are working :
Toolbar buttons are shortcuts to: - Store take envelope.eel
- Paste stored take pitch envelope to active takes in selected items.eel
- Paste stored take vol envelope to active takes in selected items.eel
I don't know why it doesn't work on REAPER 4.77 x64
Do you have these in the action list?
|
|
|
03-02-2015, 07:02 AM
|
#20
|
Human being with feelings
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
|
Quote:
Originally Posted by spk77
Do you have these in the action list?
|
Yep.
I re-downloaded and re-installed the actions from the first post before I posted my problem.
Also, could we please get an action which copies vol/pan/mute/pitch/all envelopes from selected item to all other items in the group?
There is an action like this in a script for stretch markers. It's a nice one-step way to do some things, instead of having to store, then paste.
|
|
|
07-31-2015, 10:09 PM
|
#21
|
Human being with feelings
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
|
Hey spk77, these scripts are still broken for me. Is there some other way or things I can try? I really need them sometimes.
|
|
|
08-02-2015, 01:43 AM
|
#22
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Quote:
Originally Posted by daxliniere
Hey spk77, these scripts are still broken for me. Is there some other way or things I can try? I really need them sometimes.
|
Hi,
I really don't know why they don't work on your computer...
This is how Store take envelope source and Paste stored take vol envelope to active takes in same group works on Win 8.1 64bit, REAPER rc12/x64:
|
|
|
08-02-2015, 07:31 AM
|
#23
|
Human being with feelings
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
|
Quote:
Originally Posted by spk77
...to active takes in same group
|
Ahh, it has to be in the same group? Why is it that you can't paste to whichever items are selected?
And what about pitch and pan envelopes?
|
|
|
08-02-2015, 07:36 AM
|
#24
|
Human being with feelings
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
|
Hang on a sec.. these are the scripts I have which stopped working:
Code:
// EEL script - Store/copy active take's ID (by spk77 16.7.2014)
function store_take_id()
(
CountSelectedMediaItems(0) == 1 ? (
(item = GetSelectedMediaItem(0, 0)) ? ( // get only first selected item
(take = GetActiveTake(item)) ? (
SetExtState("take_envelope_source", "take", sprintf(#, "%d", take), 0);
);
);
) : (
ShowConsoleMsg("Please select only one (non-empty) item.");
);
);
store_take_id();
Code:
// Paste "stored" take volume envelope to active takes in selected items
// EEL script by spk77 16.7.2014
function paste_take_vol_env() local(source_take, source_vol_env, item_i, item, env)
(
GetExtState(#retval, "take_envelope_source", "take"); // get stored take's ID
match("%d", #retval, source_take) ? (
(source_vol_env = GetTakeEnvelopeByName(source_take, "Volume")) ? ( // env pointer found -> continue
// get take volume env state (from the stored source_take)
GetSetEnvelopeState(source_vol_env, #source_vol_env);
Undo_BeginBlock();
item_i = 0;
loop(CountSelectedMediaItems(0),
item = GetSelectedMediaItem(0, item_i);
GetActiveTake(item) != source_take ? ( // skip source take
// check if target take's "take vol envelope" doesn't exist
(env = GetTakeEnvelopeByName(GetActiveTake(item), "Volume")) == 0 ? (
// target take's "take vol envelope" didn't exist -> run action "show take volume envelope"
Main_OnCommand(NamedCommandLookup("_S&M_TAKEENV1"), 0); // show take volume envelope
// now it should exist -> get target take's "take vol envelope" pointer
(env = GetTakeEnvelopeByName(GetActiveTake(item), "Volume")) ? (
// set current "target take's vol env state" to "source_vol_env" state
GetSetEnvelopeState(env, #source_vol_env);
);
// (else) target take's "take vol envelope" already exists...
// -> set current "target take's vol env state" to "source_vol_env" state
) : GetSetEnvelopeState(env, #source_vol_env);
);
item_i += 1;
);
Undo_EndBlock("Paste take vol envelope", -1);
);
);
);
paste_take_vol_env();
Code:
// Paste "stored" take pitch envelope to active takes in selected items
// EEL script by spk77 20.7.2014
function paste_take_pitch_env() local(source_take, source_pitch_env, item_i, item, env)
(
GetExtState(#retval, "take_envelope_source", "take"); // get stored take's ID
match("%d", #retval, source_take) ? (
(source_pitch_env = GetTakeEnvelopeByName(source_take, "Pitch")) ? ( // env pointer found -> continue
GetSetEnvelopeState(source_pitch_env, #source_pitch_env);
Undo_BeginBlock();
item_i = 0;
loop(CountSelectedMediaItems(0),
item = GetSelectedMediaItem(0, item_i);
GetActiveTake(item) != source_take ? ( // skip source take
(env = GetTakeEnvelopeByName(GetActiveTake(item), "Pitch")) == 0 ? (
Main_OnCommand(NamedCommandLookup("_S&M_TAKEENV10"), 0); // show take pitch envelope
(env = GetTakeEnvelopeByName(GetActiveTake(item), "Pitch")) ? (
GetSetEnvelopeState(env, #source_pitch_env);
);
) : GetSetEnvelopeState(env, #source_pitch_env);
);
item_i += 1;
);
Undo_EndBlock("Paste take pitch envelope", -1);
);
);
);
paste_take_pitch_env();
Code:
// Paste "stored" take mute envelope to active takes in selected items
// EEL script by spk77 18.7.2014
function paste_take_mute_env() local(source_take, source_mute_env, item_i, item, env)
(
GetExtState(#retval, "take_envelope_source", "take"); // get stored take's ID
match("%d", #retval, source_take) ? (
(source_mute_env = GetTakeEnvelopeByName(source_take, "Mute")) ? ( // env pointer found -> continue
GetSetEnvelopeState(source_mute_env, #source_mute_env);
Undo_BeginBlock();
item_i = 0;
loop(CountSelectedMediaItems(0),
item = GetSelectedMediaItem(0, item_i);
GetActiveTake(item) != source_take ? ( // skip source take
(env = GetTakeEnvelopeByName(GetActiveTake(item), "Mute")) == 0 ? (
Main_OnCommand(NamedCommandLookup("_S&M_TAKEENV3"), 0); // show take mute envelope
(env = GetTakeEnvelopeByName(GetActiveTake(item), "Mute")) ? (
GetSetEnvelopeState(env, #source_mute_env);
);
) : GetSetEnvelopeState(env, #source_mute_env);
);
item_i += 1;
);
Undo_EndBlock("Paste take mute envelope", -1);
);
);
);
paste_take_mute_env();
Code:
// Paste "stored" take pan envelope to active takes in selected items
// EEL script by spk77 20.7.2014
function paste_take_pan_env() local(source_take, source_pan_env, item_i, item, env)
(
GetExtState(#retval, "take_envelope_source", "take"); // get stored take's ID
match("%d", #retval, source_take) ? (
(source_pan_env = GetTakeEnvelopeByName(source_take, "Pan")) ? ( // env pointer found -> continue
GetSetEnvelopeState(source_pan_env, #source_pan_env);
Undo_BeginBlock();
item_i = 0;
loop(CountSelectedMediaItems(0),
item = GetSelectedMediaItem(0, item_i);
GetActiveTake(item) != source_take ? ( // skip source take
(env = GetTakeEnvelopeByName(GetActiveTake(item), "Pan")) == 0 ? (
Main_OnCommand(NamedCommandLookup("_S&M_TAKEENV2"), 0); // show take pan envelope
(env = GetTakeEnvelopeByName(GetActiveTake(item), "Pan")) ? (
GetSetEnvelopeState(env, #source_pan_env);
);
) : GetSetEnvelopeState(env, #source_pan_env);
);
item_i += 1;
);
Undo_EndBlock("Paste take pan envelope", -1);
);
);
);
paste_take_pan_env();
|
|
|
08-02-2015, 09:50 AM
|
#25
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Quote:
Originally Posted by daxliniere
Ahh, it has to be in the same group? Why is it that you can't paste to whichever items are selected?
And what about pitch and pan envelopes?
|
These are for "selected items":
- Paste stored take vol envelope to active takes in selected items.eel
- Paste stored take pan envelope to active takes in selected items.eel
- Paste stored take mute envelope to active takes in selected items.eel
- Paste stored take pitch envelope to active takes in selected items.eel
These are for "grouped items": - Paste stored take vol envelope to active takes in same group.eel
- Paste stored take pan envelope to active takes in same group.eel
- Paste stored take mute envelope to active takes in same group.eel
- Paste stored take pitch envelope to active takes in same group.eel
Quote:
Originally Posted by daxliniere
Hang on a sec.. these are the scripts I have which stopped working:
|
All of them are working on my computer:
(I think Tod mentioned earlier that these don't work for him )
|
|
|
08-03-2015, 10:56 AM
|
#26
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Quote:
Originally Posted by daxliniere
Also, could we please get an action which copies vol/pan/mute/pitch/all envelopes from selected item to all other items in the group?
There is an action like this in a script for stretch markers. It's a nice one-step way to do some things, instead of having to store, then paste.
|
I'll make a zip file later and add support for take mute/pitch/pan -envelopes.
Edit.
Here's the zip file: https://stash.reaper.fm/24752/Take%20...0%28Lua%29.zip
The zip file contains - Copy take volume envelope from selected take to other takes in same group.lua
- Copy take pan envelope from selected take to other takes in same group.lua
- Copy take pitch envelope from selected take to other takes in same group.lua
- Copy take mute envelope from selected take to other takes in same group.lua
Long script names - edit if you want
Example usage (take volume envelope)
Last edited by spk77; 08-04-2015 at 08:23 AM.
|
|
|
08-04-2015, 06:27 AM
|
#27
|
Human being with feelings
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
|
Quote:
Originally Posted by spk77
I'll make a zip file later and add support for take mute/pitch/pan -envelopes.
|
Thank you spk77, that would be excellent. That way I would be sure I'm using all of the most up-to-date scripts and if the problem persists, perhaps I can help find it.
|
|
|
08-04-2015, 08:18 AM
|
#28
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Uploaded a zip file - download from post#26.
|
|
|
08-05-2015, 09:25 PM
|
#29
|
Human being with feelings
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
|
It's great, spk77 - really nice work!
|
|
|
08-17-2015, 08:18 AM
|
#30
|
Human being with feelings
Join Date: Oct 2011
Posts: 2,924
|
Very usefull scripts. When will you add "Paste stored FX and take FX envelopes to active takes in selected item" ?
|
|
|
09-27-2015, 02:14 AM
|
#31
|
Human being with feelings
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
|
Hey spk77,
I found a small bug with the Copy take vol/pan/pitch envelope from selected take to other takes in same group scripts.
If you have volume and pitch (for example) on the source take, and you copy the pitch envelope, the volume envelope will be written also, but not with full detail, only a straight envelope with the value of the first point from the source take.
Cheers,
Dax.
|
|
|
09-27-2015, 02:55 AM
|
#32
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Quote:
Originally Posted by daxliniere
Hey spk77,
I found a small bug with the Copy take vol/pan/pitch envelope from selected take to other takes in same group scripts.
If you have volume and pitch (for example) on the source take, and you copy the pitch envelope, the volume envelope will be written also, but not with full detail, only a straight envelope with the value of the first point from the source take.
Cheers,
Dax.
|
Hmmm...it's working here:
|
|
|
09-27-2015, 05:46 AM
|
#33
|
Human being with feelings
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
|
Yeah, that's strange. I retested and it's fine... :/
|
|
|
09-27-2015, 07:25 AM
|
#34
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Quote:
Originally Posted by daxliniere
Yeah, that's strange. I retested and it's fine... :/
|
Glad it works now
I'm trying to make a "realtime" version, but I'm having big difficulties with undo points. I'm not sure if I'm able to make it work at all...
Envelopes are updated when editing has ended (when the left mouse button is released):
|
|
|
03-10-2016, 03:09 PM
|
#35
|
Human being with feelings
Join Date: Jul 2009
Posts: 7,571
|
Quote:
Originally Posted by spk77
Here's a script for testing purposes:
"Simulating" noise gate and compressor with take vol envelope
[*]Values are hard-coded - I should make a GUI
|
bumping because this is pretty awesome. Would love to see an update.
getting a string of errors after running
"strcat: will not grow string since it is already 65541 bytes"
only draws points on 24 seconds of audio.
|
|
|
03-10-2016, 03:47 PM
|
#36
|
Human being with feelings
Join Date: Aug 2012
Location: Finland
Posts: 2,668
|
Quote:
Originally Posted by EpicSounds
bumping because this is pretty awesome. Would love to see an update.
getting a string of errors after running
"strcat: will not grow string since it is already 65541 bytes"
only draws points on 24 seconds of audio.
|
Here's a Lua version (haven't tested it lately):
http://forum.cockos.com/showpost.php...&postcount=504
|
|
|
03-19-2016, 08:44 PM
|
#37
|
Human being with feelings
Join Date: Jun 2006
Posts: 22,567
|
Quote:
Originally Posted by spk77
|
are there settings which can make this work like a noise gate?
|
|
|
03-20-2016, 02:42 PM
|
#38
|
Moderator
Join Date: Aug 2007
Location: Caracas, Venezuela
Posts: 8,676
|
Quote:
Originally Posted by spk77
|
I can't stop saying this is one of the most amazing scripts I've used.
I use it every single day in all projects I receive while preparing the session for mixing.
If you ever have some free time it would be great if it could also work on stereo material.
Can't thank you enough for this script, spk77.
__________________
Pressure is what turns coal into diamonds - Michael a.k.a. Runaway
|
|
|
03-20-2016, 05:50 PM
|
#39
|
Human being with feelings
Join Date: Jun 2006
Posts: 22,567
|
how do you use this mercado?
|
|
|
03-21-2016, 02:48 PM
|
#40
|
Moderator
Join Date: Aug 2007
Location: Caracas, Venezuela
Posts: 8,676
|
Quote:
Originally Posted by Jason Brian Merrill
how do you use this mercado?
|
Pretty much like you see it in that GIF. Before this script I used to spend a lot of time tweaking per-take volume envelopes for microdynamics while preparing the sessions I receive for mixing. Now that part of my editing is very fast: select a lead vocal, make a time selection around it, set the detection window to 50,000ms and hit create. Now expand/compress until your take is even out and tweak manually if needed. Working with this spript is so great that I'm impressed that not many people seem to rave about it (well, maybe there aren't too many people as crazy as me when it comes to microdynamics).
__________________
Pressure is what turns coal into diamonds - Michael a.k.a. Runaway
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 06:19 AM.
|