What is this all about? This is a brief info dump about syncing DAPs or external storage with JRiver. I recently bought a Sony WM1A, and as you probably know, it has 128GB internal storage, and a single card slot. I generally want to carry more music than would fit on a single card, so need to get off my ass and use the internal storage too. However, doing this by hand could get annoying really fast. My music is stored as FLACs on a NAS. One of the players that uses the files is JRiver running on my PC. JRiver has some rudimentary syncing support, as well as quite useful filtering/expression support. It's possible to set it up so that it reacts to library tags and automatically writes/moves content to the internal rather than external storage, or even to the card of your choice on mounting. What follows is a quick and dirty explanation of how I set it up, in case someone else wants to do something similar, with a similar bunch of mass storage destinations. It may also help me, when I forget how the hell I did it, which seems likely. The method In principle, this should work with most players that mount as mass storage. Here you can see that the F: and G: drives are visible from the WM1A: That's great, we're in business- we can configure those drives as "handhelds" in JRiver, and set up automatic smart syncing. First of all though, we need to define a new data field in the library, which stores the flag that defines where the content goes. In Options/Library And Folders/Manage Library Fields, you can define a new field like this: I used a tickbox and set a single "acceptable value", IsInternal* to make the field function as a simple boolean. That means it's either "on" or "off"- or from JRiver's point of view, the field is set to "IsInternal" or nothing. This is important. Once you've defined the new field, you can go into tagging view (alt-enter) and if you right click and go to "Also Show" in the popup menu, you can enable the new field. This means that you can easily use this field and tag content that you want to route to the internal storage. To mark content, simply go to the new "Internal" field and tick it like this: Now we need to define two "smartlists" which automatically react to the presence or otherwise of the new field. I used two, called "Internal Storage" and "External Storage". To set up smartlists, go to "playlists" in the left panel, right click, and choose "add smartlist". Here's how I set up the first one, which has a smart rule to test for the presence of the "IsInternal" value in the "Internal" field: ...and here's the companion smartlist for the external storage, which tests for the absence of the same value: You can check that all this is working by tagging a few albums with the new field, and then checking the smartlists. One should consist of tagged content, the other of untagged. If it doesn't there's something amiss, so go back and re-check the config. For the final lazy bastard convenience step, I set each "handheld" (the F: and G: drives ) up to sync automatically on mounting, and also to delete any content not in the playlist. This is helpful for keeping things sane, but it's worth thinking carefully before enabling this option, if you sometimes use the device for storing other content temporarily (though strictly speaking, JRiver shouldn't touch stuff outside of certain folders like "MUSIC".. in theory). Anyway, this is configured in the options for each handheld. So, for the internal storage (in my case, the F: drive), I unticked all content in the right pane of the options dialogue, except for the "internal" smartlist. I also enabled the "Auto Sync.." and "Delete from handheld.." options: Similarly, for the G: drive, I set it up to use the "external" smartlist, with the same options ticked: Et viola! Now, when the WM1A is plugged in, content automatically flows to the correct bit of storage, easy. Advanced level laziness: If you have enough content that you needed loads of cards, you could easily manage it this way, too. Instead of a single acceptable value for the custom field ("IsInternal"), you could have a semicolon-separated list of them, like: Classical; Classical 2; Jungle; Industrial; Ambient; Spoken Word Because handhelds use more than just drive letter (or presumably mount point, on Linux, can't be arsed to boot into Linux and start JRiver to check), you can have handheld definitions for any number of external cards, and matching smartlist definitions for them. These could match the values in the example above, to copy content onto the appropriate card whenever it's inserted. This would let you pre-manage your content via tags. It should work when the media is mounted by whatever means, whether through the player, via card readers or whatever else. * Yes, I know, that's ugly- you don't have to use that sort of notation, and can use spaces. I'm a nerd, and was thinking variable names when I did it.