Mx.Samples

mx.samples turned 1 year old last week. I’ve been reflecting on it and realized that it can be kinda “improved” in a way - so v1 might soon become v2.

currently, in v1, when a sample has multiple dynamics, mx.samples will choose one sample based on the current velocity and use that. I realized an “improved” way (in upcoming v2) would be to choose two samples at different dynamics and interpolate between them based on on the current velocity. obviously, the amount of “improvement” depends on how you think of velocity sensitivity…but I started prototyping it and I like it. at least it gives the ability to have more options. (this “two-sample” interpolation maybe a standard thing but I naively just started playing with it a few months ago and implemented in newer engines like lorenzo’s drums).

at the same time I realized that in v2 I can do more code in supercollider instead of lua - which doesn’t matter much from a user perspective - except that it will compartmentalize each instrument so multiple instruments can have their own sustain pedals (which wasn’t an option before).

so this new version will be v2 because v1 might still sound “better” to some people and I’d like to keep it available. the v2 definitely will change the sound (subtly) and it might also have the drawback of fewer simultaneous voices (since each voice is now playing back two samples). thought that might not be so drastic after putting in some optimizations.

anyways - I am putting this out there to gauge: does anyone has some interest in features they’d like in mx.samples that maybe couldn’t fit into the current version? since v2 is essentially built from scratch it might be easier to add things in now as it gets off the ground.

(if your curious and daring, here is the v2 repo: GitHub - schollz/mx.samples2)

25 Likes

The ability to adjust the stereo width

1 Like

Oh… Really? Are you sure… and ready for this?

Happy Birthday MX.Samples!!! And Congrats @infinitedigits

It’s is still one of my all time go-to-first scripts its such a useful and powerful instrument, my poor old Beatsqueezer has sat on a shelf now for that same past year.

But…. while you put it out there, here’s a few ideas in order of preference from the recesses of my mind. This is definitely a throw everything at it approach but even if none of this happens…. MX Samples will still be my go to sample player!

Multi Timbrality - 4 part with assignable MIDI channels. Of course if could reduce polyphony in a multi-timbral mode to a workable level. - I use Plonky for this exact multi timbral purpose at the moment.

LFO and/or repeating/repeatable mod Envelope to assign to any param

MIDI Note repeater (stutter style note repeater down to 32nds of a clock or more ;o).

Loop mode for samples (with loop start/end position)

Reverse - simple reverse the sample switch

Distortion/drive
Bitcrush Sample reduction

And one last audacious biggy!!!

Sample record in with a threshold level - choose a note to learn where the sample goes then fire it in! potentially with multiple samples layers/velocity levels too to get adjustments in the round robins (I do something similar to this sampling with the Bass Station 2 in AFX mode).
That might be a bit too audacious though!

I think these things would make it pretty much the perfect sample player! That said its not far of that already!!!

Hope that’s not too overfacing… but you did ask!

5 Likes

:+1:

:+1:

I was thinking of a mod that would do this for any script so it might go into mx.samples

:+1: (with loop mode)

any ideas on how to do this? I thought about this before but got stuck because the samples each do not have a standardized tail - i.e. samples might have mostly silence for anywhere between 1 and 5 seconds after the main audible bit… this makes the reversed sounds pretty much silent for a long time and also if you play two at the same time they might be different lengths and have weirdly offset reversing. one solution I thought might be to find transients in the waveform but then things get tricky (and still might be far from ideal).

:+1:, depending on cpu usage

this might be a script in itself lol. not sure I’m ambitious enough to put this in

4 Likes

A small thing: I think it’d be interesting to use some kind of structured data to store the names and URLs of sample packs. That’d allow packs to live anywhere online, so adding new ones to the script would just take a pull request. This could also allow tags or other metadata, if you’re interested in that.

1 Like

is there an option to download a pack as one long sample?
IE, all the sounds in a pack concatenated?
This would be great for use in something like Cheat Codes 2
perhaps CAT command in command line?

Eric

update: https://clideo.com/ worked well
but would be great to do from the command line. possible ffmpeg?

1 Like

Love this idea, would make a great addition to a lot of scripts.

1 Like

Hey Zack,

:+1::+1::+1::+1::+1: Big Thumbs up all round!

In regards to the reverse, I dont particularly see the different end times as a massive sticking point, it’s always going to be that way with sampled instruments I guess. It’s just an option that people could use creatively… or not use if they dont want.

Perhaps if you needed a little more control over that aspect, a sample end point param could be beneficial or instead if the sample is switched to reverse, the existing start point parameter becomes repurposed as the end (as it naturally would).

I understand this may be way off what you would like as the user experience but I know from the Novation Circuit Rhythm that the reverse switch can be pretty handy and fun. Sure CR is not a polyphonic sample playing device but you can use several different samples on a reversed track and different tails have never been an issue that I’ve been frustrated by.

and I hear you re. the sample record too… I thought it could be a bit of a stretch!!

2 Likes
  • Layering of instruments with mixing/balance control. Maybe you can make it work like an expansion of the velocity switching. The E-mu E4 samplers have a very nice way of setting it up for an arbitrary number of layers, see the chapter starting on PDF page 328 here. 2 layers is nice, 4 layers is great but it adds up with the polyphony.

  • Fine tune and transpose for each layer.

  • Per-layer envelopes.

  • Can it already do single-cycle waveforms nicely?

  • Notice how I didn’t say per-layer filters.

  • Free pony with every download.

2 Likes

mostly here to say i use this script all the time and i’m stoked on a v2 … the ideas others have listed above are very exciting, especially effects, reverse mode, sample record in (!!!)

thanks for all of your work, always. your scripts pretty much make norns what it is, for me.

2 Likes

I don’t think you can play mx.samples directly with a grid? If you can’t - that would be a nice addition. I recognise you can use Plonky for that.

1 Like

If you want to play mx.samples with a grid, I think you will like this: gridkeys mod (now w/ q7 layout, crow & jf outs)

5 Likes

Bit confused folks. Can I play mxsamples with a grid?
I have tried to install gridkey, but it doesn’t show up in my list of scripts (have restarted shield)
So, I try to install again and maiden tells me “failed - script is already installed in home/we/dust/code”. When I press cmd+k to open the dust folder, sure enough, gridkeys is there in “code” but it’s not in the list on my shield
Can someone explain what to do please?

The post I linked has a link on how to install a mod, it is the third sentence. I do not have a grid here right now but installing the mod works as outlined there.

Mods need to be activated and are not scripts to load, this is described at that link as well. Hope this helps.

1 Like

Thanks @doomglue .
I looked more closely after I posted and realised that it was something different to a regular script…
Just to clarify, would I enable the mod, restart the shield, and then just load mx samples?
It’s not clear from this paragraph:

to enable a mod go to SYSTEM > MODS to see the list of installed mods. mods which are loaded will have a small dot to the left of their name. use E2 to selected an item in the list and then use E3 to enable or disable as appropriate. unloaded mods will show a + to the right their name to indicate that they will be enabled (and thus loaded) on restart. loaded mods will show a - to the right of their name indicating they will be disabled on restart.

2 Likes

If I wanted to implement this as a library in a project that worked with triggers and didn’t send note off messages explicitly, can this be set up like mx.synths where there is a note length parameter to automatically turn the note off?

1 Like

it needs some extra code to make this happen. the code change is pretty easy. basically the envelope needs to be like it is in mx.synths, instead of how it currently is. and then it just needs to be toggled from the lua library when you change a parameter like duration=X. would happily take a PR for this!

2 Likes

How difficult would it be to set up mx.samples with an option to hide all undownloaded samples from the main menu? I’m interested in attempting to make this happen, but know not how.

2 Likes

add a control to toggle this behavior, somewhere around this line using something like this code:

params:add_binary("hide_undownloaded","hide not downloaded","toggle")
params:set_action("hide_undownloaded",function(x)
	update_uilist()
end)

change this line to:

if not (params:get("hide_undownloaded")==1 and not downloaded) then 
	table.insert(item,s)
end

I’m not 100% sure my logic is right, but that should be the code to get you started. if you get something you like, feel free to make a PR to include it into mx.samples.

2 Likes

Excellent! Gonna have at it soon.