MacDonald, 25, has agreed a two-and-a-half-year deal, with the Club holding a one-year extension option, and he is delighted to have joined Nigel Adkins’ squad.
“It’s a big step for me and I’m looking forward to getting going here,” said MacDonald.
“This is a big club and a chance for me to progress my career. When you arrive at a club, you’re always going to have to fight for a place in the team and I’ll look to do that by trying to impress in training.”
After coming through Reading’s academy and representing England at Under 16 and Under 19 level, MacDonald played for AFC Wimbledon, Salisbury City and Torquay United before joining Barnsley in 2016.
He played 54 times for the Oakwell club, and was made first team captain at the start of this season.