Showing posts with label Drone. Show all posts
Showing posts with label Drone. Show all posts

Sunday, 7 August 2022

How to create Pianobook.co.uk 'Extras'

For the whole month of August, I've been voted into the prestigious role of 'Samplist of the Month' for Pianobook.co.uk by the eponymous Discord community, and I wanted to mark it with something special...

So on the 1st of August, I published two new sample packs of virtual instruments on Pianobook.co.uk: 'Deimos Strings', and 'Fairy Piano Extras'. The following day I published a second experimental sampled choir virtual instrument called 'Dan Time 2', but that's another story entirely.

Deimos Strings

Not one of the moons of Mars...

Deimos Strings is string pads produced digitally, but with a lot of the characteristics that people normally associate with analogue synthesis. At its heart are a dual filter and a quad chorus effect, and there's a bug in the filter control XML, but it sounds interesting, so I have left it in! The quad chorus also has a slight volume dip as you increase the modulation depth, but this is easily compensated for by using the Expression control. There are quite a few presets, and there's an amazing demo from Bemused on SoundCloud.  

But the 'special' bit is the other release:

Fairy Piano Extras

I've been doing a lot of reviewing at the quieter end of the Pianobook.co.uk review queue - where the sample packs of virtual instrument with no or very few reviews live. I try to review any Decent Sampler submissions, and I have now done quite a few reviews! 

One thing that I often do in my reviews is suggest little additions or modifications to the XML file that is the .dspreset file that defines a Decent Sampler preset. Often this is just turning on looping so that you get interesting syncopation during the release phase of the envelope, but sometimes I get inspired and do lots more modifications. And then I had an idea...

Why not make these 'Extra' presets available to everyone on Pianobook.co.uk?

Which is what 'Fairy Piano Extras' is - three additional presets for my pre-existing 'Fairy Piano' sample pack, but going slightly beyond just making a few changes to the values of the controls. In an 'Extra', anything is allowed, except changing the samples, and you need to get the permission and final approval of the original publisher of the sample pack, of which more in a moment... So you could do things like:

- Transpositions in round-robins for Victor Borge soundalikes, automatic inversions, and more, 

- Micro-tuning in round-robins for subtle detunes or crazy 'honky-tonk' wobbles,

- Dynamic tweaks, inversions, layering and other sample playback modifications,

- New controls for new features! Want to add a High-Pass Filter? Easy! Want to be able to change the Reverb Room Size? Easy? Make a menu to turn looping on and off? Needs a bit of care, but do-able! In Fairy Piano Extras, the 'Drone' preset has new additional controls that weren't needed in the original Fairy Piano:

The Fairy Piano Drone User Interface - can you spot the design influence?

Because it makes drone sounds, the percussive, fast attack and slow decay envelope that works for piano, isn't really suitable, so I replaced it with and ASR (Attack-Sustain-Release) envelope, where the attack and decay are linked together. The triple chorus is a step towards the quad chorus used in Deimos Strings - remember that I do everything in little steps...  Anyway, Fairy Piano Drone is a very different instrument to the basic Fairy Piano...

So that's what Extras are all about - remixing, customising, tweaking, and sometimes, completely reworking the user interface, functionality and sound of a sample pack or virtual instrument! 

Now my Fairy Pianos Extras is unusual, because it is me 'remixing' my own sample pack, so it works slightly differently to the more usual case - where another person produces an Extras pack for a samplist's sample pack, so let's look at that scenario first...

How Do Extras Work?

Extras are just ordinary .dspreset files, but made by someone other than the original samplist. They are in an additional folder/directory inside the main sample pack. So for a Decent Sampler sample pack called 'Piano Buck', then the ordinary main folder/directory would look like this:

An ordinary Decent Sample folder/directory...


So there is the 'Piano Buck.dspreset' file, that is used by Decent Sample to define the basic preset for the virtual instrument, the README.txt file, and the two folders: Samples and resources. If this was a Native Instruments Kontakt-compatible folder, then there would be some additional folders and files inside as well, but for clarity, I'm just showing the Decent Sampler files.

For Extras, then you will find an 'Extra' folder/directory inside the main one: 

A Decent Sampler folder/directory with Extras inside

All of the extras are in the '<name> Extras' folder/directory - synthesizerwriter (of course!) in this case. If you get Extras from other people, then this keeps them nice and tidy. Note that the additional presets all end with initials ('sw' for synthesizerwriter in this case). Also notice the two JPEG files - these are the background graphics for Decent Sampler (probably saying something like: 'An Extra from synthesizerwriter'), and you will need to make sure that the 'bgImage=' path in the .dspreset points to that graphics file - it isn't in the resources folder/directory! 

The background graphics are in the same folder as the .dspreset files...

One more thing needs to be done during the development of the Extras presets. You need to add a modification to every path= element in your .dspreset files:

Add ../ to the start of the paths...

Adding '../' to the start of every path (before the Samples/ bit), tells Decent Sampler where to find the samples! This is because the Extras presets are in a sub-folder/directory to the main one, and so the '../' goes up one level and then back into the Samples folder/directory. So an Extras pack contains just the .dspreset files and the background graphics. You can add a README.txt file if you want, although the best place for any information about the presets in the Extras pack is inside the main README.txt file, so all that the samplist needs to do is add the contents of your README.txt to their main README.txt file. 

And that's it. You have made an Extras pack, and people who download it will now have access to all of the new 'Extra' presets!

Permission

The first thing that you need to do if you want to make an Extras pack is to contact the original samplist and ask for permission to use their samples to make a 'derived work'. Yep, that sounds like a legal phrase because it is - the original samplist of the samples owns the copyright on the audio content in those samples, and so it is only polite and proper to get their permission in order for you to use their material. And remember, the samplist needs to add your Extras folder to their download, so they are in control! If they don't like your Extras, then they don't get added to the download...

(For samplists, then they retain final control over what Extras are published, and when, and by whom. Plus, best of all, once a sample pack has been published, then you can upload a new zip file at any time, so the samplist decides when to do an update, when to add Extras, etc. Once the sample pack is published by Pianobook.co.uk, the samplist has control over what is in it.)

If you don't get permission, then don't even start to make an Extras pack - try another samplist!

Inside Fairy Piano Extras

As I said earlier, doing your own Extras is slightly different. It doesn't really make sense to have a separate folder - unless you have very different .dspresets. In the case of Fairy Piano Extras, then the Drone version, the reverse version and the inverse version are all very different, with major changes to the functionality. Luckily, the samples are tiny, and so they can be included, but if the samples were large then this would be a problem and the approach described above would be better.

Special!

So that's Extras. I think they are pretty special! I think they give Pianobook.co.uk new functionality that turns it into something even more interesting...

If you go to The Imperfect Drummer's Pianobook profile page, then you will find his excellent 'Mom's 1974 Baby Grand' sample packs, and if you download the Decent Sampler version, then you will find 12 additional .dspresets - Extras created by me! Enjoy!

One of the Extras for Mom's 1974 Baby Grand...

---

If you find my writing helpful, informative or entertaining, then please consider visiting this link:

Synthesizerwriter's Store (New 'Modular thinking' designs now available!)

Buy me a coffeeBuy me a coffee (Encourage me to write more posts like this one!)... or...

Buy Me a Coffee at ko-fi.com (Encourage me via a different route entirely...)

Or just tell someone else that there's this amazing blog about hi-tech music...


Saturday, 9 February 2019

Modulated Sine Waves Two Ways - A Recipe in Two Parts (Part 2)

In the first part of this post, I covered the 'gen' part of how I made an FM drone generator based on the Rebel Technology Tutorial Workshop at Somerset House, London, in December. In this second part, I look at taking the gen code and turning it into a Max For Live device.

My starting point was as generic an FM sound generator as I could produce, using the many workshop attendee examples as the starting points (so the underlying examples in the workshop are a strong influence here). The gen~ code and the block diagram for what I made as my underlying oscillator module looked like this:



Now Gen is part of Max, and I was still running Max 7.3.5 at the time, because I'm a cautious updater rather than a b/leading edger. My plan was to leave the gen~ code alone and just put it inside a Max For Live device, which is where things got interesting...


So here's the gen~ module inside a Max For Live wrapper, with added spectrum display and rotary controls. 

Now you may have seen a social media post reporting that some versions of Live 10 and Max 8 doesn’t do exactly what you might expect with gen~. I saw it, so I contacted Cycling’ 74 and Ableton (which, btw, is always the best route: social media can sometimes be unreliable) and found that the Live 10.0.6 release should be fine with editing gen~ if you are using the full licensed Max 7 or Max 8. 

As a related sideline, I also learned something very interesting: Max 8 introduces a new object called ‘gen’ that works for events. Despite the name, that lack of a squiggly tilda is very significant. The underlying technology that you see in all of the gen~ patchers that I have been showing is called Gen, and it provides access to ‘lower level’ objects than the ones you get in Max, as well as embedded code. In this example, I’m working with audio signals, and so I'm using the gen~ object, not the ‘gen’ object.



Now  I wasn't aware of the new ‘gen’ object, and it is always good to take a look at new things in Max. So to find the differences between the gen and the gen~ objects, I looked at the help pages inside Max:




So rather than try and explore unknown territory with Live 10.0.2 (and more recently 10.0.5) I decided to update from Max 7.3.5 to Max 8.0.2, and to convert from using gen~ to just Max so that I could leave exploring using gen~ inside Max For Live for later on, when Live 10.0.6 is released (which now seems to be part 3 of this two-part blog post). So not quite the easy 'write it in gen~ and use it anywhere' that I was going to do, but at least I had learnt a lot, and I was now slightly more cautious about my planned next step follow-up, which was to explore the possibilities of the 'gen~-to-VST’ process (part 4!).

So the new 'first' task for a Max For Live version was now to turn this 'gen~' code into Max For Live for each of the bits that were inside the gen~ object in the grey screenshot several shots above.


This is the top level of the gen~ code, directly translated from gen~ into Max. Because Max has a toggle button already, then all of the DIY code to create a toggle button isn't needed here! The number of oscillators has also been increased: 10 pairs giving 20 oscillators here.


The 'spreader' code is almost exactly the same! Now I know that in Max 8, there are built-in functions to allow you to create 'spread' parameters for the multiple instances of a patch that you get by using the 'mc' object, but that would completely wipe out the 'gen~-to-Max' theme that I started with, and will be something I will look at in a future post! (Also, the spread functionality is in Max, and not in gen~, and so it won't work for projects that can only use gen~, as is the case with devices like those from Rebel technology.


As in the gen~ code, in the translation-to-Max, there are two oscillators, one detuned by 1.001 (I didn't spend any time optimising this!) and a straight-forward LFO-driven anti-phase panning circuit. Above this, there is the modulation section, which has another LFO (that can also run at audio frequencies...) and uses a selectable '+' or '*'object to do the modulation. The '+' gives 'linear' 'vibrato-style' FM and the '*' 'multiply' object gives 'multiply' FM (FM = frequency modulation). In this implementation (with these frequencies and modulation indexes), then 'Linear/vibrato' gives a milder sound, whilst 'Multiply/FM' is much brighter in timbre. Having two different sound source timbres is always good, and in Max For Live it is easy to add a switch for it. In hardware devices like the OWL Pedal, then adding a toggle switch isn't quite as straight-forward - but I have done it and this is described in a previous post in this blog.

One final translation is something which I've long wondered about why there isn't a pre-made object like this in Max. The 'dc-block' gen~ object stops DC voltages from getting into the audio output, and for an FM-based sound generator, then it should be very useful for avoiding 'clicky' speaker-stressing audio signals.


The contents of the DC-block patcher aren't complex - it is just that the parameters are tricky to remember!

Anyway, the final MAX-ified version has three repetitions of the 20-oscillator 'grey screenshot' above, and so provides 60 oscillators across three separate 'parts'. This gives some very interesting sound generation possibilities. Finally, I added MIDI input for pitch, so this is now a simple monophonic instrument for making drone sounds with various timbres and frequency content. Enjoy!

Getting INSTsineATMOSPHERE

You can download INSTsineATMOSPHERE for free from MaxForLive.com.

If you drag the .amxd file that you download from MaxForLive.com into the 'Third Party Packs' folder in 'Places' in the Brower panel on the left-hand side of Live, then you will be able to find it easily when you need it.

Modular Equivalents

In terms of modular equivalents, then reproducing this functionality using just basic modules in my modulars just required lots of VCOs and LFOs. But 60 VCOs is a lot of modules, and when you add LFOS it gives a modular equivalent of 120 ME, with a lot more modules required for the panning... If I throw away the 'you can only use basic modules' requirement, then things are different, but then we lose any basis of comparison.

Buy me a coffeeBuy me a coffee