for learning more about sound lib MINIM
( @GoToLoop NO, the question is not about the library )
i play with sound synth, using these “natural frequencies”
you can hear about in esoteric / meditation videos… but also when you
dig about the MALTA Hypogeum and its sonic resonance
but personally, i like the interpretation here:
Have fun, create and experiment, and don’t let standards hold you back!
now in that kind of meditation/healing videos like this
you hear not only one tone, but also not like a melody?
( sorry long intro )
question:
am i supposed to play several of that tones/frequencies at the same time or only ONE and find some fitting chords for the actual one?
my start code:
// taken from MINIM examples:
/* how to patch more than one UGen to a Summer. AM*/
/* frequencyModulation FM */
/* how to use an FFT to analyze */
// natural frequencies ?
// https://ask.audio/articles/music-theory-432-hz-tuning-separating-fact-from-fiction
// https://pages.mtu.edu/~suits/notefreqs.html
// from video https://www.youtube.com/watch?v=Yimor2jRmCA
// ancient sumerians counting 12 ( 4 finger left hand) 60 ( 12 * 5 finger right hand)
// The Fibonacci Sequence is the series of numbers: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
// angles sum in geometry:
// triangle 180
// rectangle 360
// pentagon 540
// heptagon 900
// six star 1440
// supposed healing frequencies
float[] hf = {
111, //0/ Hz : cosmic basis? never see it mentioned with that music?
174, //1/ Hz : Relieves Pain & Stress
285, //2/ Hz : Heals Tissues & Organs
396, //3/ Hz : Eliminates Fear
417, //4/ Hz : Wipes out Negativity
432, //5/ Hz : The DEEPEST Healing | Let Go Of All Negative Energy
528, //6/ Hz : Repairs DNA, Brings Positive Transformation
639, //7/ Hz : Brings Love & Compassion in Life
741, //8/ Hz : Detoxifies Cells & Organs
852, //9/ Hz : Awakens Intuition, Raises Energy at Cellular Level
963, //10/Hz : Connects to Higher Self
0, //11/
0, //12/
0, //13/
0, //14/
0, //15/
0, //16/
0, //17/
0, //18/
0, //19/
0.33, //20/ Hz : AM amplitude modilation freq.
20.0, //21/ Hz : FM freq
};
import ddf.minim.*;
import ddf.minim.ugens.*;
import ddf.minim.analysis.*;
Minim minim;
AudioOutput out;
Oscil wave;
Oscil am; // the Oscil we use for AM .
Oscil fm; // the Oscil we use for FM .
FFT fft;
float vol=-34.4; // 6 .. -48 / 100 .. 0 %
boolean f1 = true, f2 = true, f3 = true;
void setup() {
size(512, 200, P3D);
minim = new Minim(this);
out = minim.getLineOut();
out.setGain(vol);
Summer sum = new Summer();
wave = new Oscil( hf[5], 0.8f, Waves.SINE); // TRIANGLE //frequency
am = new Oscil( hf[20], 0.3f, Waves.SINE ); // create a sine wave Oscil for modulating the amplitude of wave
am.patch( wave.amplitude ); // AM
if (f1) wave.patch( sum );
wave = new Oscil( hf[1], 0.2f, Waves.SINE );
if (f2) wave.patch( sum );
wave = new Oscil( hf[9], 0.2, Waves.SINE );
fm = new Oscil( hf[21], 2.0, Waves.SINE ); //FM
fm.offset.setLastValue( 2*hf[9] ); // set the offset of fm so that it generates values centered around
fm.patch( wave.frequency );
if (f3) wave.patch( sum );
sum.patch( out ); // and the Summer to the output
fft = new FFT( out.bufferSize(), out.sampleRate() ); // create an FFT object that has a time-domain buffer
}
void draw() {
background(200, 200, 0);
fill(100, 0, 200); // text color
String show = "using: ";
if (f1) show += hf[5]+" AM by "+hf[20]+" / ";
if (f2) show += hf[1]+" / ";
if (f3) show += hf[9]+" with FM +-"+hf[21]+" / ";
show += " in Hz";
text(show, 20, height/2-10);
stroke(0, 100, 200); // line color
for (int i = 0; i < out.bufferSize() - 1; i++) { // draw the waveform of the output
line( i, 50 - out.left.get(i)*50, i+1, 50 - out.left.get(i+1)*50 );
// line( i, 150 - out.right.get(i)*50, i+1, 150 - out.right.get(i+1)*50 ); //mono same, need space for FFT
}
fft.forward( out.mix );
stroke(200, 0, 200); // line color
// println(fft.specSize()); //513 use 100 first only!
// for (int i = 0; i < fft.specSize(); i++) line( i, height, i, height - fft.getBand(i) );
for (int i = 0; i < 100; i++) rect( i*5, height, 5, - fft.getBand(i) );
if ( out.hasControl(Controller.GAIN) ) { // key [+][-] volume control
stroke(200, 0, 0);
fill(200, 0, 0);
rect(width -21, 0, 20, height);
noStroke();
fill(0, 200, 200);
float h = map(vol, 6, -48, 0, height-2);
float vpct = map(vol, -48, 6, 0, 100); //println("gain "+vol+" h "+h+" vpct "+vpct);
rect(width -20, h, 19, height-2);
out.setGain(vol); // if a gain control is not available, this will do nothing
if ( mouseX > width -20 && mouseX <width ) { // mouse over slider
if ( mousePressed ) vol = map(mouseY, 0, height-2, 6, -48); // and clicked
text("The current gain is " + nf(out.getGain(), 1, 1) +" / "+(int)vpct+" %", 5, 15); // if a gain control is not available this will report zero
}
} else text("The output doesn't have a gain control.", 5, 15);
}
someone play this already?