 |
|
|
10-04-2009, 03:49 AM
|
#1
|
Mortal
Join Date: Dec 2008
Location: France
Posts: 1,969
|
MIDItoReaControlPath: free VST for extended learn/assgin
MIDItoReaControlPath is a kind of hacker* VST plug that routes incoming MIDI events to Reaper's control path and/or to the standard MIDI path. The VST uses Reaper's extension API for that and thus is only intended to be used with Reaper.
*Schwa kindly confirmed " that would probably be fine".
This plug is released "as I use it". No need for a "sexy" GUI for me: as you can see, 4 faders et basta! However, it offers lot of possible combinaitions and you can easily work with several instances (refined input criteria). You can do things like " route all CC -except those on channel 10- to the control path and pass others to the standard midi path".
What is it? Why ?
Quote:
Originally Posted by schwa
I think you are suffering from a common confusion of people coming to Reaper from other DAWs. Reaper currently has independent signal paths for control-CC-that-becomes-automation, and CC-that-gets-recorded-as-track-input.
You can't yet record CC as MIDI data on a track, then assign that recorded data as if it were an automation envelope, and you can't convert recorded CC to automation or vice versa. If you want automation, you have to record automation. If you want CC data on a track, you have to record MIDI CC.
|
The related FR is here: http://forum.cockos.com/project.php?issueid=1000
=> Adding MIDItoReaControlPath VST on a track allows you processing incoming/recorded/routed/generated MIDI events and automation as one and the same.
=> It's smarter/more efficient than using fake midi ports like MIDI Yoke (better timing, no extra MIDI hardware inputs/outputs needed).
In short:
Use case examples:
- enabling automations only for some MIDI harware inputs and for some MIDI msg types
- easier learn (i.e. filter channel + type of MIDI msg)
- combined other MIDI FXs, you can now process events before sending them to the conrol path
example: routing all CC4 to a given channel, so that it triggers the same action whatever is its original channel.
- MIDI item automation: FX params driven at "play time" through recorded midi items
- Complex/conditionnal FX control through JS effects (generating the CC events).
one of my use cases: reaDelay length live control according to the e-drummer's beat (live = no metronome)
- etc.. well, there're lot possible things! Here's another example:
Where:
- a JS "Action trigger" controls the transport commands (play, stop, ..)
- the played MIDI item (with learned CC, pitch and note events) is: driving FX params, muting/unmuting tracks, enabling/disabling FXs
Download:
MIDItoReaControlPath v1.0 (32-bit Intel Macs) new!
MIDItoReaControlPath v1.0 (64-bit Intel Macs) new!
MIDItoReaControlPath v1.0 (32-bit Windows)
MIDItoReaControlPath v1.0 (64-bit Windows)
Note for Windows: v1.0 makes extensive use of the SSE2 processor instruction set for maximum CPU efficiency. Older CPUs (notably the pre-64 Athlon XP series) that do not support SSE2 will not recognize it as a loadable plugin. The v0.2 build will run on older machines, it can be downloaded here.
Changelog:
Code:
v0.1:
- Initial release
v0.2:
- Compatible with Athlon XP (pre-64) processors
- 16 patchs
v1.0:
- Anticipative FX processing is now automatically turned off when needed
- Tighter build (463Ko -> 137Ko)
- Win x64 version
___
[EDIT]
Many things can be done.. but the examples above are perhaps not the best ones. A simple and typical use case of that VST that should talk to MIDI musicians would be (aka "automation MIDI item"):
say you play the keys and have a VST parameter learnt from one of your knobs (on the keyboard)...
Case 1:
... for that, you have enabled "Control" in the midi prefs for that MIDI input.
Then you have also armed a track (using the same MIDI input than above) and recorded an awesome keys part and used the knob like crazy during the record.
now, play: you just hear the notes what you did with the knob can not be heard (i.e. the VST param is stuck)
Case 2: you have top most number one MIDItoReaControlPath (default settings) on the track:
... for that, you have armed that track with the keyboard as MIDI input ("Control" is disabled in the midi prefs)
Then you have recorded an awesome keys part and used the knob like crazy during the record
now, play: you hear what you recorded, the FX param is grooving like crazy
[/EDIT]
Feel free to post feedback, your own use-case examples, bugs ("if any"), etc..
Jeff
Last edited by Jeffos; 07-24-2013 at 04:54 AM.
Reason: Available for Intel Macs too + punch ins + mutes
|
|
|
10-04-2009, 04:23 AM
|
#2
|
-blänk-
Join Date: Jun 2008
Posts: 11,349
|
...
speechless
WOW! Jeffos, that's a revolution. Definitely checking that one out. Big thanks.
|
|
|
10-04-2009, 05:10 AM
|
#3
|
Moderator
Join Date: Aug 2007
Location: Italy
Posts: 4,314
|
Simply awesome, I still have to try it, but it looks like now I can filter out messages like aftertouch while recording.
And... if it's not currently doing this, is it possible to add a "don't route at all" option for what satisfies criteria?
Anyway, thanx, thanx and thanx!
- Mario
Last edited by mabian; 10-04-2009 at 05:16 AM.
|
|
|
10-04-2009, 06:02 AM
|
#4
|
Administrator
Join Date: Mar 2007
Location: NY
Posts: 15,426
|
Nice work, Jeffos!
|
|
|
10-04-2009, 06:32 AM
|
#5
|
Human being with feelings
Join Date: Aug 2008
Posts: 207
|
Would this by chance allow me to accomplish what I'm asking about in this thread:
Routing a track's MIDI to itself? (Yes, really):
http://forum.cockos.com/showthread.php?t=42948
|
|
|
10-04-2009, 06:54 AM
|
#6
|
Human being with feelings
Join Date: Oct 2007
Location: home is where the heart is
Posts: 11,975
|
Quote:
Originally Posted by Jeffos
- FX params driven at "play time" through recorded midi items
|
Uhm...feeling a bit dumb.
Could someone give me a step by step example how to do that ?
|
|
|
10-04-2009, 11:46 AM
|
#7
|
Human being with feelings
Join Date: May 2006
Location: Surrey, UK
Posts: 19,646
|
Quote:
Originally Posted by gofer
...
speechless
WOW! Jeffos, that's a revolution. Definitely checking that one out. Big thanks.
|
Me too - there's a world of possibilities here.
__________________
DarkStar ... interesting, if true. . . . Inspired by ...
|
|
|
10-04-2009, 11:49 AM
|
#8
|
Human being with feelings
Join Date: Aug 2008
Location: Nancy,France
Posts: 80
|
Bravo Jeffos!
If I've correctly understood the implications of this plugin,you've covered ground that I wasn't even able to get into coherent thoughts.This is going to be really useful.
Thank You,
Paul
|
|
|
10-04-2009, 12:00 PM
|
#9
|
Human being with feelings
Join Date: Feb 2008
Posts: 38
|
Yes, great idea!!! Will try to use it now! Congrats!!
|
|
|
10-04-2009, 12:51 PM
|
#10
|
Human being with feelings
Join Date: May 2006
Location: Surrey, UK
Posts: 19,646
|
Reaper is scanning the dll (it appears in the reaper VSt_pluigns.ini file) but finds a problem so it does not appear in the FX Browser.
__________________
DarkStar ... interesting, if true. . . . Inspired by ...
|
|
|
10-04-2009, 01:24 PM
|
#11
|
Moderator
Join Date: Aug 2007
Location: Italy
Posts: 4,314
|
Quote:
Originally Posted by DarkStar
Reaper is scanning the dll (it appears in the reaper VSt_pluigns.ini file) but finds a problem so it does not appear in the FX Browser.
|
It works here (though I put the DLL in the Cockos effects folder, where ReaControlMIDI.dll is located).
- Mario
|
|
|
10-04-2009, 01:26 PM
|
#12
|
Mortal
Join Date: Dec 2008
Location: France
Posts: 1,969
|
Thanks for the kind words!
.. I'm in a rush right now... I'll come back later...
DarkStar, duh!! what is your Win?
I've sucessfully tested that VST on XP sp3 and Vista, r3.12 (in rehearsal condition ;-). If there's an error message, what does it say ?
[EDIT] issue fixed, see post 24
Last edited by Jeffos; 11-20-2009 at 02:16 AM.
|
|
|
10-04-2009, 01:30 PM
|
#13
|
Human being with feelings
Join Date: Oct 2007
Location: home is where the heart is
Posts: 11,975
|
Works fine here.
I dropped it into REAPER/Plugins/FX folder which is different from my main Vst folder, as I didn't want my other hosts to scan it.
(Win XP SP3 Dux build)
Maybe you could try that.
edit:
Just saw mabian put it in the same location, so this should do the trick I guess.
Now if I could only figure out how it works...
(shameless plug, see post #6  )
Last edited by nofish; 10-04-2009 at 01:38 PM.
|
|
|
10-05-2009, 01:27 AM
|
#14
|
Human being with feelings
Join Date: May 2006
Location: Surrey, UK
Posts: 19,646
|
Quote:
Originally Posted by Jeffos
Thanks for the kind words!
.. I'm in a rush right now... I'll come back later...
DarkStar, duh!! what is your Win?
I've sucessfully tested that VST on XP sp3 and Vista, r3.12 (in rehearsal condition ;-). If there's an error message, what does it say ?
|
XP Home SP2 (PC a few years old)
No error message. Reaper starts up and looks for all the VSTs. It finds the new dll and adds it to the VST Plugins list, but finds a problem so does not put in all the usual details for a new VST. So it does not appear in the FX Browser. THe .ini file contians "MidiToReaControlPath.dll=009032083444CA01".
----------------------
Tried placing the dll in C:\Program Files\REAPER\Plugins\FX - same problem.
__________________
DarkStar ... interesting, if true. . . . Inspired by ...
Last edited by DarkStar; 10-05-2009 at 01:58 AM.
|
|
|
10-05-2009, 02:41 AM
|
#15
|
Mortal
Join Date: Dec 2008
Location: France
Posts: 1,969
|
=> nofish, I'll reply to you (if nobody do it in the meantime) and I also want to reply to some posts above, I just don't have the time right now...
About installation: as said in the ReadMe.txt, just extract the DLL into your "normal" VST directory!
Other hosts: it should also work in other hosts than reaper (the last fader will just have no effect). In this case, it allows you passing-except or filtering some midi messages, example: now I can filter out messages like aftertouch while recording as said mabian + yes, mabian, you have "don't route" options for both paths.
Quote:
Originally Posted by DarkStar
XP Home SP2 (PC a few years old)
No error message. Reaper starts up and looks for all the VSTs. It finds the new dll and adds it to the VST Plugins list, but finds a problem so does not put in all the usual details for a new VST. So it does not appear in the FX Browser. THe .ini file contians "MidiToReaControlPath.dll=009032083444CA01".
----------------------
Tried placing the dll in C:\Program Files\REAPER\Plugins\FX - same problem.
|
Thanks for the inputs DS! But it's gonna be hard with those few info... Moreover, I've just tested it on another PC closed to yours, XP pro SP2 => works fine!
I perhaps have an idea... can you try this other build (light version, though, no faders everything is sent to the control path):
https://stash.reaper.fm/3897/MIDItoRe...olPathLite.zip - FOR DARKSTAR ONLY !
same issue ?
same issue for other people ?
[EDIT] issue fixed, see post 24
Last edited by Jeffos; 11-20-2009 at 02:15 AM.
|
|
|
10-05-2009, 02:46 AM
|
#16
|
Human being with feelings
Join Date: May 2006
Location: Surrey, UK
Posts: 19,646
|
Lite version - same problem, and it crashed other hosts too.
__________________
DarkStar ... interesting, if true. . . . Inspired by ...
|
|
|
10-05-2009, 02:56 AM
|
#17
|
Mortal
Join Date: Dec 2008
Location: France
Posts: 1,969
|
ok... thanks. I'll brainstorm this stuff and will come back if I have another idea..
It's really strange, it works on every PC, every win versions I have around here!
[EDIT] it's a shame you don't see it, you could have used the brand new "better process buggy plugins" option otherwise, ha ha! but.. given what is does, it should run just fine...
[EDIT2] issue fixed, see post 24
Last edited by Jeffos; 11-20-2009 at 02:15 AM.
|
|
|
10-05-2009, 03:08 AM
|
#18
|
Human being with feelings
Join Date: Jun 2006
Location: Finland, Kuopio
Posts: 911
|
Could I use this plug to draw automation with my BCF2000 that I use atm in Mackie mode? I want to keep it in Mackie mode, but it would be more than super to draw automation (gate tresholds etc) with BCF2000.
|
|
|
10-05-2009, 03:53 PM
|
#19
|
Mortal
Join Date: Dec 2008
Location: France
Posts: 1,969
|
I think we've found DarkStar's issue (same issue with another IPlug VST) but not the fix, yet. It's indeed probably due to an "old" processor...
"FX params driven at "play time" through recorded midi items"
Quote:
Originally Posted by nofish
Uhm...feeling a bit dumb.
Could someone give me a step by step example how to do that ?
|
ok, so, step by step (english takes me some time...):
1) add MIDItoReaControlPath VST on a track with default settings, all faders to the left: all MIDI messages (except system ones) will be sent to reaper's MIDI control path + they will also pass-thru the "standard" midi path
2) arm that track, choose a MIDI input
I really advice you to disable "control" in the MIDI prefs for that input! One step later, that control path will be feed through the armed track
3) enable input monitoring, classic pitfall! No midi will feed MIDItoReaControlPath otherwise!
=> here you are "connected" to reaper's control path but "in a different way"
4) learn a FX param from your MIDI device, as usual. Say you have choosen CC4 for that FX param.
5) Record
As usual, you will record your MIDI data including the CC4 and you will also drive the FX param while recording (if you have kept the VST's default settings)
6) un-arm, play
There's no automation lane, but the FX param is automated thanks to the CCs of the midi item playing...
i.e. "FX params driven at "play time" through recorded midi items"
Note: here (while playing), you'll also be able to "learn things from a played MIDI item", étonnant non !?
... and if there's too many things feeding the learn, you can filter that thanks to the VST's faders.
Last edited by Jeffos; 10-06-2009 at 09:08 AM.
Reason: english wording
|
|
|
10-06-2009, 06:40 AM
|
#20
|
Human being with feelings
Join Date: Oct 2007
Location: home is where the heart is
Posts: 11,975
|
Jeffos,
thanks a lot for taking your time doing this description.
I got it working now with no problems.
Really cool, now we automation clips !
Thanks again.
|
|
|
10-22-2009, 09:54 AM
|
#21
|
Human being with feelings
Join Date: Feb 2007
Posts: 3,221
|
bump. thank you. i hope this will prove a good, uncomplicated workaround to non-native handling of recorded ccs as FX automation. the effort is greatly appreciated, jeffos.
|
|
|
11-18-2009, 10:37 AM
|
#22
|
Administrator
Join Date: Mar 2007
Location: NY
Posts: 15,426
|
Not sure if I follow the compatibility problems described above, but an observation:
If any plugin, or any static library linked into any plugin, is built with any level of SSE enabled, a computer that does not support that level of SSE will simply not recognize the plugin as loadable. It won't crash or otherwise flake out, it just won't exist as far as that computer knows. The most common situation where this comes up is with SSE2 and Athlon XP (pre-64) processors. From the developer's side, you need to make sure if you are doing a no-SSE build that everything you link in is also no-SSE, which in IPlug means LICE, IPlug itself, and any other utility libraries you are using.
|
|
|
11-18-2009, 10:52 AM
|
#23
|
Mortal
Join Date: Dec 2008
Location: France
Posts: 1,969
|
Thanks for the feedback schwa!
Quote:
Originally Posted by schwa
From the developer's side, you need to make sure if you are doing a no-SSE build that everything you link in is also no-SSE, which in IPlug means LICE, IPlug itself, and any other utility libraries you are using.
|
that exactly what I did: it didn't fix the issue. however, we're also talking about Athlon XP here... I might I have made an error (but I can't see it).
|
|
|
11-20-2009, 02:13 AM
|
#24
|
Mortal
Join Date: Dec 2008
Location: France
Posts: 1,969
|
See the OP v0.2 released:
- Compatible with Athlon XP (pre-64) processors
- 16 patchs
- some (minor) optimizations
__________
note for other IPlugers:
about the Athlon XP issue, I found the build error I mentioned in the previous post: I only disabled SSE2 rather than -all- SSE levels as adviced by schwa here (thanks again!). DarkStar confirmed he's scanning/seeing the plug now..
|
|
|
11-20-2009, 03:51 AM
|
#25
|
Human being with feelings
Join Date: Jul 2007
Location: Hamburg and Heidelberg
Posts: 670
|
What a superb, superb idea, thanks, Jeffos, and at least for my humble main music PC (6 years old...AMD AthlonXP3000+, not all are exactly rich^^) your update is more than great. Will try to learn what this can add this weekend!
|
|
|
12-01-2009, 10:16 AM
|
#26
|
Human being with feelings
Join Date: Feb 2007
Posts: 3,221
|
yo any chance of getting that sweet "action trigger" vst????
does it actually call up REAPER actions? if so, brilliant.
|
|
|
12-01-2009, 02:58 PM
|
#27
|
Mortal
Join Date: Dec 2008
Location: France
Posts: 1,969
|
The OP is a bit smocky! I've edited it with a simple and typical use case of that VST that should talk to many MIDI musicians.
I also see that i didn't reply to theses Q's. better a bad answer too late than none, never..
Quote:
Originally Posted by jbone1313
|
sorry, i didn't understand the thread
Quote:
Originally Posted by Finnish
Could I use this plug to draw automation with my BCF2000 that I use atm in Mackie mode? I want to keep it in Mackie mode, but it would be more than super to draw automation (gate tresholds etc) with BCF2000.
|
I don't know the BCF2000 so I'd simply say that any device that properly output midi CCs can draw automations (natively possible without the VST too!). However, the other direction, drawing an automation from a midi item for e.g. is possible thanks to the VST, not natively.
Quote:
Originally Posted by nym
yo any chance of getting that sweet "action trigger" vst????
does it actually call up REAPER actions? if so, brilliant.
|
Yup, there's no pb calling an action from a VST (using REAPER extensions plugins API) but, in that anim, it was a simple JS. The idea was to show that MIDI events generated internally (here: the JS is outputing CCs) could be learnt/assigned to actions,FX params,..
For that, the FXs on the track were JS:ActionTrigger -> VST:MIDItoReaControlPath, here's the JS I used:
Code:
desc: Action trigger
slider1:0<0,3,1{None,Play,Pause,Stop}>Action
@init
previous=slider1;
@slider
slider1=floor(slider1+0.5);
@block
slider1 != previous ? (previous=slider1; midisend(0,$xB0 + 15,127*256+10+slider1););
So here, yes, a JS can indirectly trigger REAPER actions!
... nym, given your sig I'm quiet sure you'll enjoy this VST
|
|
|
12-01-2009, 03:19 PM
|
#28
|
Human being with feelings
Join Date: Jun 2009
Posts: 2,565
|
awesome!
|
|
|
02-07-2010, 06:25 AM
|
#29
|
Human being with feelings
Join Date: Jun 2009
Location: South, UK
Posts: 14,197
|
This is a fantastic plug in!!!
I'm going to use it with my p5 glove to control lots and lots of things at once
|
|
|
03-07-2010, 06:41 AM
|
#30
|
Human being with feelings
Join Date: Feb 2008
Location: france
Posts: 230
|
Great great plugin jeffos  thanks a lot !
Quote:
Originally Posted by Jeffos
Feel free to post feedback, your own use-case examples, bugs ("if any"), etc..
Jeff
|
FoXY controller (beta) that can use your plugin http://forum.cockos.com/showthread.php?t=53383
|
|
|
03-28-2010, 11:39 AM
|
#31
|
Human being with feelings
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
|
Quote:
Originally Posted by Jeffos
OSX users: as I use schwa's IPlug framework (cross-plateform), it should be possible to make a build for you... except that don't own a mac myself (=> if someone can help about that: PM !)
|
Great stuff Jeffos, big ups!
Since I use both OS X and Windows systems and have the OS X dev stuff installed, I'd sure like to see whether I can help in porting it to OS X. I'm not much of a coder at all, and no promises on time schedules either, but happy to help wherever I can.
PS: Jeffos, your PM inbox is stuffed. :P
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
|
|
|
04-01-2010, 09:30 AM
|
#32
|
Mortal
Join Date: Dec 2008
Location: France
Posts: 1,969
|
strunkdts, musicbynumbers, zorn and Banned: thanks to all!
@zorn: I know gave you up about your (excellent) JS, sorry..
@Banned: thanks a lot for your help, but since you don't code and since I don't own a mac, it sounds a bit windy this way  Also, since I posted that "request" I learnt there're some issues with AU MIDI output (normal " output", not the control path one: http://forum.cockos.com/showthread.php?t=36967). Though, OSX should come here at some point, this will be simplier..
|
|
|
04-01-2010, 02:51 PM
|
#33
|
Human being with feelings
Join Date: Feb 2008
Posts: 1,616
|
Quote:
Originally Posted by Jeffos
Feel free to post feedback, your own use-case examples....
|
Firstly, thanks very much for this plugin. The behaviour of moving automation with items was making me nervous in Reaper so this is a great solution!
With FIPM enabled on a track, I am recording passes of FX automation which are recorded into their own items on the same track. I wrote the worlds worst/smallest/most useless plugin to use with it....
https://stash.reaper.fm/v/4912/Control%20Sliders.txt
.... so that I now have 15 Track Presets saved with 15 different channels of pre-MIDI-learned TCP controls which I link FX parameters to with Parameter Modulation.
Like with a lot of things, it's easier to do than to say.
Thanks again.
|
|
|
07-12-2010, 11:46 AM
|
#34
|
Human being with feelings
Join Date: Jul 2008
Location: Berks County, PA
Posts: 33
|
I'm having a problem with this plugin.
When I playback, modulations occur as expected.
But, when I render, the modulations don't occur.
Can anyone else can verify this problem?
Thanks, in advance, for your help.
|
|
|
07-12-2010, 11:52 PM
|
#35
|
Mortal
Join Date: Dec 2008
Location: France
Posts: 1,969
|
dsalks is talking about a plug that controls another one, link to the original thread:
Quote:
Originally Posted by dsalks
I need midi cc output from plug-A to control plug-B.
parameter "learn" doesn't work to set this up.
and there's no way to key in the channel & cc.
|
I replied that MIDIToReaControlPath will do the job (it should be inserted -after- plug-A, on the same track. Then plug-B can be anywhere else) but, about the render issue: yes, confirmed. I think it's normal: REAPER ignores what comes from the control path during (non-realtime) rendering..
What is cool with REAPER is that there's always a solution: in your MIDItoReaControlPath use-case, one possibility would be to use "Save live output to disk" rather than render.
Last edited by Jeffos; 07-13-2010 at 12:31 AM.
Reason: details..
|
|
|
08-23-2010, 09:50 PM
|
#36
|
Human being with feelings
Join Date: Aug 2009
Posts: 39
|
Can somebody create a video of things that you can do with this ? I don't understand the excitement...i want to.
I also don't understand what did you do in the animated picture?? pressed stop/pause/play...why do we need it? I probably miss something.
|
|
|
09-23-2010, 04:01 PM
|
#37
|
Human being with feelings
Join Date: Jul 2009
Posts: 3,714
|
This is a fantastic plugin! In fact, I think it should be integrated into Reaper as a standard feature.
Unfortunately, it does not seem to work on 64bit Reaper. Are there perhaps any plans for a 64bit build of this plugin?
|
|
|
09-23-2010, 06:20 PM
|
#38
|
Human being with feelings
Join Date: Nov 2008
Location: Somewhere Between 120 and 150 BPM
Posts: 7,968
|
I second the 64bit edition.
I applaud this work too.
I have always used Scope DSP MIDI Devices and external hardware.
Reaper is gaining serious strengths instead of small conveniences.
Bravo...
__________________
.
|
|
|
09-24-2010, 03:11 AM
|
#39
|
Mortal
Join Date: Dec 2008
Location: France
Posts: 1,969
|
Thanks
Quote:
Originally Posted by XITE-1/4LIVE
I second the 64bit edition.
|
yes, a x64 build should come at a not so far point..
|
|
|
09-24-2010, 05:03 AM
|
#40
|
Human being with feelings
Join Date: Jun 2007
Location: Terra incognita
Posts: 7,622
|
Gak, how did I ever miss this one, too...opens up the controlling possibilities sooo nicely. Thanks Jeffos!
|
|
|
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 04:26 AM.
|