Support

If you have a problem or need to report a bug please email : support@dsprobotics.com

There are 3 sections to this support area:

DOWNLOADS: access to product manuals, support files and drivers

HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects

USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here

NEW REGISTRATIONS - please contact us if you wish to register on the forum

Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright

MultiSampler

Post any examples or modules that you want to share here

Re: MultiSampler

Postby Spogg » Tue Jul 19, 2016 10:19 am

KG_is_back wrote: As for audio effects, I would like to keep it lightweight. Are there any specific ones that should be included? Perhaps a built in reverb?


I think that a reverb is the only absolutely essential effect because it can bring so much space to any sound. As long as it can be turned off it's a great way to audition presets. One can always use one's favourite reverb in the DAW for actual mixing in a song.

Chorus is good for synths but more limited for samplers. After all, if you want a choir sound you just use a choir sample!

Delay or repeat echo is nice to have for playing around especially for Dave Gilmour wannabes, as is saturation distortion for guitar samples.

Static filters for cabinet simulation and body resonance is nice too but the samples themselves can have that embedded.

In conclusion I would say to include whatever will show off the capabilities of the plugin and the included samples to create that wow factor. As long as the effects can be bypassed the user can always add what they want in the DAW project.

Cheers

Spogg
User avatar
Spogg
 
Posts: 3358
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: MultiSampler

Postby KG_is_back » Wed Jul 27, 2016 12:56 am

I've run into a terrible problem. The preset file does not save properly.

The data that should be saved is a hash. Elements in the hash are data provided from individual parts of the gsamp.

When the hash is marshalled and saved into a file it gets corrupted somehow, and when it gets read from a file and unmarshalled, nested arrays in the hash do not unmarshal properly. The error is definitely the file not saving/opening properly, because when I unmarshal the original data (the one that is marshalled and prepared to be saved to a file) it works just fine.

I really don't know what to do... Please if anyone has any ideas...

Please note, the schematic provided does not contain samples (otherwise it wouldn't fit the filesize limit), so it will not play any sound.

EDIT: I'm so retarded... I was not writing/reading the file as binary... problem solved by adding "b" in two places in the code 8-)
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: MultiSampler

Postby KG_is_back » Wed Jul 27, 2016 2:16 am

OK guys, new update is here...

Changes:
-saving preset file now works correctly
-added first midi effect - Strum simulator
-added "preview" button, which will play the selected sample (the selected region specifically) at original speed.

Since this version, I will try to keep preset file loading backward compatible, at least until version 1.0, where I will release preset-file converter if necessary.

Here is a preview preset including wavefiles. It's not very spectacular... Just my old electric guitar, with poor old strings. I actually have not played it at least a year. The preset should work best with some kind of ampsim behind it...
Eguitar.rar

Another problem I'd like to work on is the sample display. Currently the mem minmax prim is used to generate the envelope with a few thousand point resolution. Problem is, when you load a big file and zoom in, the resolution is insusficient. What I'd like to do is, to always have constant amount of points per window (so resolution increases with zoom)... Problem is, there is no prim which would led you extract only specific section of wave... Sorry if I'm not clear enough... my brain isn't working today...
Attachments
gsampv0.0.9b.fsm
(363.77 KiB) Downloaded 1115 times
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: MultiSampler

Postby Nubeat7 » Wed Jul 27, 2016 9:01 am

i don't had a close look to your project, but maybe this could help,
here is a wavedisplay with zoom (and 100ms markers)..
i started this some years ago and never finished it so its far away from optimising but maybe the way i did the zoom and scroll could be of interest for you - i used the translate primitive to do the scrolling and zooming
Attachments
wavedisplay.fsm
(1.89 MiB) Downloaded 1100 times
User avatar
Nubeat7
 
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna

Re: MultiSampler

Postby KG_is_back » Wed Jul 27, 2016 9:28 am

Thanks Nubeat, but unfortunately your schematic does exactly what I wish to avoid. It converts the wave file to float array and then processes it in ruby. When I load a wave that is over a minute long, the ruby can't handle it.

I think I (or preferably someone else) will have to write a new mem-minmax prim which also takes start and end points as parameter, to recalculate only specific sections of the wave file... That means using mem to address prim and assembly, which almost certainly means crashes.... :-(
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: MultiSampler

Postby Spogg » Wed Jul 27, 2016 12:06 pm

Hi KG

I love the new features!
The WAV preview is exactly what I wanted to see (and hear!). Also it’s nice to have a set of real samples to play around with, and the guitar sounds great.

I also very much like that you can have a multi-sample in one WAV file and choose which parts are used.

Regarding editing, I found it’s tricky to move to the exact attack start using the graphic editor. You say you want a zoom function and that would be nice but what about a simple sample step function, maybe with 2 speeds? You’d have a sample value readout or vertical graph, so just drag to the approximate start then shuttle backwards and forwards until you got the attack point you want. For more sophistication, rather than zoom the whole graph you could have a separate short window display graph showing several samples either side the current cursor position. Just some ideas.

Some points:

- The group names seem to be 1 octave out with respect to the WAV name, e.g. group says F3 but WAV is F4 (minor naming issue I suspect).

- When I move the start point for the attack more into each wave section, for all samples, and I play 1 octave down I still get the previous attack start point setting, not the one I just edited.

- There is a “latency” lag when playing the notes 1 octave lower than the WAV’s centre value. This may relate to the point above. This is present in the VSTi export too. It feels like about 100mS or so.

- When using the strum feature and repeating chords, I get timing issues with some of the notes; some sound late or out of order. Maybe a MIDI buffer needs to be cleared when notes are released and the buffer contents not passed to MIDI out…? This could allow part-chord strumming for more expression and variation.

As always, I hope my comments are seen as constructive and I’m well impressed with what you’ve achieved with this project so far. And thank you for sharing this work.

Cheers

Spogg
User avatar
Spogg
 
Posts: 3358
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: MultiSampler

Postby KG_is_back » Wed Jul 27, 2016 3:51 pm

Thanks for the feedback Spogg.

Spogg wrote:Regarding editing, I found it’s tricky to move to the exact attack start using the graphic editor.

You might be happy to hear that the lines automatically snap to zero crossings.
Spogg wrote:For more sophistication, rather than zoom the whole graph you could have a separate short window display graph showing several samples either side the current cursor position

That's a great idea! I will have to think about where to put it. I don't what the gui to be too big. I was considering moving the sample editor to different tab.

Spogg wrote:- The group names seem to be 1 octave out with respect to the WAV name, e.g. group says F3 but WAV is F4 (minor naming issue I suspect).

Yes, a minor naming issue. I've put the note numbers one too heigh when recording them and when I noticed it, I was lazy to rename all 20wavs...

Spogg wrote:- When I move the start point for the attack more into each wave section, for all samples, and I play 1 octave down I still get the previous attack start point setting, not the one I just edited.

- There is a “latency” lag when playing the notes 1 octave lower than the WAV’s centre value. This may relate to the point above. This is present in the VSTi export too. It feels like about 100mS or so.

that might be because of the pitch shifting method. The sampler uses simple re-sampling to change pitch, which means, when note is played one octave lower, it is played back at 0.5x speed. This might over-emphase any lag from imprecise start-point.

As for why you get previous attack setting, that might be, because the lookup tables for the audio-part of the sampler update only after you release the mouse key - the line following your mouse while dragging is purely visual. This is so, because the lookup tables are rather large and must be recalculated for all samples of all groups at the same time. Having them updating, while dragging could cause freezing issues with big presets.

Spogg wrote:- When using the strum feature and repeating chords, I get timing issues with some of the notes; some sound late or out of order. Maybe a MIDI buffer needs to be cleared when notes are released and the buffer contents not passed to MIDI out…? This could allow part-chord strumming for more expression and variation.

The strum simulator plays the first note that arrives first, and then accumulates all notes that come shortly after, sorts them by pitch and plays them in desired order. I've made it that way, because otherwise there would have to be short latency in the midi. All you have to do to make the strums have natural order is to make sure you hit the lowest/highest note first.

Spogg wrote:As always, I hope my comments are seen as constructive and I’m well impressed with what you’ve achieved with this project so far. And thank you for sharing this work.

I thank you Spogg for your feedback. It helps me to focus my short attention-span on actually finishing this project. This is actually my at least 3rd attempt to make this kind of multisampler and in fact, even this one already survived one crisis. What I've found, it makes the job easier and more enjoyable to set smaller milestones, that I can look forward to finishing and have someone to bounce ideas out of during the process and share the little victories with. All comments are highly appreciated and so far they've been very helpful! ;)
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: MultiSampler

Postby tulamide » Wed Jul 27, 2016 8:41 pm

KG_is_back wrote:Thanks Nubeat, but unfortunately your schematic does exactly what I wish to avoid. It converts the wave file to float array and then processes it in ruby. When I load a wave that is over a minute long, the ruby can't handle it.

I think I (or preferably someone else) will have to write a new mem-minmax prim which also takes start and end points as parameter, to recalculate only specific sections of the wave file... That means using mem to address prim and assembly, which almost certainly means crashes.... :-(

I doubt that Ruby is the cause. I rather think that the high amount of data in combination with the prim needing to convert it to an array (and again converting to a Ruby array) is the cause. What you'd need is a method/technique to fill the array over time and only access it after everything is prepared. I currently have no idea, how. But as soon as you solved this, you should definitely go the Ruby path.
For the display, speed is more important than accuracy. Start with the graphic frame's width. If you draw to a 400 pixel width, you probably only need like 100 sample points, connected through simple lines. The rest is simple math:
If zoom == 100% then the step size equals array-size divided by 100, as integer.
If zoom == 50% then the step size is (array-size * 0.5) divided by 100, as integer.
Etc.
The step size tells you which samples to grab from the source (don't forget the offset when zoomed in, but I don't want to make it too complicated here).
array[stepsize * currentrendersamplepoint)
where currentrendersamplepoint is from 0 to 99 in this example.

EDIT: While re-reading what I wrote, I think the zoom part may be misleading for the values I used. zoom = 50% does mean you're zooming in, the part displayed in the window is now double as precise, because it displays a smaller range. In Photoshop this would be called zoom = 200%, but I wanted to make sure you understand the relation between zoom and array-size factor. If you want to work with zoom values as you know them from apps like Photoshop then it would be zoom == 200%, array-size * (1/2), or generalized:
zoom [1 = 100%], stepsize = array-size * (1 / zoom)
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: MultiSampler

Postby Spogg » Thu Jul 28, 2016 10:03 am

As for why you get previous attack setting, that might be, because the lookup tables for the audio-part of the sampler update only after you release the mouse key - the line following your mouse while dragging is purely visual. This is so, because the lookup tables are rather large and must be recalculated for all samples of all groups at the same time. Having them updating, while dragging could cause freezing issues with big presets.


Hi KG
I rechecked this and it's not mouse-up related. I've made the preset attached which just addresses the G4 (=G3) wav to demo the issue. If you play the G3 note (G below middle C, note no. 55) you will hear my new edited late start position for each note. If you then play G2, 1 octave down, you still hear the whole note.
I'm really puzzled by this but I don't know the schematic's functioning so well, so I can't tell you what's going on. It's just not what I would expect to happen.

Cheers

Spogg
Attachments
G4 edited spogg.zip
Preset for demo of the issue.
(5.71 KiB) Downloaded 1081 times
User avatar
Spogg
 
Posts: 3358
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: MultiSampler

Postby Spogg » Fri Jul 29, 2016 10:07 am

Hi KG

You may have planned this already but I have a feature request/suggestion.

It would be nice to have a pitched/un-pitched option for any group. By un-pitched I mean just playing at the default native speed of the samples and not influenced by the key number.

Why? This would give some extra flexibility for some situations. For example, let’s say I want a pitched drum sound across a range of keys. I want the skin and body sound to vary but I want the strike sound (stick, pedal…) to be fixed in pitch. Or maybe a vocal sound where the plosive is fixed but the pitch varies. That sort of thing.

I think this should be fairly easy to implement and I did this for my Q-50 synth although the sample playing was much less sophisticated.

Cheers

Spogg
User avatar
Spogg
 
Posts: 3358
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

PreviousNext

Return to User Examples

Who is online

Users browsing this forum: Google [Bot] and 8 guests