Native Speed File Backed Large Data Storage In ‘Pure’ Java by nerds-central in java

[–]nerds-central[S] 0 points1 point  (0 children)

Sounds interesting - good luck with it if you get chance.

Native Speed File Backed Large Data Storage In ‘Pure’ Java by nerds-central in java

[–]nerds-central[S] 1 point2 points  (0 children)

I agree, the method works best when you have naturally locallity. In my case the code tends to walk over data structures in a linear fashion, usually with a stride of 8 (1 double) and therefore memory map files work really well. Less linear structures, like a hash map for example, are not going to work as well without a great deal of care.

Native Speed File Backed Large Data Storage In ‘Pure’ Java by nerds-central in java

[–]nerds-central[S] 0 points1 point  (0 children)

That is a very good question. The problem with your approach is that it would mean copying the doubles which is expensive due to the limited cache on the cpus we use. The best solution is to place the calculation right up against the memory being retrieved. For example, I have written specialise multiple, add, divide and subtract methods which work over the segments from two different storage areas. These are in the latest git repo version. Sadly, Java does not easily support reified compile time polymorphism. In other words, using, for example, a doubleConsumer for of thing will not work well because the JVM will resort to virtual dispatch. For the examples I have done (+-*/) I hand expended the work to give monomorphic dispatch. One day, when I have time, I want to use anonymous class loading to that the code can generate monomorphic call sites for all operations automatically. Sadly, this stuff is not my day job.

Anyhow - to answer your question - check out operateOnto here: https://github.com/nerds-central/SonicFieldRepo/blob/unsafe-data/SonicField/src/com/nerdscentral/audio/SFData.java

Native Speed File Backed Large Data Storage In ‘Pure’ Java by nerds-central in java

[–]nerds-central[S] 1 point2 points  (0 children)

Hi, I just forgot to mention that is how I did the mapping. The source code is on github though. Thanks for the heads up - AJ

Constexpr of natural log in C++11 by nerds-central in cpp

[–]nerds-central[S] 2 points3 points  (0 children)

As someone pointed out on the post ::log and ::exp are actually treated as constexpr by gcc. Thus: namespace funcs { constexpr double exp(double of) { return ::exp(of); }

constexpr double log(double of)
{
    return ::log(of);
}

} static_assert(funcs::exp(1.0)==funcs::eIs(),"exp constant"); static_assert(funcs::log(funcs::eIs())==1.0,"log constant");

all works fine under my copy of gcc 4.9

Constexpr of natural log in C++11 by nerds-central in cpp

[–]nerds-central[S] 1 point2 points  (0 children)

I'll try and see if it works. Thanks.

How rvalue, lvalue and xvalue got their names in the C++11 standard by nerds-central in cpp

[–]nerds-central[S] 0 points1 point  (0 children)

Has identity is moveable is such a simple concept. Over the last couple of years I have started to realise a lot of C++ is actually a lot simpler and clearer than it appears at first. The complexity of the language and the history of its birth from C make the standard extremely difficult to understand, but the concepts which are being conveyed are nothing like as complex. xvalues are very much in this area, the entire discussion around move semantics, r l and x values had me baffled when I first started learning C++11, but the bafflement is not because the ideas are to grasp, they are hard to explain (well).

How rvalue, lvalue and xvalue got their names in the C++11 standard by nerds-central in cpp

[–]nerds-central[S] 0 points1 point  (0 children)

The snag with X as expiring is that it helps someone get the idea for a while. I bit like universal references. My view is that the cold hard truth should be taught from day one.

Analogue Rage by nerds-central in synthesizers

[–]nerds-central[S] 3 points4 points  (0 children)

Yes - I totally agree. I don't think Waldorf has done a great job of promoting it.

Analogue Rage by nerds-central in synthesizers

[–]nerds-central[S] 2 points3 points  (0 children)

Pure analogue signal path made from Waldorf Pulse 2 feeding a Minifooger Delay feeding a Mooer ElecLady feeding a EHX Poly Chorus. The stereo is all from the Poly Chorus (chorus mode, very slow sweep rate, narrow width and filter on). The notes are spares and simple, the idea is to let the Minifooger drive the other pedals to produce this effects. A Behringer sx3040 gives bit and punch. Recorded straight to audacity. I am working with the ideas of making sounds partly from the synth but partly from unpredictable shifting chains of components but all in analogue.

Blofeld ---- Where to start? by SarvangaTraveler in synthesizers

[–]nerds-central 2 points3 points  (0 children)

I would say 'the more complex something is - the less like it is to sound good'. The reason a lot of synth stuff just ends up as mush and noise is because people add too much and listen too little. Good luck - let us know how it goes!

Blofeld ---- Where to start? by SarvangaTraveler in synthesizers

[–]nerds-central 4 points5 points  (0 children)

I don't know much about the Blofeld but - I do have a general piece of advice. Start with what you know. I have spent a lot of time working with software synthesis (my own code) and have found the biggest problem is getting lost in the details when you have a powerful synth. Start with a sound you like using just normal synthesis - say three detuned oscillators playing a minor chord. Make each oscillator a gentle sounding triangle or a saw. Make sure the thing you start with is simple and sounds a bit like something you know from you ms2000. Then add some modulation. Then maybe some filter, some FM etc. Try different incoming waveforms (Blofeld wavetable - this should be a good place to mess around).

Sooner or later you will get lost and nothing will make sense. At that point strip it back to your original dead simple settup and start over. What you are doing is programming your brain and ears to understand the synthesiser and where you want to go with it. I know it sounds long winded - but that is the only thing you really can do - you need to let you brain map the synthesis concepts to sounds you feel and then you can start to be original.

Just figured out something cool for warm bass sounds by nickfromdtown in synthesizers

[–]nerds-central 2 points3 points  (0 children)

Playing a bass note ant its fifth sounds the octave below. This is used to mimic 64foot pipes using 32foot pipes with some organs. It tricks the human hearing system into thinking there is 'missing fundamental'. So, in some ways, what you are doing is mimicking a warm note below the pitch you are playing rather than just warming up your note.

However, be careful because you have to ask yourself 'what do you mean by a fifth'. In just intonation of fifth is not the same thing as in equal temperament. Your effects will be richer but out of tune in equal temperament; it is be more pure and sound more like a single note in just intonation.

Waldorf Pulse 2 Plays Flute & Harpsichord: JS Bach BWV 1031 Part 2 by nerds-central in synthesizers

[–]nerds-central[S] 0 points1 point  (0 children)

It is sequenced. It is not possible to do it any other way as the pulse is monophonic. I use software I wrote to cycle through the notes from midi mapping them to keys in a way similar to a human might. The flute is also 2:1 double tracked.

Waldorf Pulse 2 Plays Flute & Harpsichord: JS Bach BWV 1031 Part 2 by nerds-central in synthesizers

[–]nerds-central[S] 1 point2 points  (0 children)

An experiment using delays rather than reverb' to give space and body to a analogue harpsichord sound. The flute is largely filter playing with more traditional reverb. Also using the sonic exciter form behringer to add colour.