From the original SynthMaker forum (2004–2014), with its members’ names and dates.
exonerate ·
I've added a sample player/looper to the wiki,
you can get it here........
[old link]
Basicly it just a high level module for anyone to use in there projects 😉
i've done a little description of it on the wiki so i won't bother repeating myself 😉
I guess i'm on a little mission at the moment to create lot's of cool or useful highlevel modules for people to use, i would love to see lots of examples on the wiki. Because i think this would benefit SM a lot but know body seems to do it 😕 Look at reaktor one of it major selling points is it's library of user instruments and useful modules. Now i'm not going to start ranting on. But what good is it to have examples scattered all over the forum when there could be in one place for all users to benefit from? some people might think that what they've made might not be 'good enough' for the wiki, i see it as more of a case of is it going to be useful to someone else, it doesn't have to be 'great' just useful either for someone to use or just learn from.
Thank you for listening 😉 🙂
and have fun with the sample player/looper 😉
cheers!
infuzion ·
exonerate wrote: I've added a sample player/looper to the wiki...
i would love to see lots of examples on the wiki. Because i think this would benefit SM a lot but know body seems to do it...But what good is it to have examples scattered all over the forum
Sample Player: Wow! A beautiful yet functional GUI, & lots of semi-hidden optimizations (like error-shutoffs) behind it... very nice! I do have some bug-reports though:
- seems the player cursor is a bit off: only goes 1/2 way... so if the start & end loop points are at the actual start & end, the cursor ends about the middle... put the end point in the middle, the cursor resets 1/4 the way over.
- similar error with moving the start point
- Start point can be moved past end... You have a few options; either dead-stop the start point when it reaches the end point, or reverse the playback when it moves past, or move the end point with the start point... up to you.
& suggestions:
- I'm not sure if the ASM multiply is needed where it is just 1 math; moving to ASM is a good idea when you have a bunch of primitive maths connected together (like you did smartly in the Interpolated Read). Doesn't hurt; just trying to save you time next time 🙂
- In the Interpolate ASM, seems that "tmp" isn't needed. smIntVarTemp is 🙂 (I usually end up combing though code 4 or so time to catch everything) I do wonder if making ASM for one mult make the schematic smaller than using primitives?
Once those bugs are fixed, I think it should be included w/SM!
WIKI:
skOre had a great collection of user-modules that he did before the WIKI; it was the standard.
Posting stuff does take time, which few have extra of. But if people would archive stuff on the WIKI after showcasing it on the forum & fixing bugs, that would be helpful.
exonerate ·
- seems the player cursor is a bit off: only goes 1/2 way... so if the start & end loop points are at the actual start & end, the cursor ends about the middle... put the end point in the middle, the cursor resets 1/4 the way over.
Hmm.. i tested this a lot before putting it on the wiki, but it was mainly with long samples or ones about a second long, the only way i was able to recreate what your saying is to play a sample that was 0.13 seconds long.
is it happening for samples over half a second long? because my tests are showing me that anything over that works fine.
i'm not sure how i could improve it on really short samples because as you know i'm using the mono to float to get the time info, i've tried swopping the ticker 25 for a 100 but it doesn't make it any better, so i'm not sure how to improve it maybe i should turn it off for samples under half a second?
- Start point can be moved past end...
yes i know i designed it this way 😉 maybe i should of made a note that this happens, basicly my thinking on that is that the sample loops from where ever the start and end points are so if you want you can set the start point towards the end of the sample and the end point towards the start this enables you to loop the end of the sample with the beginning and miss out the middle portion of the sample. i think this is a unique feature that allows you to loop anywhere in the sample instead of being limited to only loop up to the end of the sample. maybe i should make this behaviour an option?
as for the ASM multiply, that one probally won't make a difference it's there because i ripped this out of a synth i was making and in that synth all stream multiplys are in ASM, on a big synth i would say it definetly makes a difference. i think i'll change that one for a normal stream multiply as it is quite pointless on it own.
thanks for the feedback infuzion 🙂
cheers 😉
exonerate ·
i'm thinking now maybe i should just scrap the time bar altogether, i find it useful though as a visual to where you are in the sample, but really its only icing on the cake 😉
if it doesn't work properlly with short samples then it probally best to not have it at all instead of turning it off for samples under half a second, if your not looping the sample it seems to work OK though, well it gets to the end but is quite jittery.
like i said there doesn't seem to be much i can do about this, unless someone can enlighten me 😉
so it looks like it going to have to go.
cheers 😉
exonerate ·
Ok i've updated this now, i've got rid of the time bar it was nice to have but it just wouldn't work properly with really short samples, so it had to go 😉 .
@infuzion I've change the behavior of the end going past the start, now what happens is the end becomes the start, but i've also put an option for the other behavior in the properties panel. because i think it a really cool feature to have being able to just loop the end of a sample with the beginning and then miss out the middle part 🙂 .
i'm very happy as well because i didn't have to change the code to have two behaviors, I've manged to do it all in green maths 😀 .
anyway any one who wants to check out this new version can do so here...
[old link]
cheers!! 🙂
radioactivebeats ·
I have been trying to create the same thing, but i never got it to work.
infuzion ·
very cool
exonerate ·
i'm changing the standard behaviour slightly at the moment, the way i'm doing it now is a lot cooler.
i'll post an update soon.
cheers 😉
exonerate ·
OK after battling with the wiki for about half an hour i've finally got it uploaded,
before the standard behavior for the end going past the start was that the end point became the start point, now this is what actually happens when you move the end past the start you automatically take control of the start point.
check it out and tell me thats not cool 😉 🙂
[old link]
cheers 😉 and enjoy!
exonerate ·
Ok i've done another minor update 😈
all i've done is added a few dezippers to improve the sound quality when moving points while the sample is playing.
thats it now i'm going to leave it alone 😉 unless someone reports a bug or something.
cheers! 🙂
infuzion ·
De-zippers are a good idea!
Question:
Before the Counter and loop control code, what is your reasoning for the De-zip that feeds the Nlength? My instinct is that that value should have immediate results, which won't be true if it has the De-zip, but I also think I am likely to be wrong. I don't fully understand "Nlength" vs "length".
Polishing Tips:
Expose all the colors, fonts, line thicknesses, etc as Properties. I don't even know where you hid the wave GUI! heheh
I prefer all that stuff fed by wireless links, & the Properties tucked away in a single module. That way, If I have several similar high-level modules, I can just cut out all the Properties modules, & paste on higher as a master prop.
When saving the file, I'd save all the values as you'd think the defaults would be appreciated as common. EG: You saved 1.3 with Reverse on, but other times it was off (which is better IMHO).
Pop: I just noticed there is a definite pop on the release of some samples, if the end is set in the middle of the sample. This is caused by the signal suddenly dropping to 0. You have a few options, all of which are valid IMHO:
1) Do nothing, but warn in the docs that builders should put an ADSR with atleast a tight but not 0 Release after the playbacks. (saves module size/CPU & your time)
2) Have a short Release inserted in the multiply code at that end, that can be turned off (optional: variable slope &/or length)
3) Overlay an GUI ADSR or variable envelope that corresponds (or not) to the start/end points. Would be neat to bring back the playback cursor for this 🙂
exonerate ·
@infuzion the difference between Nlength and length is that 'length' is the length of the sample and Nlength(as in new length) is the length between the start and end points. so Nlength changes whenever the start or end points are moved, it might not be needed but because the value changes i put a dezipper on it.
i'll implement some of your suggestions tomorrow, as for ADSR's i know basicly nothing about them, was your second suggestion meaning code a release stage before the output from the asm component?
also how would one go about inserting a release stage at the end with the ADSR module, would it basicly be an ADSR at the end with fixed values for attack,decay,sustain and then a control to just change the release?
cheers 😉
infuzion ·
exonerate wrote: also how would one go about inserting a release stage at the end with the ADSR module, would it basicly be an ADSR at the end with fixed values for attack,decay,sustain and then a control to just change the release?
That is a quick approach.
exonerate ·
Ok minor update, i've now added an ADSR at the end with a short release to get rid of clicks, i've not made it so you can change the release time because i'm not sure thats needed.
also brought the properties up to the top so you can edit them from the top level.
cheers.
GaryG ·
Very cool, I can see this being assimilated into a couple of my projects. 🙂
One question, should the Start marker effect the start of playback when the samples not looped? The end marker seems to control the end of playback but in non-looped mode, the sample always seems to start from the beginning regardless of the position of the Start marker...
Whatever, nice work.
.g
echopark ·
Hallo exonerate,
I found a problem in your sampleplayer.
When you play a Sample at the C3 key it plays the original Pitch.
On some other keys there`s something wrong with the pitch.
Try my Synth example:
On C3 it Sounds OK
ON F4 , when you wait some seconds, there are glitches or steps in the pitch.
http://www.box.net/shared/n1v5gitfnq
echopark ·
Oh sorry, I mean F3 not F4
exonerate ·
GaryG wrote: One question, should the Start marker effect the start of playback when the samples not looped? The end marker seems to control the end of playback but in non-looped mode, the sample always seems to start from the beginning regardless of the position of the Start marker...
i've done an update to this now, and i've changed it so that when not looping it just plays the whole sample through, it makes sense to have it like that 😉 .
heres an updated version...
http://www.box.net/shared/4vfnuufoq2
i've included the time bar in this one so you can see exactly which parts of the sample is playing, the time bar is not accurate for really short samples but anything over half a second should be OK. this is why it was not included in previous versions.
@echopark i'm not sure if this new version will fix your problem, i've not been able to recreate what you have said. but i have made some changes to the code so maybe it will work better for you.
cheers 😉
infuzion ·
I really like how dragging the end "past" the start actually grabs the start!
I think it would be better if the ADS in the ADSR were set to 1: you are changing the dynamics w/out the user being able to tell right away.... unless you have some reason for it.
"rigth" is misspelled in the Interpolated Read. 🙂
exonerate ·
I really like how dragging the end "past" the start actually grabs the start!
yes this behaviour makes me smile 🙂 when ever i move the points past each other. it's a lot better than the end point becoming the start. although now it literaly does!
I think it would be better if the ADS in the ADSR were set to 1: you are changing the dynamics w/out the user being able to tell right away.
no theres no reason for this, i just figured that the way to do it would be to set the values low, so for example the attack doesn't come in slowly.
so i should set them 1, and this doesn't affect the sound noticably? i just figured a high value would affect it more.
"rigth" is misspelled in the Interpolated Read
yes for some reason whenever i type 'right' fast it comes out like that, although i just got it right that time 😉 😉
i'm useally good at finding spelling mistakes i've found two in SM already, but obviously i'm not that good with my own 🙂 😉
infuzion ·
exonerate wrote:
I think it would be better if the ADS in the ADSR were set to 1: you are changing the dynamics w/out the user being able to tell right away.
no theres no reason for this, i just figured that the way to do it would be to set the values low, so for example the attack doesn't come in slowly.
so i should set them 1, and this doesn't affect the sound noticably? i just figured a high value would affect it more.
You are affecting the sound noticeably now... I'm suggesting that the ADSR should be invisible except a slight release.
jobro ·
God daemn! This is what I simply call a killer module. I've just had a small play with it, and it seams I have to enlarge the modules in JMOD to get a better view of it. Spot on!
exonerate ·
@infuzionsorry i've just realized that by one you mean one sample, i was thinking in the 0-1 scale, and so i was thinking you meant 1 as in the highest value 😊.
but anyway thanks for the tip 😉 i'll update the sample player in a bit.
God daemn! This is what I simply call a killer module.
glad you like it jobro 😀
cheers 😉
exonerate ·
i've updated the wiki version with the one i posted here earlier, the only difference is i've sorted the release ADSR so it doesn't affect the sound and just gives it a slight release to avoid clicks.
anyone that has downloaded the version from this thread should redownload from the wiki, because that is now the latest version.
[old link]
cheers 😉
jobro ·
That's nice of you, there is a problem with the sampler tho. If you resize the sampler then the loop isn't resized as it should.
infuzion ·
jobro wrote: If you resize the sampler then the loop isn't resized as it should.
You can, but you have to unlock everything & move each item by hand... I think to add the auto-resizing would take extra items in the schematic, which in general I'm against; once you resize it for yourself you don't need that extra stuff, so it just sits around making your DLL/EXE larger.
To fix the cursor (not going all the way) bug, go into the Time bar & multiply the "Sample length in secs" in by 0.5. This is because the Interpolated Read uses 2 samples at once.
heh, maybe there should be a new-module testing checklist or something...
infuzion ·
hmmm, something is causing a bad memory leak:
1.0.5: CPU & mem leakage galore
bummer 😕
exonerate ·
Ok, because of the CPU and memory usage problems that infuzion has found i've now got rid of the time bar for good.
new version on the wiki...
[old link]
the time bar was basicly a hack, and when i was making it i had a feeling that it wouldn't be very efficient, i tested it CPU wise after making it and CPU looked fine, mind you i think i was testing with samples that were a second to a couple of seconds long, in my tests the CPU and memory problem is happening with short samples, so like last time it has to go, but stay gone this time. 😉
cheers 😉
exonerate ·
i've just updated the sample player..
[old link]
all i've done is added a slow / fast knob so you can speed up or slow down the sample on the fly 🙂
i think it's a good addition, i can't believe i never though of it before.
it's fun to play with 😉
cheers 😉
tuz ·
exonerate wrote: i've just updated the sample player..
[old link]
all i've done is added a slow / fast knob so you can speed up or slow down the sample on the fly 🙂
i think it's a good addition, i can't believe i never though of it before.
it's fun to play with 😉
cheers 😉
this is sweet. it's giving me ideas. 😉
exonerate ·
i've just been having a play around with the sampler, and i've turned it into a multi sampler 🙂
http://www.box.net/shared/n3myvepsdh
this is not an update to the sample player, but i might refine it some more and release it as a separate version 🙂
basically to load in the samples you just press load and then select a folder(not a file) and click open, this is because all the samples in that folder get loaded in at once 🙂 , i've been testing it and it seems to work fine, i've been loading in folders that contain 130 samples and was 700mb in size.
at the moment this is the only way to load files in, by selecting a folder so i would recommend preparing a folder with the samples you want to load in and in the order you want them.
the multi sampler works in two ways, if you have follow pitch on then which ever sample you select from the selector will be the one that plays,
if you have follow pitch off, then the samples become assigned to your keyboard, you'll see a float component were you can enter which midi note number to start the samples from, so the midi note you start from will be the first sample in the folder, so it's a good idea to put them in the order you want them in the folder before you load them in .
i was going to make it so the wave display changed when you pressed a note by using the midi mono component to get a 'green' pitch value, but it made it really slow so the display just stays the same, i think this is to do with redraws.
anyway have fun 🙂
cheers 😉
sunsynth ·
Hi Exo...
This is great 4 my little jingle-Pad i'm working on
(also a give-away for my biiiggg project)
Keep it up!
Walter
exonerate ·
cheers walter 🙂
part 2 of my multi sampler tutorial is going to contain some techniques i've used on this, like loading all your samples in at once and and assigning them to your keyboard 🙂
i should be doing it soon, maybe this weekend if i've got enough time.
cheers 😉
ALAN ·
Hi Guys, I have been trying to mod this sampler. What I want it to do is:-
when I load the samples I would like the sample player start on sample number one. rather than select it each time I load.
How do I do this?
Thanks.
Alan.
AngularMomentum ·
I have been modding this, when reversed the display of the sample is reversed and so are the start and end trim. As I do not know how to invert a float array, so it reads bottom to top, I have rotated the DrawWave module 180 degrees. It would be neater to have the float array's reversed. Anybody knows if this is possible and if yes, how?
Here is how I did the trims, for some easy peasy, for others maybe a good pointer. The Start trim is really controlling the End trim and Visa versa when set to reverse. I have spend a few hours figuring out how to do this myself, only then to find this most simple solution...heh.
stw ·
AngularMomentum wrote: . It would be neater to have the float array's reversed. Anybody knows if this is possible and if yes, how?
multiply with -1, sort it, and multiply with -1 again.
EDIT: Bullshit, to easy, that obviously works only for sorted arrays... 😝
EDIT EDIT: You have to do it with a looped read and write.
stw ·
like that
stw ·
or much easier: take the mirror mod/prim from exos DTK.
Damn, i knew i'd seen it before... i should stop these over hasty responses... 😊
AngularMomentum ·
Muchos gracias! 😍
Exo's Mirror module works like a charm.
Wrote something here? To have a post removed or your name hidden, write to [email protected].