Forums > Beta

Chess for Max

March 25, 2013 | 11:51 pm

Presenting the best Max object you never knew you needed: "uci", filling out the Max feature set with that certain je ne sais quoi which only chess can provide. Years in the making, now immediately available for your personal enjoyment.

Features:
- mouse and text move input (short/long algebraic or coordinate notation)
- move verification, check and mate detection, en passant, castling and promotion
- move message output indicating (long) algebraic notation, coordinate notation, ply and move success (validity)
- FEN input/output support
- 17 buttery smooth and expertly centered piece sets
- fonts and colors
- coordinates
- view the board from White or Black’s perspective
- load and configure up to 2 UCI-compatible chess engines — play against yourself, a friend, a computer or let two computers play against one another
- full engine analysis output is available for parsing & evaluation
- 32/64 bit compatible
- Mac & Windows support

Coming "soon":
- PGN file/database input/output
- Max for Live device for color-coded chess using Ableton’s Push interface

Available in a convenient Max 6.1 Package format @ http://www.expr-i0.net/uci.zip

Thanks in advance for any testing or comments.

Jeremy

[attachment=218968,5278]

Attachments:
  1. uci.png

March 26, 2013 | 12:13 am

Very cool Jeremy!

Am i correct in understanding that pawns on reaching the backboard don’t change to a new piece?

Also, I do not see documentation for the checkboxes available in the options window, so alas I am unsure what those check boxes toggle.


March 26, 2013 | 12:18 am

Promotion might have been, eh, overlooked. I've never really played a real game using this thing. :-) En passant capturing is supported, though, I'll fix the promotion bug as soon as possible.

Attached is my options dialog for the Stockfish engine. Yours doesn't look like that?

Best, Jeremy

[attachment=218972,5281]

Attachments:
  1. Bildschirmfoto20130326um01.04.15.png

March 26, 2013 | 12:37 am

Yes, Ok, gotcha.


Yes, that’s the image I see.


March 26, 2013 | 12:56 am

I just replaced the archive at the location linked above with a version which fixes the promotion bug. Sorry about that.

Note that underpromotion is only available if you type the move in (e.g. c8=N in algebraic or c7c8n in coordinate). Otherwise, you’re getting a queen.

Sooo, if that’s the image you see, those are options for the Stockfish engine and are probably documented on the Stockfish website (http://stockfishchess.org/) — I’m just passing along the stuff that the engine tells me about. Certain options, like MultiPV (to enable more than 1 principle variation in analysis) or Threads (to control processor usage) are fairly widespread. Others are engine-specific, so you have to find the engine documentation to get a good idea of what those things do.

jb



dtr
March 26, 2013 | 8:37 am

> or let two computers play against one another

singularity is near!


March 26, 2013 | 9:15 am

hey
your presentation at CodeControl was very cool :)


March 26, 2013 | 12:02 pm

bravo !


March 26, 2013 | 2:31 pm

Coming soon:
- view game score from White's perspective (it's currently relative to the side to move)
- option to output PV in coordinate notation, which is easier to parse and map in Max (see below — very simple LCD rendering of the engine's "thoughts" during the famous game Morphy vs. Anderssen)

[attachment=219028,5289]

Attachments:
  1. Bildschirmfoto20130326um15.18.26.png

March 26, 2013 | 6:12 pm

It’s so great !
I’d love to test this on windows !!


March 26, 2013 | 10:31 pm

ha! unbelieveable, love it, can’t wait to try this!


March 27, 2013 | 12:14 am

I’ve uploaded a new version to http://www.expr-i0.net/uci_130327.zip .

- changes (hopefully improvements) to UCI engine output parsing, more information now available
- option to display UCI engine score from White’s perspective (so, absolute). On by default.
- option to output UCI engine PVs in coordinate notation (rather than algebraic) to facilitate move parsing. Off by default.
- ensure that running UCI engines are analyzing the position on the board.
- some minor improvements to the help file (particularly in the parsing subpatcher).

LATER (file above was replaced)

- minor fixes to ‘info’ output parsing
- complete rewrite of IPC code to accommodate engines with buffered output. Engine loading is now much faster as a side effect.
- ‘load’ message opens a dialog if no arguments are supplied
- ‘id’ info is reported by the engine (name and author)
- more helpfile fixes (non-multiPV case was missing)

Thanks in advance for testing and feedback!

Jeremy

(below is another stupidly simple rendering, this time World Champion Vishy Anand’s beautiful win as Black over Levon Aronian at this year’s Wijk aan Zee tournament)

[attachment=219096,5297]

(by the way, you can read more about the UCI protocol and download the spec here: http://www.shredderchess.com/chess-info/features/uci-universal-chess-interface.html . It might assist you in writing your own parsing patcher for the data streaming from the uci object, but probably not that much)…

Attachments:
  1. Bildschirmfoto20130327um00.59.44.png

March 27, 2013 | 10:45 pm

Karpov – Kasparov, 1985, Game 24

[attachment=219175,5304]

Attachments:
  1. Bildschirmfoto20130327um23.30.01.png

March 27, 2013 | 11:33 pm

I’m seeing a series of fine art prints here, Jeremy. The N greatest chess games ever played.


March 28, 2013 | 8:08 am

I’m mostly interested in perfecting my ballpoint pen emulation for the time being, but if any wealthy patrons would like limited edition archival prints, they know where to find me. ;-)

Barring any further bug reports, the version of the object at http://www.expr-i0.net/uci.zip is definitive for now. Getting a Windows version going may take a little while, but that’s what’s next.

Best, Jeremy


March 29, 2013 | 12:17 am

i was about to say it, the impressive part of the otherwise ugly image is that it really looks like ballpoint pen.


March 29, 2013 | 2:13 am

stupid question– what are those pictures you keep posting? are they the traces of pieces on the chessboard during a game or something more abstract?



jko
March 29, 2013 | 9:32 am

Cool! Unfortunately Max gets these errors here when trying to load the engines:

uci: load error: could not execute Macintosh HD:/Applications/Max 6.1/packages/uci/misc/critter-16a
uci: load error: could not execute Macintosh HD:/Applications/Max 6.1/packages/uci/misc/stockfish-231-64

The whole package is in "Macintosh HD:Applications:Max 6.1:packages:uci", read access is granted…
Max 6.1
Osx 10.6.8


March 29, 2013 | 9:40 am

@Terry McDermott: in every position (so after every move played in the game), the UCI chess engine (Critter in this case: http://www.vlasak.biz/critter/ ) starts "thinking" and sends a number of lines of potential future play (principle variations = PV), each with a score (in floating point pawns). The (very simple) patch I made basically draws these PVs (as many as are sent within 2-3 seconds), uses the score to determine a color [more white = in white's favor, more black = in black's favor, blue = LCD bug, basically means very much in Black's favor]… and that’s it. Add a little random jitter to the pen positions and voilà, ballpoint pen sketches.

So the drawings are basically maps of what could have happened after each move. Some of the lines did happen, some didn’t. So it’s slightly more abstract, but not much!

Best, Jeremy


March 29, 2013 | 10:27 am

@jko: are you in 32- or 64-bit mode — you can determine that by following the instructions here: http://osxdaily.com/2009/09/07/how-to-tell-if-youre-running-the-32-bit-or-64-bit-kernel-in-mac-os-x-snow-leopard/ ? I just verified that everything loads on a 10.6.8 machine in 64-bit mode.

Here are a few things to try from the Terminal:
> cd /Applications/Max 6.1/packages/uci/misc/
> ./critter-16a

Does the engine execute? If you see something like "Critter v1.6a 64-bit, by Richard Vida" printed, then it worked. Type ‘quit’ to exit the engine. If that didn’t work. Type:

> ls -al

and look at the permissions on the left-hand side of the listing. Mine are "-rwxr-xr-x". If you are missing the ‘x’s, the file isn’t executable for some reason (your unzipper might have trashed them). Try:

> chmod 755 critter-16a

and see if that fixes the problem (for Critter — you’ll have to do the same with Stockfish, of course).

Thanks, let me know what you find. I have a 32-bit 10.6.8 machine kicking around that I can test on, too, if you don’t get any further after trying this stuff out.

Best, Jeremy



jko
March 29, 2013 | 10:46 am

Hi Jeremy

It’s the 32 bit kernel. (do you think I should try to switch to the 64 kernel generally? It’s an old machine but it does what I need it to so far…)

Enginge executes with this message:
jkomac:misc jko$ ./critter-16a
Critter v1.6a 64-bit, by Richard Vida
hardware POPCNT disabled

File permissions are good.

Thanks for your help, best, Joerg



jko
March 29, 2013 | 10:50 am

BTW: tried to load the Hiarcs Hiarcs13.1SP and the Hiarcs13.1MP as well (I use these here with Sigma), also no success.


March 29, 2013 | 11:08 am

@jko, thanks for that.

If you were running the 32-bit kernel, Critter would say "Critter v1.6a 32-bit, by Richard Vida", so I suspect that you are actually running the 64-bit kernel!

I know that HIARCS 13 & 14 both work in 64-bit mode (the changes I made to the IPC in the last version were due to HIARCS’s buffered output, in fact). And I just installed Max and ‘uci’ on my 32-bit 10.6.8 box and could successfully load and run Critter (the version of Stockfish which I put in the archive is 64-bit only, so you’d need to get the 32-bit version from their site). So this is a puzzle.

Is there anything in your Console.app which looks relevant?

Thanks, Jeremy


March 29, 2013 | 11:27 am

@jko: OK, here’s an idea. It might be the spaces in the path names. You could use a packages folder in your user documents folder to test this, so that the path to the file is /Users/jko/Documents/Max/Packages/uci/misc/critter-16a , without any spaces. Please give that a whirl.

Jeremy



jko
March 29, 2013 | 11:27 am

Strange: Because I have

uname -a
Darwin jkomac.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386

I’ll be offline for some days now and will get back to you next week. Happy Easter!



jko
March 29, 2013 | 11:35 am

Ha, twas the Spaces in the paths! Got it working now, thanks!


March 29, 2013 | 11:39 am

Great, I’ll fix that and update the archive. The ‘stat’ tool that I’m using to verify executability is apparently stricter about spaces than the other parts of the IPC chain.

Thanks, Jeremy


March 29, 2013 | 2:19 pm

OK, a general fix for paths containing spaces is now included in the object at http://www.expr-i0.net/uci.zip

Thanks for helping me find that (embarrassing) problem, Jeremy


April 3, 2013 | 11:50 pm

You asked for it… At long last, the Windows version is finally available. :-)

http://www.expr-i0.net/uci.zip now contains 32- and 64-bit Windows binaries, an updated helpfile and some Windows UCI engines to play around with (in addition to an updated Max external). Thanks for checking it out, and please let me know if you run into any trouble. I’m not 100% satisfied with the quality of the images on Windows, so there may still be some changes in that regard, but it should be otherwise feature-equal with the OSX version.

Best, Jeremy


April 20, 2013 | 9:22 am

Anyone had a chance to try this out on Windows who cares to lavish praise/indifference/scorn on the project? Like, does it work?


April 20, 2013 | 12:04 pm

oh…i loose!

(win 32bit)


April 20, 2013 | 1:10 pm

I’m not sure I understand. Windows 32-bit is working for me. But maybe you just mean that the computer beat you. :-) Don’t feel bad — even the free engines provided in the download are tendencially stronger than human grandmasters.


April 20, 2013 | 8:05 pm

You guess right… i just can not beat max!…max/msp at last takes revenge for all these painful hours of experimentation …Jeremy this object is INCREDIBLE! THANK YOU!



Nat
April 24, 2013 | 9:09 pm

Jeremy, hope you don’t mind, I added the package to my new Max Package Downloader (https://github.com/natcl/max_package_downloader)
For easy download and update from within max !


April 25, 2013 | 6:06 am

Permission granted! Thanks, Jeremy



jko
June 3, 2013 | 12:37 pm

Hi Jeremy

Building something to paste in Openings and play Chess by sending moves via email I realized that the back / forward function stops working after a certain count of moves. See attachment. Would be perfect if you look into and see if there is an easy fix (or if it’s just here) before I start building a FEN history by myself….
Best, Joerg

<code>

– Pasted Max Patch, click to expand. –

</code>


June 3, 2013 | 3:21 pm

Thanks for the report. I’ll check this out and get back in the next day or so.

Jeremy


June 3, 2013 | 11:45 pm

Good find, it’s a tiny little bug in the FEN parser. I’ll push new versions out later today, thanks for helping to track that down.

Jeremy


June 4, 2013 | 3:20 am

Updated package is now available here.



jko
June 4, 2013 | 5:39 am

Wonderfull Jeremy, thanks a lot!

So attached is a maxproj that can do 2 things:
1) we use it to play remote chess by sending moves via mail: Start a new game or paste the move sequence you got into the textedit box. Make your move, it’ll be appended to the text. Copy everything in the textbox and paste it into an email, send, done, wait for reply. If you don’t need to recreate the game you can also just append your move in the mail using the short Notation a1a2. If you paste it in the patch later the parser will tidy it again. (You could also send pgn files but this way it’s very simple to reply without opening the patch if the game is still on your table).
(a co-player told us he played chess in a tournament by sending moves via postcards, 3months timeout for 10 moves – nice)
If you use back forward the textedit field will be cleared not to mix it up completely….
2) Paste in games from wikipedia (eg: http://de.wikipedia.org/wiki/Liste_bekannter_Schachpartien) or whatever. You can basically paste in everything as long as the moves contain start field and end field "11. Qd4xe5??" will work as good as "d4e5", as long as it’s a valid move and there is no spaces inside. "Qe5" will not work! You can paste in a lot of moves at once (text will be ignored, but alternatives not, so just copy the lines that contain real moves). Hit enter or click the button, if it can not be parsed you’ll see the problem move below the board. Use the back forward buttons to see what happened in the game.

You might want to remove the german attribute in the js box in order to output english Shortnames (RBQKN)

If there was still pm-Option I would ask you to challenge me that way but I can’t find it anymore, is it gone?

Attachments:
  1. jkofs.zip

Viewing 40 posts - 1 through 40 (of 40 total)