{"action":"created","issue":{"url":"https://api.github.com/repos/tidalcycles/Tidal/issues/231","repository_url":"https://api.github.com/repos/tidalcycles/Tidal","labels_url":"https://api.github.com/repos/tidalcycles/Tidal/issues/231/labels{/name}","comments_url":"https://api.github.com/repos/tidalcycles/Tidal/issues/231/comments","events_url":"https://api.github.com/repos/tidalcycles/Tidal/issues/231/events","html_url":"https://github.com/tidalcycles/Tidal/issues/231","id":256287155,"node_id":"MDU6SXNzdWUyNTYyODcxNTU=","number":231,"title":"Support for sample banks","user":{"login":"jarmitage","id":2885827,"node_id":"MDQ6VXNlcjI4ODU4Mjc=","avatar_url":"https://avatars2.githubusercontent.com/u/2885827?v=4","gravatar_id":"","url":"https://api.github.com/users/jarmitage","html_url":"https://github.com/jarmitage","followers_url":"https://api.github.com/users/jarmitage/followers","following_url":"https://api.github.com/users/jarmitage/following{/other_user}","gists_url":"https://api.github.com/users/jarmitage/gists{/gist_id}","starred_url":"https://api.github.com/users/jarmitage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jarmitage/subscriptions","organizations_url":"https://api.github.com/users/jarmitage/orgs","repos_url":"https://api.github.com/users/jarmitage/repos","events_url":"https://api.github.com/users/jarmitage/events{/privacy}","received_events_url":"https://api.github.com/users/jarmitage/received_events","type":"User","site_admin":false},"labels":[{"id":493249240,"node_id":"MDU6TGFiZWw0OTMyNDkyNDA=","url":"https://api.github.com/repos/tidalcycles/Tidal/labels/Feature","name":"Feature","color":"c5def5","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":13,"created_at":"2017-09-08T15:18:28Z","updated_at":"2018-05-30T21:15:28Z","closed_at":null,"author_association":"NONE","body":"I’ve been discussing with @kindohm for a while how to manage an expanded library of samples. Today the default way of achieving this is to use the `samples` folder like a namespace, e.g.:\r\n\r\n`../samples/tracknamebd/_X.wav`\r\n`../samples/tracknamesn/_X.wav`\r\n\r\nThere are several disadvantages to this:\r\n- Long folder names\r\n- Many folders\r\n- No means of programmatically switching tracks\r\n- Long load time and memory footprint in `SuperDirt`, when usually only a small % of the library gets used in one session\r\n\r\nIf we take the single level directory of `samples` to be the bottleneck, then an alternative would be to introduce something like `bank`. In Tidal, to select a sound from a bank:\r\n\r\n`d1 $ bank \"track1\" # sound \"bd\"`\r\n\r\nUse multiple sound banks in a single pattern:\r\n\r\n`d1 $ bank \"track1 track2\" # sound \"bd sn\"`\r\n\r\nIndex individual samples as usual:\r\n\r\n`d1 $ bank \"track1 track2\" # sound \"bd:1 sn:2\"`\r\n\r\nA set of global samples will play when no `bank` is specified:\r\n\r\n`d1 $ sound \"bd\"`\r\n\r\nSome may want to access banks inside a `sound` pattern:\r\n\r\n`d1 $ sound \"bd|track1 sn|track2\"`\r\n\r\nBanks would be loaded only when called in `tidal` (this may require delaying the initial playback by X cycles whilst the samples load). However in SuperDirt, offer an option to load all banks by default: \r\n\r\n`~dirt.loadSampleBanks`\r\n\r\nExample directory structure:\r\n\r\n`../samples/global/bd/_X.wav`\r\n`../samples/global/sn/_X.wav`\r\n`../samples/track1/bd/_X.wav`\r\n`../samples/track1/sn/_X.wav`\r\n`../samples/track2/bd/_X.wav`\r\n`../samples/track2/sn/_X.wav`\r\n\r\nI'm not sure what implementation considerations there would need to be for this, but from a user perspective I feel this would greatly improve my compositional and performance process.\r\n\r\nMaybe this proposal should also integrate managing `SynthDef`s as well?"},"comment":{"url":"https://api.github.com/repos/tidalcycles/Tidal/issues/comments/393321886","html_url":"https://github.com/tidalcycles/Tidal/issues/231#issuecomment-393321886","issue_url":"https://api.github.com/repos/tidalcycles/Tidal/issues/231","id":393321886,"node_id":"MDEyOklzc3VlQ29tbWVudDM5MzMyMTg4Ng==","user":{"login":"mtift","id":733479,"node_id":"MDQ6VXNlcjczMzQ3OQ==","avatar_url":"https://avatars2.githubusercontent.com/u/733479?v=4","gravatar_id":"","url":"https://api.github.com/users/mtift","html_url":"https://github.com/mtift","followers_url":"https://api.github.com/users/mtift/followers","following_url":"https://api.github.com/users/mtift/following{/other_user}","gists_url":"https://api.github.com/users/mtift/gists{/gist_id}","starred_url":"https://api.github.com/users/mtift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtift/subscriptions","organizations_url":"https://api.github.com/users/mtift/orgs","repos_url":"https://api.github.com/users/mtift/repos","events_url":"https://api.github.com/users/mtift/events{/privacy}","received_events_url":"https://api.github.com/users/mtift/received_events","type":"User","site_admin":false},"created_at":"2018-05-30T21:15:28Z","updated_at":"2018-05-30T21:15:28Z","author_association":"NONE","body":"Sorry for commenting an old issue. I thought it seemed relevant.\r\n\r\n(And since I'm off topic, I'll mention that I've been enjoying *The Oxford Handbook of Algorithmic Music* and that I found @telephon's article about the philosophy of time to be especially helpful.)"}}
{"actor":{"display_login":"mtift"}}