Live devices mapping in Push:Community mapping is done! :)

Discuss music production with Ableton Live.
tedlogan
Posts: 1347
Joined: Thu Dec 20, 2012 7:23 pm
Location: Leamington Spa, UK
Contact:

Re: Change Live devices default mapping in Push:on Page 7

Post by tedlogan » Sun Oct 27, 2013 8:14 pm

Here is Tom's Analog code, with three syntax errors fixed (related to the use of '). Excellent mapping by the man, why Ableton did not set up their own devices like this is totally baffling.

Code: Select all

ALG_BANK1 = ('OSC1 Level', 'OSC1 Octave', 'OSC1 Semi', 'OSC1 Detune', 'OSC1 Shape', 'OSC1 Balance', 'PEG1 Amount', 'PEG1 Time')
ALG_BANK2 = ('F1 Type', 'F1 Freq', 'F1 Resonance', 'F1 To F2', 'FEG1 Attack', 'FEG1 Decay', 'FEG1 Sustain', 'FEG1 Rel')
ALG_BANK3 = ('AMP1 Level', 'AMP1 Pan', 'AEG1 S Time', 'AEG1 Loop', 'AEG1 Attack', 'AEG1 Decay', 'AEG1 Sustain', 'AEG1 Rel')
ALG_BANK4 = ('LFO1 Shape', 'LFO1 Sync', 'LFO1 SncRate', 'LFO1 Speed', 'LFO1 PW', 'LFO1 Phase', 'LFO1 Delay', 'LFO1 Fade In')
ALG_BANK5 = ('OSC2 Level', 'OSC2 Octave', 'OSC2 Semi', 'OSC2 Detune', 'OSC2 Shape', 'OSC2 Balance', 'PEG2 Amount', 'PEG2 Time')
ALG_BANK6 = ('F2 Type', 'F2 Freq', 'F2 Resonance', 'F2 Slave', 'FEG2 Attack', 'FEG2 Decay', 'FEG2 Sustain', 'FEG2 Rel')
ALG_BANK7 = ('AMP2 Level', 'AMP2 Pan', 'AEG2 S Time', 'AEG2 Loop', 'AEG2 Attack', 'AEG2 Decay', 'AEG2 Sustain', 'AEG2 Rel')
ALG_BANK8 = ('LFO2 Shape', 'LFO2 Sync', 'LFO2 SncRate', 'LFO2 Speed', 'LFO2 PW', 'LFO2 Phase', 'LFO2 Delay', 'LFO2 Fade In')
ALG_BANK9 = ('OSC1 < LFO', 'OSC1 PW', 'O1 PW < LFO', 'LFO1 On/Off', 'F1 Freq < LFO', 'F1 Res < LFO', 'A1 Pan < LFO', 'AMP1 < LFO')
ALG_BANK10 = ('OSC2 < LFO', 'OSC2 PW', 'O2 PW < LFO', 'LFO2 On/Off', 'F2 Freq < LFO', 'F2 Res < LFO', 'A2 Pan < LFO', 'AMP2 < LFO')
ALG_BANK11 = ('Noise On/Off', 'Noise Level', 'Noise Balance', 'Noise Color', 'O1 Sub/Sync', 'O2 Sub/Sync', 'F1 Drive', 'F2 Drive')
ALG_BANK12 = ('Vib On/Off', 'Vib Amount', 'Vib Speed', 'Vib Delay', 'Vib Error', 'Vib Fade-In', 'Vib < ModWh', 'Volume')
ALG_BANK13 = ('Unison On/Off', 'Unison Detune', 'Unison Delay', 'Unison Voices', 'Glide On/Off', 'Glide Time', 'Glide Legato', 'Glide Mode')
ALG_BOB = ('OSC1 Level', 'OSC1 Semi', 'OSC1 Balance', 'F1 Freq', 'OSC2 Level', 'OSC2 Semi', 'OSC2 Balance', 'F2 Freq')
ALG_BANKS = (ALG_BANK1,
ALG_BANK2,
ALG_BANK3,
ALG_BANK4,
ALG_BANK5,
ALG_BANK6,
ALG_BANK7,
ALG_BANK8,
ALG_BANK9,
ALG_BANK10,
ALG_BANK11,
ALG_BANK12,
ALG_BANK13)
ALG_BOBS = (ALG_BOB,)
ALG_BNK_NAMES = ('Oscillator 1', 'Filter 1', 'Amp 1', 'LFO 1', 'Oscillator 2', 'Filter 2', 'Amp 2', 'LFO 2', 'LFO 1 Routing', 'LFO 2 Routing', 'Noise Sub Drive', 'Vibrato', 'Unison Glide')

Valiumdupeuple
Posts: 1155
Joined: Mon May 31, 2010 12:36 pm
Contact:

Re: Change Live devices default mapping in Push:on Page 7

Post by Valiumdupeuple » Sun Oct 27, 2013 9:52 pm

tedlogan wrote:I'm testing TomViolenz's device mappings for all the audio and midi effects, and some of the instruments. Really good work he's doing, with far superior mappings than Ableton's half-assed ones. Some don't work though, so if anyone can test this one as an example, which is not working for me:

Code: Select all

ALG_BANK1 = ('OSC1 Level', 'OSC1 Octave', 'OSC1 Semi', 'OSC1 Detune', 'OSC1 Shape', 'OSC1 Balance', 'PEG1 Amount', 'PEG1 Time')
ALG_BANK2 = ('F1 Type', 'F1 Freq', 'F1 Resonance', 'F1 To F2', 'FEG1 Attack', 'FEG1 Decay', 'FEG1 Sustain', 'FEG1 Rel')
ALG_BANK3 = ('AMP1 Level'', 'AMP1 Pan', 'AEG1 S Time', 'AEG1 Loop', 'AEG1 Attack', 'AEG1 Decay', 'AEG1 Sustain', 'AEG1 Rel')
ALG_BANK4 = ('LFO1 Shape', 'LFO1 Sync', 'LFO1 SncRate', 'LFO1 Speed', 'LFO1 PW', 'LFO1 Phase', 'LFO1 Delay', 'LFO1 Fade In')
ALG_BANK5 = ('OSC2 Level', 'OSC2 Octave', 'OSC2 Semi', 'OSC2 Detune', 'OSC2 Shape', 'OSC2 Balance', 'PEG2 Amount', 'PEG2 Time')
ALG_BANK6 = ('F2 Type', 'F2 Freq', 'F2 Resonance', 'F2 Slave', 'FEG2 Attack', 'FEG2 Decay', 'FEG2 Sustain', 'FEG2 Rel')
ALG_BANK7 = ('AMP2 Level'', 'AMP2 Pan', 'AEG2 S Time', 'AEG2 Loop', 'AEG2 Attack', 'AEG2 Decay', 'AEG2 Sustain', 'AEG2 Rel')
ALG_BANK8 = ('LFO2 Shape', 'LFO2 Sync', 'LFO2 SncRate', 'LFO2 Speed', 'LFO2 PW', 'LFO2 Phase', 'LFO2 Delay', 'LFO2 Fade In')
ALG_BANK9 = ('OSC1 < LFO', 'OSC1 PW', 'O1 PW < LFO', 'LFO1 On/Off', 'F1 Freq < LFO', 'F1 Res < LFO', 'A1 Pan < LFO', 'AMP1 < LFO')
ALG_BANK10 = ('OSC2 < LFO', 'OSC2 PW', 'O2 PW < LFO', 'LFO2 On/Off', 'F2 Freq < LFO', 'F2 Res < LFO', 'A2 Pan < LFO', 'AMP2 < LFO')
ALG_BANK11 = ('Noise On/Off', 'Noise Level', 'Noise Balance', 'Noise Color', 'O1 Sub/Sync', 'O2 Sub/Sync', 'F1 Drive', 'F2 Drive')
ALG_BANK12 = ('Vib On/Off', 'Vib Amount', 'Vib Speed', 'Vib Delay', 'Vib Error', 'Vib Fade-In', 'Vib < ModWh', 'Volume')
ALG_BANK13 = ('Unison On/Off', 'Unison Detune', 'Unison Delay, 'Unison Voices', 'Glide On/Off', 'Glide Time', 'Glide Legato', 'Glide Mode')
ALG_BOB = ('OSC1 Level', 'OSC1 Semi', 'OSC1 Balance', 'F1 Freq', 'OSC2 Level', 'OSC2 Semi', 'OSC2 Balance', 'F2 Freq')
ALG_BANKS = (ALG_BANK1,
ALG_BANK2,
ALG_BANK3,
ALG_BANK4,
ALG_BANK5,
ALG_BANK6,
ALG_BANK7,
ALG_BANK8,
ALG_BANK9,
ALG_BANK10,
ALG_BANK11,
ALG_BANK12,
ALG_BANK13)
ALG_BOBS = (ALG_BOB,)
ALG_BNK_NAMES = ('Oscillator 1', 'Filter 1', 'Amp 1', 'LFO 1', 'Oscillator 2', 'Filter 2', 'Amp 2', 'LFO 2', 'LFO 1 Routing', 'LFO 2 Routing', 'Noise Sub Drive', 'Vibrato', 'Unison Glide')
Also, here is his latest Operator mapping (working fine), which is perfect (although I've swapped LFO Rate for LFO Sync as I prefer synced LFOs):

Code: Select all

OPR_BANK1 = ('A Coarse', 'A Fine', 'Osc-A Level', 'Osc-A Wave', 'Ae Attack', 'Ae Decay', 'Ae Sustain', 'Ae Release')
OPR_BANK2 = ('B Coarse', 'B Fine', 'Osc-B Level', 'Osc-B Wave', 'Be Attack', 'Be Decay', 'Be Sustain', 'Be Release')
OPR_BANK3 = ('C Coarse', 'C Fine', 'Osc-C Level', 'Osc-C Wave', 'Ce Attack', 'Ce Decay', 'Ce Sustain', 'Ce Release')
OPR_BANK4 = ('D Coarse', 'D Fine', 'Osc-D Level', 'Osc-D Wave', 'De Attack', 'De Decay', 'De Sustain', 'De Release')
OPR_BANK5 = ('Filter Type', 'Filter Freq', 'Filter Res', 'Fe Amount', 'Fe Attack', 'Fe Decay', 'Fe Sustain', 'Fe Release')
OPR_BANK6 = ('Pe Amount', 'Pe End', 'Pe Init', 'Pe Peak', 'Pe Attack', 'Pe Decay', 'Pe Sustain', 'Pe Release')
OPR_BANK7 = ('Osc-A < Pe', 'Osc-B < Pe', 'Osc-C < Pe', 'Osc-D < Pe', 'LFO < Pe', 'Pe Amt A', 'Pe Dst B', 'Pe Amt B')
OPR_BANK8 = ('LFO Type', 'LFO Range', 'LFO Rate', 'LFO Amt', 'Le Attack', 'Le Decay', 'Le Sustain', 'Le Release')
OPR_BANK9 = ('Osc-A < LFO', 'Osc-B < LFO', 'Osc-C < LFO', 'Osc-D < LFO', 'Filt < LFO', 'LFO Amt A', 'LFO Dst B', 'LFO Amt B')
OPR_BANK10 = ('Algorithm', 'Time', 'Tone', 'Shaper Type', 'Shaper Amt', 'Shaper Amt', 'Pan < Rnd', 'Panorama')
OPR_BANK11 = ('Ae Mode', 'Osc-A Phase', 'Ae Init', 'Ae Peak', 'Ae Attack', 'Ae Decay', 'Ae Sustain', 'Ae Release')
OPR_BANK12 = ('Be Mode', 'Osc-B Phase', 'Be Init', 'Be Peak', 'Be Attack', 'Be Decay', 'Be Sustain', 'Be Release')
OPR_BANK13 = ('Ce Mode', 'Osc-C Phase', 'Ce Init', 'Ce Peak', 'Ce Attack', 'Ce Decay', 'Ce Sustain', 'Ce Release')
OPR_BANK14 = ('De Mode', 'Osc-D Phase', 'De Init', 'De Peak', 'De Attack', 'De Decay', 'De Sustain', 'De Release')
OPR_BANK15 = ('Le Mode', 'Le End', 'Le Init', 'Le Peak', 'Le Attack', 'Le Decay', 'Le Sustain', 'Le Release')
OPR_BANK16 = ('Fe Mode', 'Fe End', 'Fe Init', 'Fe Peak', 'Fe Attack', 'Fe Decay', 'Fe Sustain', 'Fe Release')
OPR_BOB = ('LFO Amt', 'Filter Freq', 'Fe Amount', 'Pe Amount', 'Spread', 'Transpose', 'Time', 'Volume')
OPR_BANKS = (OPR_BANK1,
OPR_BANK2,
OPR_BANK3,
OPR_BANK4,
OPR_BANK5,
OPR_BANK6,
OPR_BANK7,
OPR_BANK8,
OPR_BANK9,
OPR_BANK10,
OPR_BANK11,
OPR_BANK12,
OPR_BANK13,
OPR_BANK14,
OPR_BANK15,
OPR_BANK16)
OPR_BOBS = (OPR_BOB,)
OPR_BNK_NAMES = ('Oscillator A', 'Oscillator B', 'Oscillator C', 'Oscillator D', 'Filter', 'Pitch Envelope', 'Pitch Destination', 'LFO', 'LFO Destination', 'Algorithm/Shaper/Pan', 'Envelope Detail OscA', 'Envelope Detail OscB', 'Envelope Detail OscC', 'Envelope Detail OscD', 'Envelope Detail LFO', 'Envelope Detail Filter')

There's an error, you put 2 "shaper amt" in OP_BANK10. Stray had listed it twice in his big list, but it's an error. BTW, there should be something to control operator' filter Drive amount, but I can't see it. I've tried with Drive, drive amt... and maybe others, but I didn't find.
One more thing : the BoB doesn't appear for me, instead I have the first bank, which is osc A.

tedlogan
Posts: 1347
Joined: Thu Dec 20, 2012 7:23 pm
Location: Leamington Spa, UK
Contact:

Re: Change Live devices default mapping in Push:on Page 7

Post by tedlogan » Sun Oct 27, 2013 10:03 pm

Yes, I think the other 2nd "Shaper amount" in Stray's list is meant to be the Drive, I don't know what the name should be either.

The BoB appears for me (Lfo Amount, Filter freq etc).

TomViolenz
Posts: 6854
Joined: Mon Dec 13, 2010 6:19 pm

Re: Change Live devices default mapping in Push:on Page 7

Post by TomViolenz » Sun Oct 27, 2013 10:12 pm

It happens for Operator and one I forgot now, where they actually gave the same name to two different things. Happens also when you configure. I guess that's a bug, nothing we can do about it I think :/

TomViolenz
Posts: 6854
Joined: Mon Dec 13, 2010 6:19 pm

Re: Change Live devices default mapping in Push:on Page 7

Post by TomViolenz » Sun Oct 27, 2013 10:19 pm

Try: Shaper Drive and Shaper Dry/Wet

That's at least what the configure window calls them.

metastatik
Posts: 318
Joined: Tue Mar 13, 2007 3:28 pm

Re: Change Live devices default mapping in Push:on Page 7

Post by metastatik » Sun Oct 27, 2013 10:41 pm

FWIW, the names shown in the *.html file I posted are derived directly from the API (I didn't manually type them out). For whatever reason, the API lists two parameters named 'Shaper Amt' for Operator. You can see this in shadx312's list in the first page of this thread as well.

metastatik
Posts: 318
Joined: Tue Mar 13, 2007 3:28 pm

Re: Change Live devices default mapping in Push:on Page 7

Post by metastatik » Sun Oct 27, 2013 10:57 pm

Valiumdupeuple wrote:One more thing : the BoB doesn't appear for me, instead I have the first bank, which is osc A.
Most control surfaces can either access BoBs or banks, not both. This is determined by whether the control surface has device bank controls. Push is the only exception I know of as it can access both BoBs and banks.

Valiumdupeuple
Posts: 1155
Joined: Mon May 31, 2010 12:36 pm
Contact:

Re: Change Live devices default mapping in Push:on Page 7

Post by Valiumdupeuple » Sun Oct 27, 2013 11:05 pm

TomViolenz wrote:Try: Shaper Drive and Shaper Dry/Wet

That's at least what the configure window calls them.
Thx Tom. None of them are working.
I've also noticed that the oscillators "Fix On" (prepend with the oscillator letter) doesn't work. This corresponds to the oscillators "Fixed" button.
metastatik wrote:
Valiumdupeuple wrote:One more thing : the BoB doesn't appear for me, instead I have the first bank, which is osc A.
Most control surfaces can either access BoBs or banks, not both. This is determined by whether the control surface has device bank controls. Push is the only exception I know of as it can access both BoBs and banks.
I'm on a Push. I'm with the latest 9.1 beta, though. I'll check on 9.0.x.

Cheers
J.

TomViolenz
Posts: 6854
Joined: Mon Dec 13, 2010 6:19 pm

Re: Change Live devices default mapping in Push:on Page 7

Post by TomViolenz » Sun Oct 27, 2013 11:22 pm

I've also noticed that the oscillators "Fix On" (prepend with the oscillator letter) doesn't work. This corresponds to the oscillators "Fixed" button.
Is this the Operator mapping you are using (it's my last and maybe final one): I have not assigned the "fixed on", that's why it's not working. If you have 8 encoders per page, that means you usually need to get creative in making a meaningful page. Those parameters just didn't make the cut. Do you find them so important to control via Push, it's just one click, but it would waste a whole encoder.
Also for the "OSC on" I thought that one can just use the Osc Volume instead, no?!

Code: Select all

OPR_BANK1 = ('A Coarse', 'A Fine', 'Osc-A Level', 'Osc-A Wave', 'Ae Attack', 'Ae Decay', 'Ae Sustain', 'Ae Release')
OPR_BANK2 = ('B Coarse', 'B Fine', 'Osc-B Level', 'Osc-B Wave', 'Be Attack', 'Be Decay', 'Be Sustain', 'Be Release')
OPR_BANK3 = ('C Coarse', 'C Fine', 'Osc-C Level', 'Osc-C Wave', 'Ce Attack', 'Ce Decay', 'Ce Sustain', 'Ce Release')
OPR_BANK4 = ('D Coarse', 'D Fine', 'Osc-D Level', 'Osc-D Wave', 'De Attack', 'De Decay', 'De Sustain', 'De Release')
OPR_BANK5 = ('Filter Type', 'Filter Freq', 'Filter Res', 'Fe Amount', 'Fe Attack', 'Fe Decay', 'Fe Sustain', 'Fe Release')
OPR_BANK6 = ('Pe Amount', 'Pe End', 'Pe Init', 'Pe Peak', 'Pe Attack', 'Pe Decay', 'Pe Sustain', 'Pe Release')
OPR_BANK7 = ('Osc-A < Pe', 'Osc-B < Pe', 'Osc-C < Pe', 'Osc-D < Pe', 'LFO < Pe', 'Pe Amt A', 'Pe Dst B', 'Pe Amt B')
OPR_BANK8 = ('LFO Type', 'LFO Range', 'LFO Rate', 'LFO Amt', 'Le Attack', 'Le Decay', 'Le Sustain', 'Le Release')
OPR_BANK9 = ('Osc-A < LFO', 'Osc-B < LFO', 'Osc-C < LFO', 'Osc-D < LFO', 'Filt < LFO', 'LFO Amt A', 'LFO Dst B', 'LFO Amt B')
OPR_BANK10 = ('Algorithm', 'Time', 'Tone', 'Shaper Type', 'Shaper Amt', 'Shaper Amt', 'Pan < Rnd', 'Panorama')
OPR_BANK11 = ('Ae Mode', 'Osc-A Phase', 'Ae Init', 'Ae Peak', 'Ae Attack', 'Ae Decay', 'Ae Sustain', 'Ae Release')
OPR_BANK12 = ('Be Mode', 'Osc-B Phase', 'Be Init', 'Be Peak', 'Be Attack', 'Be Decay', 'Be Sustain', 'Be Release')
OPR_BANK13 = ('Ce Mode', 'Osc-C Phase', 'Ce Init', 'Ce Peak', 'Ce Attack', 'Ce Decay', 'Ce Sustain', 'Ce Release')
OPR_BANK14 = ('De Mode', 'Osc-D Phase', 'De Init', 'De Peak', 'De Attack', 'De Decay', 'De Sustain', 'De Release')
OPR_BANK15 = ('Le Mode', 'Le End', 'Le Init', 'Le Peak', 'Le Attack', 'Le Decay', 'Le Sustain', 'Le Release')
OPR_BANK16 = ('Fe Mode', 'Fe End', 'Fe Init', 'Fe Peak', 'Fe Attack', 'Fe Decay', 'Fe Sustain', 'Fe Release')
OPR_BOB = ('LFO Amt', 'Filter Freq', 'Fe Amount', 'Pe Amount', 'Spread', 'Transpose', 'Time', 'Volume')
OPR_BANKS = (OPR_BANK1,
 OPR_BANK2,
 OPR_BANK3,
 OPR_BANK4,
 OPR_BANK5,
 OPR_BANK6,
 OPR_BANK7,
 OPR_BANK8,
 OPR_BANK9,
 OPR_BANK10,
 OPR_BANK11,
 OPR_BANK12,
 OPR_BANK13,
 OPR_BANK14,
 OPR_BANK15,
 OPR_BANK16)
OPR_BOBS = (OPR_BOB,)
OPR_BNK_NAMES = ('Oscillator A', 'Oscillator B', 'Oscillator C', 'Oscillator D', 'Filter', 'Pitch Envelope', 'Pitch Destination', 'LFO', 'LFO Destination', 'Algorithm/Shaper/Pan', 'Envelope Detail OscA', 'Envelope Detail OscB', 'Envelope Detail OscC', 'Envelope Detail OscD', 'Envelope Detail LFO', 'Envelope Detail Filter')

Valiumdupeuple
Posts: 1155
Joined: Mon May 31, 2010 12:36 pm
Contact:

Re: Change Live devices default mapping in Push:on Page 7

Post by Valiumdupeuple » Sun Oct 27, 2013 11:34 pm

No Tom I don't use yours.
Actually, I did, and then re-order to my taste.
I'll share it as soon as I can fix this 2-3 missing things.
All my BoBs are gone btw. They're back when I put the original pyc.
I need to investigate more.

Valiumdupeuple
Posts: 1155
Joined: Mon May 31, 2010 12:36 pm
Contact:

Re: Change Live devices default mapping in Push:on Page 7

Post by Valiumdupeuple » Sun Oct 27, 2013 11:47 pm

Regarding my BoBs problem:
It's strange. There's no problem until I load a I've modified. If I open a new set, load an device with original mapping, everything works.
If then I load Operator, no BoB for Operator, plus no more BoBs for other devices either. I have to load a new set to get them back. 8O

Valiumdupeuple
Posts: 1155
Joined: Mon May 31, 2010 12:36 pm
Contact:

Re: Change Live devices default mapping in Push:on Page 7

Post by Valiumdupeuple » Sun Oct 27, 2013 11:53 pm

Ok, it works, but I have to click the in and then the out buttons on Push to get them (modified and not modified devices).
By default, all devices load on bank 1 actually.

metastatik
Posts: 318
Joined: Tue Mar 13, 2007 3:28 pm

Re: Change Live devices default mapping in Push:on Page 7

Post by metastatik » Mon Oct 28, 2013 12:27 am

Sounds like a bug or error of some sort. Take a look in your Log.txt file to see if it offers an explanation and/or post your Log.txt file and modified Devices.py file here.

Valiumdupeuple
Posts: 1155
Joined: Mon May 31, 2010 12:36 pm
Contact:

Re: Change Live devices default mapping in Push:on Page 7

Post by Valiumdupeuple » Mon Oct 28, 2013 12:48 am

Yep, you're right, I've just find the bug, it's not me, I can reproduce it in L9.0.5.
Try it if you want, I'll report it BTW.
Open a new set. Make sure you have no midi track first (this is important).
So there's just an audio track.
Load an instrument with the mouse, it creates a midi track with this instrument. BoB is here.
Now, swap the instruments on that same track, not by using the hot swap button, but just (with the same track selected) by double-clicking an another instrument. BUG: Push displays the first bank. Now you need to click the in and out button on Push to access the BoB.
... Ok, just checked, same problem when using hot swap.

If you create the midi track and then load an instruments, the problem won't appear.

TomViolenz
Posts: 6854
Joined: Mon Dec 13, 2010 6:19 pm

Re: Change Live devices default mapping in Push:on Page 7

Post by TomViolenz » Mon Oct 28, 2013 11:44 am

Valiumdupeuple wrote:No Tom I don't use yours.
Actually, I did, and then re-order to my taste.
I'll share it as soon as I can fix this 2-3 missing things.
All my BoBs are gone btw. They're back when I put the original pyc.
I need to investigate more.
Yeah that's how to go about it :-)
But are you than saying that those values don't work when they are accessed by Push!

Regarding the BoB behavior: Is it now certain that this is a Live bug, and not us messing with things?

Post Reply