MJ7 (not sure) - MJ8 - MJ9 - MC10 - MC11 - MC12 - MC13 - MC14 - MC15 - MC16 - MC17 - MC18 - MC19 - MC20 - MC21 - MC22 - MC23 - MC24 - MC25 - MC26 ...
MJ7 was the first version I used.MJ8 > MC9 onwards. Around 17 years... How time flies by eh?
I remember being super skeptical when they added image support but now it's literally the only thing that's helping me keep them all organized.This. MC is as important to me for images, probably more so, as audio. For management, nothing out there can compete with MC. I really don't get why more users haven't embraced it for photos. Granted, it may have taken something like a year to get all the tags in order, but, that was mostly due to me taking my time with them so that it didn't turn into a painful chore... there were something like 9,500 files to get through at that time. Integration with Adobe Lightroom has really sped up my workflow no end.
MC has allowed me to organise them on the hard drive in such a way as, if I'm suddenly not around, family will make perfect sense of the folder structure.
I really don't get why more users haven't embraced it for photos.
Probably better for a separate thread but I'd be curious to know what structure you settled on. I gave up on trying to find anything else that made sense so I finally just dumped them into a mostly date-based structure.Many years ago, I decided that rather than use the default "People, Places, Events" tags, I would put all information in Keywords, nested appropriately, using exclamation marks to bring the branches to the top, similar to Windows folder viewing, with folders first, then files.
if(isequal([keywords],family\vada,8),
if(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),days,8),
ifelse(
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),7,3),removeright(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),7) Days,
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//7),0,,Weeks,Week),
!isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//30),0,,Months,Month)),
if(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),:,8),listitem(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),0,:) Hours,
ifelse(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),hours,8),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//24),0,,Days,Day),
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2),3) Year,
!isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2),3) Years))),)
I really do need to start sorting all my photos. I have a lot.I know what you mean, but it's all we have at the moment, so for me, it's best to embrace it and marvel at what is actually possible. Lightroom does facial recognition, and I believe that MC reads this, and imports the data into its [People] field. Lightroom's facial recognition really struggles identifying between my daughter and her daughter, which I find fascinating :)
If face tagging was supported inside MC, I might have started by now. I should investigate how well it works with Lightroom. But I tend to use Photoshop rather than Lightroom, so I would have a bit of a learning curve there as well.
Maybe if there was a tutorial all in one place, which would be in the Wiki, and if it didn't require lots of custom fields and complex expressions... ;)
Many years ago, I decided that rather than use the default "People, Places, Events" tags, I would put all information in Keywords, nested appropriately, using exclamation marks to bring the branches to the top, similar to Windows folder viewing, with folders first, then files.
I then use various expression based fields to pull info out of keywords as required. For example, I have "Population, Location and Occassion" fields. These are mostly for Theater View at the request of Family.
I really like that MC uses the date for photo albums by default, but, I have auto import switch that around to yyyy/MM/dd as they then sort more sensibly.
I mostly shoot in RAW, and, as I never fully embraced MC's RAW handling, I've used Lightroom from day 1. From there, I export to a folder MC watches, where it applies some tag on import magic...
(https://mpw.scot/pics/ia/26/snap-048.jpg)
Once imported, these are pretty much good to go, thanks, in part, to this (https://yabb.jriver.com/interact/index.php/topic,109858.msg760711.html#msg760711). I change the album if necessary, which is not often, then run rename, move & copy on them to file them in their final resting place.
If we've been "Day Tripping", they go into the "Day Tripping > Location > yyyy - MM" folder
If they are from an "Event", they go into the "Occassion > yyyy - MM" folder
If the Album is not a date, they go into the "Picture Albums > Album" folder
What's left will just be snaps, so they go into the "Photographer > yyyy - MM" folder, except mine, which go into "Photographer > Camera > yyyy - MM".
That's the basics of my HDD filing. Also, inside MC...
Auto import also tags every photo imported with birthday dates for around a dozen people. This itself doesn't immediately do anything at all, but, as soon as any of those people appear in the keywords tag, this kicks in and instantly returns their age at the time the photo was taken. This is hugely popular here, the girls love seeing that stuff in the caption when they're viewing slideshows.Code: [Select]if(isequal([keywords],family\vada,8),
if(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),days,8),
ifelse(
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),7,3),removeright(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),7) Days,
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//7),0,,Weeks,Week),
!isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//30),0,,Months,Month)),
if(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),:,8),listitem(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),0,:) Hours,
ifelse(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),hours,8),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//24),0,,Days,Day),
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2),3) Year,
!isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2),3) Years))),)
For each person, you need two fields, one for the birth date, and one for the maths and "Formatdate()". Once set up, they really are, truly, "set & forget", so, you can mark them as hidden fields in the field manager to remove the noise from the field list.
I know what you mean, but it's all we have at the moment, so for me, it's best to embrace it and marvel at what is actually possible. Lightroom does facial recognition, and I believe that MC reads this, and imports the data into its [People] field. Lightroom's facial recognition really struggles identifying between my daughter and her daughter, which I find fascinating :)
The single biggest ball-ache is getting the files all tagged. There is no quick way to do this. Way back in the MC12 days, I tried many many different programs searching for that holy grail of quick and simple tagging, and for me, there simply wasn't one. Programs that used a "keyword brush" were about as close at it got, but everything else about them was so seriously lacking, I just set about the slog of first time MC tagging. Pane tagging is a god-send here.
Sometime up the road from that, I started using Lightroom for RAW images taken with my new NIKON toy. I picked a photo, added every keyword used in MC to it, and imported that into Lightroom, sorted them out in Lightroom (easy to do), and from there, tags applied in Lightroom, yes, even new ones, are seamlessly imported into MC's nested keyword field. Once set up, it just works.
Naturally, we are not all wired up the same, so just the thought of this would be an instant turn off for some, or intriguing for others. Me? Very happy indeed, though I've been through that initial tagging trauma some years ago now :)
-marko
I love this. Definitely going to steal this.It was the result of this earlier thread (https://yabb.jriver.com/interact/index.php/topic,117116.0.html). It's brilliant, and, Matt fixed the "68 year old" bug mentioned in that thread, so there's nothing standing in its way now. Let me know if you need any help with it. The original goal was to view pics of children/parents/grandparents at the same age... Trust me, it's freaky!! :D
Since Lightroom has been mentioned, I finally dare to ask the question: what’s the value add for Lightroom users?
LR has reasonably well metadata / tagging features, face recognition, cloud sync. You can set up the equivalent to MC Library Views to navigate your collection. LR Is where photos are first imported, filed, developed etc.
What more do I get when using MC for photos, other than the fun of more metadata fiddleing?
I should add that I upload all my developed photos to my mostly private Flickr account, making them available on any device.
And no, am not down talking MC, am User since Jukebox times and just got the MC27 license.
I really don't get why more users haven't embraced it for photos.
<snip>...and if it didn't require lots of custom fields and complex expressions... ;)I thought about this today as I set about tidying up the formatting of our image slideshow caption on the HTPC, and kind of get your point. Naturally, I think our slideshow caption is brilliant, and viewers definately enjoy the information, and, those times we just want the pictures, a button on the remote control turns off the OSD.
Replace(ListGrep([keywords],!People),!People\,)&datatype=[list]
Replace(ListGrep([keywords],!Events),!Events\,)&datatype=[list]
Replace(ListGrep([keywords],!Places),!Places\,)&datatype=[list]
if(isequal([keywords],friends\alex,8),
if(isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),days,8),
ifelse(
isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),7,3),removeright(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),7) Days,
isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed))//7),0,,Weeks,Week),
!isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed))//30),0,,Months,Month)),
if(isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),:,8),listitem(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),0,:) Hours,
ifelse(isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),hours,8),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed))//24),0,,Days,Day),
isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),2),3) Year,
!isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),2),3) Years))),)
auto import:listbuild(1,;,
ifelse(
isequal([Age-Vada],hour,8),Hours\[Age-Vada],
isequal([Age-Vada],day,8),Days\[Age-Vada],
isequal([Age-Vada],week,8),Weeks\[Age-Vada],
isequal([Age-Vada],month,8),Months\[Age-Vada],
isequal([Age-Vada],year,8),Years\[Age-Vada]),
ifelse(
isequal([Age-Caroline],hour,8),Hours\[Age-Caroline],
isequal([Age-Caroline],day,8),Days\[Age-Caroline],
isequal([Age-Caroline],week,8),Weeks\[Age-Caroline],
isequal([Age-Caroline],month,8),Months\[Age-Caroline],
isequal([Age-Caroline],year,8),Years\[Age-Caroline]),
ifelse(
isequal([Age-Tracy],hour,8),Hours\[Age-Tracy],
isequal([Age-Tracy],day,8),Days\[Age-Tracy],
isequal([Age-Tracy],week,8),Weeks\[Age-Tracy],
isequal([Age-Tracy],month,8),Months\[Age-Tracy],
isequal([Age-Tracy],year,8),Years\[Age-Tracy]),
ifelse(
isequal([Age-Stephen],hour,8),Hours\[Age-Stephen],
isequal([Age-Stephen],day,8),Days\[Age-Stephen],
isequal([Age-Stephen],week,8),Weeks\[Age-Stephen],
isequal([Age-Stephen],month,8),Months\[Age-Stephen],
isequal([Age-Stephen],year,8),Years\[Age-Stephen]),
ifelse(
isequal([Age-elli],hour,8),Hours\[Age-elli],
isequal([Age-elli],day,8),Days\[Age-elli],
isequal([Age-elli],week,8),Weeks\[Age-elli],
isequal([Age-elli],month,8),Months\[Age-elli],
isequal([Age-elli],year,8),Years\[Age-elli]),
ifelse(
isequal([Age-Nettie],hour,8),Hours\[Age-Nettie],
isequal([Age-Nettie],day,8),Days\[Age-Nettie],
isequal([Age-Nettie],week,8),Weeks\[Age-Nettie],
isequal([Age-Nettie],month,8),Months\[Age-Nettie],
isequal([Age-Nettie],year,8),Years\[Age-Nettie]),
ifelse(
isequal([Age-Mark],hour,8),Hours\[Age-Mark],
isequal([Age-Mark],day,8),Days\[Age-Mark],
isequal([Age-Mark],week,8),Weeks\[Age-Mark],
isequal([Age-Mark],month,8),Months\[Age-Mark],
isequal([Age-Mark],year,8),Years\[Age-Mark]),
ifelse(
isequal([Age-MarkB],hour,8),Hours\[Age-MarkB],
isequal([Age-MarkB],day,8),Days\[Age-MarkB],
isequal([Age-MarkB],week,8),Weeks\[Age-MarkB],
isequal([Age-MarkB],month,8),Months\[Age-MarkB],
isequal([Age-MarkB],year,8),Years\[Age-MarkB]),
ifelse(
isequal([Age-amiee],hour,8),Hours\[Age-amiee],
isequal([Age-amiee],day,8),Days\[Age-amiee],
isequal([Age-amiee],week,8),Weeks\[Age-amiee],
isequal([Age-amiee],Month,8),Months\[Age-amiee],
isequal([Age-amiee],year,8),Years\[Age-amiee]),
ifelse(
isequal([Age-tracy c],hour,8),Hours\[Age-tracy c],
isequal([Age-tracy c],day,8),Days\[Age-tracy c],
isequal([Age-tracy c],week,8),Weeks\[Age-tracy c],
isequal([Age-tracy c],Month,8),Months\[Age-tracy c],
isequal([Age-tracy c],year,8),Years\[Age-tracy c]),
ifelse(
isequal([Age-alex],hour,8),Hours\[Age-alex],
isequal([Age-alex],day,8),Days\[Age-alex],
isequal([Age-alex],week,8),Weeks\[Age-alex],
isequal([Age-alex],Month,8),Months\[Age-alex],
isequal([Age-alex],year,8),Years\[Age-alex]),
ifelse(
isequal([Age-megan],hour,8),Hours\[Age-megan],
isequal([Age-megan],day,8),Days\[Age-megan],
isequal([Age-megan],week,8),Weeks\[Age-megan],
isequal([Age-megan],Month,8),Months\[Age-megan],
isequal([Age-megan],year,8),Years\[Age-megan]),
ifelse(
isequal([Age-kinley],hour,8),Hours\[Age-kinley],
isequal([Age-kinley],day,8),Days\[Age-kinley],
isequal([Age-kinley],week,8),Weeks\[Age-kinley],
isequal([Age-kinley],month,8),Months\[Age-kinley],
isequal([Age-kinley],year,8),Years\[Age-kinley]))&datatype=[list]
ifelse(isequal([osd],;!,8),replace([osd],;!,/,/ ),isequal([osd],;,8),replace([osd],;,/,/ ),1,[osd])
Photographer: [artist], using if(regex([camera],/#^([aAeEiIoOuUhH])#/,0),an,a) if(isequal([camera],nikon d5000,8),[camera] with if(isequal([lens],10,8),a,an) removeright([lens],10) lens at [focal length],[camera])
[baby's age][baby's date]
ifelse(!isempty([caption]),[caption],!isempty([occasion]),if(isequal([occasion],!,8),regex([Occasion],/#!(.+)\\(.+)#/,-1,0)if(isequal([R1],\!,8),replace([R1],\!,/,/ ),[R1]): [R2],[occasion]),!isempty([location]),if(isequal([location],!,8),regex([location],/#!(.+)\\(.+)#/,-1,0)if(isequal([R1],\!,8),replace([R1],\!,/,/ ),[R1]): [R2],if(isequal([location,0],;,8),replace([location,0],;,:/ ),[location])),1,[caption])
What this does, is pose the questions asked above, and then format the result, removing semi-colons, back slashes and exclamation marks, inserting commas and spaces where required, with final bits of tidying up performed via a second pass over the output of this OSD field.Photographer: [artist], using if(regex([camera],/#^([aAeEiIoOuUhH])#/,0),an,a) if(isequal([camera],nikon d5000,8),[camera] with if(isequal([lens],10,8),a,an) removeright([lens],10) lens at [focal length],[camera])
if(regex(listbuild(1,=,ifelse(isequal([keywords],people\family\kinley,8),Kinley/ aged/ [age-kinley]),ifelse(isequal([keywords],people\family\amiee,8),Amiee/ aged/ [age-amiee]),ifelse(isequal([keywords],people\family\elli,8),Elli/ aged/ [age-elli]),ifelse(isequal([keywords],people\family\vada,8),Vada/ aged/ [age-vada]),ifelse(isequal([keywords],people\family\stephen,8),Stephen/ aged/ [age-Stephen]),ifelse(isequal([keywords],people\family\tracy,8),Tracy/ aged/ [age-tracy]),ifelse(isequal([keywords],people\family\caroline,8),Caroline/ aged/ [age-caroline]),ifelse(isequal([keywords],people\family\markb,8),MarkB/ aged/ [age-markb]),ifelse(isequal([keywords],people\family\nettie,8),Nettie/ aged/ [age-nettie]),ifelse(isequal([keywords],people\friends\Alex,8),Alex/ aged/ [age-alex]),ifelse(isequal([keywords],people\friends\megan,8),Megan/ aged/ [age-megan]),ifelse(isequal([keywords],people\friends\Tracy c,8),Tracy C/ aged/ [age-tracy c]),ifelse(isequal([keywords],people\family\markw,8),Mark/ aged/ [age-mark])),/#^(.+?)(?:=([^=]+))?$#/),listbuild(1, / and/ , replace([R1], =, /,/ ), [R2]), )
MrC kindly provided the regex magic for this one. As you add ages to track, you just need to add an "IfElse()" condition for that person and the expression takes care of the required grammatical output. It's very clever.ifelse(!isempty([age]),/ - formatdate([date,0],dd MMMM yyyy),1,formatdate([date,0],dd MMMM yyyy))
I'm actually finding the photo management to be exremely useful. Previously I had no real photo management and I'd simply browse the folders in Explorer which was too cumbersome once a lot of images were involved. For some reason I didn't fully digest that I already had the solution all along in JRiver which I had been using for music/video for quite a few years. I decided to give it whirl and imported all my images. Now I can find the image I need by location, date, person, camera, you name it by utilising JRiver's powerful search function. One of my favourite features (albeit quite a modest one) is the ability to 'locate on Google Maps'.
if(isequal([keywords],friends\alex,8),
save(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),_age)/
ifelse(
isequal([_age],days,8),ifelse(
isequal([_age],7,3),removeright([_age],7) Days,
isequal([_age],60,3),formatnumber(math(int(number([_age])//7)),,,Weeks,Week),
1,formatnumber(math(int(number([_age])//30)),,,Months,Month)),
isequal([_age],:,8),listitem([_age],0,:) Hours,
isequal([_age],hours,8),formatnumber(math(int(number([_age])//24)),,,Days,Day),
1, formatnumber(math(int(number([_age]))),,,Years,Year)),)
ListClean(ListMix(if(Regex([age-[L1]], /#(hour|day|week|month|year)#/,0),FixCase([R1]s)\[age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3)
Replace(ListFormat(ListClean(ListMix(if(Regex([keywords],/#(family|friends)\\[L1]$#/,0),[L1] aged [age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3),2),&,and)
Interesting stuff, makes me want to try this sooner than later! Thanks for all the tips Marko.You're welcome. I've not mentioned it here yet, but another brilliant thing that can be done is, slideshows with music...
I was looking at your expressions, and started playing with some of them in Zelda to understand what they do and adapt to my needs. The largest ones are very repetitive, and we now have some new Functions available that can simplify them a lot - this improves readability, makes changes easier, and makes them faster too.Thanks. There will be much in my library that could be streamlined, but, I'm old, and lazy, and if it ain't broke... :)
I rewrote the 3 largest ones you have - if you want to try them, check the fieldnames to see if they still match your fields/names.
Age tree - massively shorter, using ListMix() with a list of the person's names, which are converted to [Age-xxxx] fields:Once "&datatype=[ list]" is appended, this exactly replicates the "Age" tree, but, the view load time, and update time after clicks, is doubled. I tried with both an expression pane, and saving the expression to a library field, and both the same. Counting 'mississipis', the view with my tree version loads and updates in just under one, while the view with listmix() takes two.
To add persons, just add the person's name to the ListMix list. The corresponding field must be named [age-Name]Code: [Select]ListClean(ListMix(if(Regex([age-[L1]], /#(hour|day|week|month|year)#/,0),FixCase([R1]s)\[age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3)
Third line of the caption, with people's ages - again using ListMix():In Zelda, this is only returning the age of the last person in the tag.
To add persons, just add the person's name to the ListMix list, same as above. You could even have a [PersonNames] field holding the list of names and use that in both expressions...Code: [Select]Replace(ListFormat(ListClean(ListMix(if(Regex([keywords],/#(family|friends)\\[L1]$#/,0),[L1] aged [age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3),2),&,and)
In Zelda, this is only returning the age of the last person in the tag.Yeah, after I went to bed to was thinking on the expression and I remembered a corner case - "Tracy" would wrongly match if "Tracy C" is in the keywords. So I grabbed my phone and "fixed" the code without testing ::) I added a single "$" which broke it. The correct fix is now highlighted:
Replace(ListFormat(ListClean(ListMix(if(Regex([keywords],/#(family|friends)\\[L1]($|;)#/,0),[L1] aged [age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3),2),&,and)
Replace(ListFormat(ListClean(ListMix(if(or(isequal([Keywords];,family\[L1];,8),isequal([Keywords];,friends\[L1];,8)),[L1] aged [age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3),2),&,and)
ListItem(No People;math(listcount([keywords],!People) - 1) Person;math(listcount([keywords],!People) - 1) People,min(max(math(listcount([keywords],!People) - 1),0),2))
Fixed my 'Headcount' expression myself too, so not completely out the game yet :)Clever solution :)Code: [Select]ListItem(No People;math(listcount([keywords],!People) - 1) Person;math(listcount([keywords],!People) - 1) People,min(max(math(listcount([keywords],!People) - 1),0),2))
I would like to reiterate that these things are used because they add value to our MC experience with photos, and some cases, just because we can, but are by no means essential nor required. The defaults in MC have been well chosen, so don't let these crazy looking expression strings put you off.