Jump to content

MIDI UDF


eynstyne
 Share

Recommended Posts

From previous posts, I have been working long and hard on thie UDF, but it has turned out a success.

Unlike people who do not want to share UDF's [Phillip Benefall], I will be completely willing to give this UDF for download.

See the example in the UDF file, actually, you can just run the UDF and listen to the music...

Eynstyne ;)

MIDI UDF!!! - Midiudf.au3 (Stream functions still need work...)

If there are any problems with the UDF, PM me

THX

Enjoy!

Edited by eynstyne
F@m!ly Guy Fr33k! - Avatar speaks for itself__________________________________________________________________________________________ite quotes... - Is your refrigerator running? If it is, It probably runs like you...very homosexually - Christians don't believe in gravity - Geeze Brian where do you think you are, Payless?- Show me potato Salad!__________________________________________________________________________________________Programs available - Shutdown timer[indent][/indent]
Link to comment
Share on other sites

Sure I will enjoy, thanks Eynstyne !

Midi things in AutoIt, means music boxes and loop players, cool :lmao:

Apzo.

From previous posts, I have been working long and hard on thie UDF, but it has turned out a success.

Unlike people who do not want to share UDF's [Phillip Benefall], I will be completely willing to give this UDF for download.

See the example in the UDF file, actually, you can just run the UDF and listen to the music...

Eynstyne ;)

MIDI UDF!!! - Midiudf.au3 (Stream functions still need work...)

If there are any problems with the UDF, PM me or mail to musikfreak99@hotmail.com or eynstyne@hotmail.com

THX

Enjoy!

Link to comment
Share on other sites

Eynstyne, can you give me a simple example of using your UDF for Midi? I'm just trying to use it to generate a specific tone (anything, really, between 300 and 800 Hz) for a specific time. It's not music, but it come out the right headphone jack...

Link to comment
Share on other sites

This is great work, but does`nt work properly for me...

Trying to get each instrument to play one note in turn..

For $i = 0 to 127
_MidiOutShortMsg($open,($i*256) * 16 + 192)
$msg = _midioutshortmsg($open,$C_NOTEON)
    sleep(200)
;$msg = _midioutshortmsg($open,$C_NOTEOFF)  
Next
but it plays just one long note.

Guess more examples are needed..

Drums work fine though! ;)

2015 - Still no flying cars, instead blankets with sleeves.

Link to comment
Share on other sites

Thx for trying out my UDF.

@rstolfa

In regards to the Hz value, $A_NOTEON (440hz) should do it for you.

If you are looking for examples, run the UDF and listen to the music. Also look in the midi udf for notes, drum numbers and so on.

$open = _MidiOutOpen()
_midiOutShortMsg($open,256 * 10 + 192) ; 10 plays Music box
_midioutshortmsg($open,$A_NOTEON)
sleep(1000) ; Play and hold for 1 second
_midioutshortmsg($open,$A_NOTEOFF);Release, otherwise it will stay held
_midiOutclose($open)

@Lakes

Don't comment out the NOTEOFF line. Also set an appropriate sleep value to sound the note

Thx for trying the UDF

@amdead

An Examples is found inside the UDF. Run it, and listen to some music

For recording, I have to reasearch this. _MidiInOpen and the stream functions should get you started.

@Apzo

TYVM. I was hoping the UDF went well

F@m!ly Guy Fr33k! - Avatar speaks for itself__________________________________________________________________________________________ite quotes... - Is your refrigerator running? If it is, It probably runs like you...very homosexually - Christians don't believe in gravity - Geeze Brian where do you think you are, Payless?- Show me potato Salad!__________________________________________________________________________________________Programs available - Shutdown timer[indent][/indent]
Link to comment
Share on other sites

Still playing with this, its great!

Is there a way to get the name of the instrument playing from the midi data?,I can add this in, but wondering if theres an easier way of doing this than creating an array of instrument names...

Thanks!

2015 - Still no flying cars, instead blankets with sleeves.

Link to comment
Share on other sites

  • 7 months later...

I'm still playing with this and testing it, but the following example should work better, as far as I can tell. There were no "note offs" in the example, so it just sounded like jumbled notes, but now it resembles a song:

;THE FOLLOWING IS AN EXAMPLE ON HOW TO USE THE CONSTANTS...
;PIECE - 12 VARIATIONS (K.265,Ah! vous dirai-je maman) THEME
;Composer : Wolfgang Amadeus Mozart
;Resequenced by Eynstyne & GMK

#include <Midiudf.au3>

$open = _midiOutOpen ()

For $i = 27 To 87
   _MidiOutShortMsg ($open, 0x99 + ($i * 256) + (127 * 0x10000)) ; Drums!
   Sleep(200)
Next

For $i = 1 To 2
   _MidiOutShortMsg ($open, 256 * 16 + 192)
   $msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $CBASS_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $CBASS_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $C_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $E_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $E_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $C_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $A_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $F_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $A_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $F_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $A_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $C_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $A_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $E_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $E_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $C_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $D_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $D_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $B_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $B_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $C_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $A_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $A_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $FBASS_NOTEON)
   Sleep(500)
   $msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $FBASS_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $GBASS_NOTEON)
   Sleep(300)
   $msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $GBASS_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
   Sleep(175)
   $msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEON)
   $msg = _MidiOutShortMsg ($open, $CBASS_NOTEON)
   Sleep(1000)
   $msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEOFF)
   $msg = _MidiOutShortMsg ($open, $CBASS_NOTEOFF)
Next

$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $E_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $GBASS_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $GBASS_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $D_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $D_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $GBASS_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $GBASS_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $C_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $GBASS_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $GBASS_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $B_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $B_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $G_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $G_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $E_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $G_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $G_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $D_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $D_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $G_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $G_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $C_NOTEON)
Sleep(400)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEON)
Sleep(50)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
Sleep(50)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEON)
Sleep(50)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
Sleep(250)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $D_NOTEON)
Sleep(150)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $D_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $C_NOTEON)
$msg = _MidiOutShortMsg ($open, $GBASS_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $GBASS_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $B_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $B_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $CBASS_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $CBASS_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $C_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $E_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $C_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $A_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $F_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $A_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $F_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $A_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $C_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $A_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $E_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $C_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $G_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $D_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $D_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $B_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $F_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $B_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $C_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $A_NOTEON)
Sleep(500)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $A_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $FBASS_NOTEON)
Sleep(400)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $FBASS_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
Sleep(50)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEON)
Sleep(50)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEON)
Sleep(50)
$msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEON)
Sleep(250)
$msg = _MidiOutShortMsg ($open, $D_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $GBASS_NOTEON)
Sleep(150)
$msg = _MidiOutShortMsg ($open, $E_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $GBASS_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEON)
$msg = _MidiOutShortMsg ($open, $CBASS_NOTEON)
Sleep(1000)
$msg = _MidiOutShortMsg ($open, $C_OCTAVEUP_NOTEOFF)
$msg = _MidiOutShortMsg ($open, $CBASS_NOTEOFF)

_MidiOutClose ($open)

Edited by GMK
Link to comment
Share on other sites

Does this actually create a file?

Can it? The info is difficult to follow but the example is pretty cool.

I get these errors too, If you push continue anyway, it still works, but i still get errors

(35,104) : WARNING: $MIDI_UNCACHE: possibly used before declaration.
Const $MIDI_CACHE_VALID = ($MIDI_CACHE_ALL Or $MIDI_CACHE_BESTFIT Or $MIDI_CACHE_QUERY Or $MIDI_UNCACHE)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^


C:\Program Files\AutoIt3\Include\Midi.au3(873,19) : WARNING: $getmmsyserr: possibly used before declaration.
        if $getmmsyserr =
        ~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\Midi.au3(900,34) : ERROR: DllStructGetData() [built-in] called with wrong number of args.
        $get = Dllstructgetdata($struct)
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\Midi.au3(873,19) : ERROR: $getmmsyserr: undeclared global variable.
        if $getmmsyserr =
        ~~~~~~~~~~~~~~~~^
Edited by Paulie
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...