Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: This feature may not be available in some browsers.
Ist noch teurer als wenn man gleich ein ganzes Gehäuse machen läßt.Lassen sich die Ausfräsungen in der Panelplatte als Einfräsungen anstatt Durchfräsungen fertigen, die Laschen in den Seitenteilen entsprechend flacher, so dass die Deckplatte geschlossen bleibt?
Oder lässt Du das lasern?
ich hatte immer den Song von Falco im Ohr ...Jeannie kommt NICHT von der Film (Jeannie ) sondern ist vom Teensy abgeleitet .
Ach so, ich lasse die Plexiglas Gehäuse lasern . Da ist sowas nicht möglich. Das Plexiglas Gehäuse ist doch sehr stabil. Die Shruthi Gehäuse waren von anfang an eine Katastrophe. Deshalb habe ich sehr viel Wert darauf gelegt das das Gehäuse für Jeannie nicht so klappert . Vieleicht ist ja hier im Forum jemand mit einer Fräse und Lust Gehäuse zu machen ??@ Andre' Da habe ich mich nicht ordentlich ausgedrückt.
Ich bezog meine Frage auf das Kunststoffgehäuse.
Ok wenn schon dann von Falco........ich hatte immer den Song von Falco im Ohr ...
// Phase increment for SupperSaw
saw_inc32 += 1300000; (every 44.1KHz)
case WAVEFORM_SUPERSAW:
for (i=0; i < AUDIO_BLOCK_SAMPLES; i++) {
uint32_t ph_1 = phasedata[i];
uint32_t ph_2 = ph_1 + saw_inc32;
uint32_t ph_3 = ph_1 + (saw_inc32 << 1);
uint32_t ph_4 = ph_1 + (saw_inc32 << 2);
uint32_t ph_5 = ph_1 + (saw_inc32 << 3);
uint32_t ph_6 = ph_1 + (saw_inc32 << 4);
int16_t val_1 = signed_multiply_32x16t(magnitude >> 2, ph_1);
int16_t val_2 = signed_multiply_32x16t(magnitude >> 3, ph_2);
int16_t val_3 = signed_multiply_32x16t(magnitude >> 3, ph_3);
int16_t val_4 = signed_multiply_32x16t(magnitude >> 3, ph_4);
int16_t val_5 = signed_multiply_32x16t(magnitude >> 3, ph_5);
int16_t val_6 = signed_multiply_32x16t(magnitude >> 3, ph_6);
*bp++ = val_1 + val_2 + + val_3 + + val_4 + + val_5 + val_6; // result to Buffer
}
break;
while (index<DASCFG_IMPLEMENTED_WAVEFORM)
{
tunevalue_ch[index] = tunevalue_osc1;
if (channelnumber>0 && detunevalue_osc!=0)
tunevalue_ch[index] += ((channelnumber + (Max(1,(currenttick % primenumber[channelnumber-1])))) * detunevalue_osc) + (currenttick % primenumber[index+5]);
index++;
channelnumber++;
}
@Rolf: Deine Doppelplusse (doppelplus-gut?? ) haben mich etwas ins Grübeln gebracht aber ich meine sie haben auf das Ergebnis keine ungewollten Auswirkungen.*bp++ = val_1 + val_2 + + val_3 + + val_4 + + val_5 + val_6;
ist das der inkrement- und additions-Operator? Oder wären das 3 "+"?
Hir mal etwas Fachlektüre.
@Rolf: Deine Doppelplusse (doppelplus-gut?? ) haben mich etwas ins Grübeln gebracht aber ich meine sie haben auf das Ergebnis keine ungewollten Auswirkungen.
// Phase increment for SupperSaw
saw_inc32 += 6378593;
case WAVEFORM_SUPERSAW:
for (i=0; i < AUDIO_BLOCK_SAMPLES; i++) {
uint32_t ph_1 = phasedata[i];
uint32_t ph_2 = ph_1 + (saw_inc32 * 1);
uint32_t ph_3 = ph_1 + (saw_inc32 * 2);
uint32_t ph_4 = ph_1 + (saw_inc32 * 3);
uint32_t ph_5 = ph_1 + (saw_inc32 * 4);
int16_t val_1 = signed_multiply_32x16t(magnitude * 0.40f, ph_1);
int16_t val_2 = signed_multiply_32x16t(magnitude * 0.15f, ph_2);
int16_t val_3 = signed_multiply_32x16t(magnitude * 0.15f, ph_3);
int16_t val_4 = signed_multiply_32x16t(magnitude * 0.15f, ph_4);
int16_t val_5 = signed_multiply_32x16t(magnitude * 0.15F, ph_5);
*bp++ = val_1 + val_2 + val_3 + val_4 + val_5;
}
break;
uint32_t ph_2 = ph_1 + (saw_inc32 * 1);
uint32_t ph_3 = ph_1 + (saw_inc32 * 2);
uint32_t ph_4 = ph_1 + (saw_inc32 * 3);
uint32_t ph_5 = ph_1 + (saw_inc32 * 4);
Versuch mal keine geradzahligen (schon gar nicht vielfache), sondern "krumme" Faktoren (1.31, 2.693 oder sowas....). In deinem Beispiel "treffen" sich die Wellen beim kleinsten gemeinsamen Vielfachen (bzw. Teiler) 12 und bilden dann die hörbaren Minima und Maxima.
.... es sei denn es ist so beabsichtigt (?)
// ------- Quad saw (mit aliasing) -------------------------------------------
void Oscillator::RenderQuadSawPad(uint8_t* buffer) {
uint16_t phase_spread = (
static_cast<uint32_t>(phase_increment_.integral) * parameter_) >> 13;
++phase_spread;
uint16_t phase_increment = phase_increment_.integral;
uint16_t increments[3];
for (uint8_t i = 0; i < 3; ++i) {
phase_increment += phase_spread;
increments[i] = phase_increment;
}
BEGIN_SAMPLE_LOOP
UPDATE_PHASE
data_.qs.phase[0] += increments[0];
data_.qs.phase[1] += increments[1];
data_.qs.phase[2] += increments[2];
uint8_t value = (phase.integral >> 10);
value += (data_.qs.phase[0] >> 10);
value += (data_.qs.phase[1] >> 10);
value += (data_.qs.phase[2] >> 10);
*buffer++ = value;
END_SAMPLE_LOOP
}
// Phase increment for SupperSaw
saw_inc32 += 678593;
case WAVEFORM_BANDLIMIT_SQUARE:
for (i = 0 ; i < AUDIO_BLOCK_SAMPLES ; i++)
{
int32_t val = band_limit_waveform.generate_square (phasedata[i], i) ;
*bp++ = (int16_t) ((val * magnitude) >> 16);
}
break;
case WAVEFORM_SAWTOOTH:
for (i=0; i < AUDIO_BLOCK_SAMPLES; i++) {
*bp++ = signed_multiply_32x16t(magnitude, phasedata[i]);
}
break;
case WAVEFORM_SUPERSAW:
for (i=0; i < AUDIO_BLOCK_SAMPLES; i++) {
uint32_t spread_2 = saw_inc32;
uint32_t spread_3 = saw_inc32 + saw_inc32;
uint32_t spread_4 = saw_inc32 + saw_inc32 + saw_inc32;
uint32_t spread_5 = saw_inc32 + saw_inc32 + saw_inc32 + saw_inc32;
uint32_t ph_1 = phasedata[i];
uint32_t ph_2 = (ph_1 + spread_2);
uint32_t ph_3 = (ph_1 + spread_3);
uint32_t ph_4 = (ph_1 + spread_4);
uint32_t ph_5 = (ph_1 + spread_5);
int16_t val_1 = signed_multiply_32x16t(magnitude * 0.40f, ph_1);
int16_t val_2 = signed_multiply_32x16t(magnitude * 0.15f, ph_2);
int16_t val_3 = signed_multiply_32x16t(magnitude * 0.15f, ph_3);
int16_t val_4 = signed_multiply_32x16t(magnitude * 0.15f, ph_4);
int16_t val_5 = signed_multiply_32x16t(magnitude * 0.15F, ph_5);
*bp++ = val_1 + val_2 + val_3 + val_4 + val_5;
}
break;
case WAVEFORM_SAWTOOTH_REVERSE:
for (i=0; i < AUDIO_BLOCK_SAMPLES; i++) {
*bp++ = signed_multiply_32x16t(0xFFFFFFFFu - magnitude, phasedata[i]);
}
break;
case WAVEFORM_BANDLIMIT_SAWTOOTH:
case WAVEFORM_BANDLIMIT_SAWTOOTH_REVERSE:
for (i = 0 ; i < AUDIO_BLOCK_SAMPLES ; i++)
{
int16_t val = band_limit_waveform.generate_sawtooth (phasedata[i], i) ;
val = (int16_t) ((val * magnitude) >> 16) ;
*bp++ = tone_type == WAVEFORM_BANDLIMIT_SAWTOOTH_REVERSE ? (int16_t) -val : (int16_t) +val ;
}
break;
case WAVEFORM_TRIANGLE_VARIABLE:
if (shapedata) {
for (i=0; i < AUDIO_BLOCK_SAMPLES; i++) {
uint32_t width = (shapedata->data[i] + 0x8000) & 0xFFFF;
uint32_t rise = 0xFFFFFFFF / width;
uint32_t fall = 0xFFFFFFFF / (0xFFFF - width);
uint32_t halfwidth = width << 15;
uint32_t n;
ph = phasedata[i];
if (ph < halfwidth) {
n = (ph >> 16) * rise;
*bp++ = ((n >> 16) * magnitude) >> 16;
} else if (ph < 0xFFFFFFFF - halfwidth) {
n = 0x7FFFFFFF - (((ph - halfwidth) >> 16) * fall);
*bp++ = (((int32_t)n >> 16) * magnitude) >> 16;
} else {
n = ((ph + halfwidth) >> 16) * rise + 0x80000000;
*bp++ = (((int32_t)n >> 16) * magnitude) >> 16;
}
ph += inc;
}
break;
} // else fall through to orginary triangle without shape modulation
case WAVEFORM_TRIANGLE:
Osc DeTune Frequenz
1 0 87,30706573
2 2851 87,37079054
3 -5702 87,17961609
4 11413 87,56216615
5 -17107 86,92469448
6 25678 87,88101375
7 -19957 86,86099201
8 19954 87,75307238
9 -25688 86,73289418
10 59866 88,6451751
11 -45631 86,2871334
12 108332 89,72847462
Ich hatte die letzten Jahre auch ein paar Synths probiert und wieder verkauft (Ich bin absoluter Hobby-Laie). Bei der Jeannie war sogar meine Frau erstaunt: „DER Sound kommt von dem Teil was Du zusammengelötet hast? Unglaublich…“.Habe heute meine Jeannie von 1.7x auf 1.99x geupdatet und muss sagen :
"Holla die Waldfee".
…
Danke Rolf und André für eure Arbeit und diesen tollen Synthie....
case WAVEFORM_SAWTOOTH:
for (i=0; i < AUDIO_BLOCK_SAMPLES; i++) {
// Phase increment for SupperSaw
saw_inc32 += inc >> 8;
uint32_t spread_2 = saw_inc32;
uint32_t spread_3 = saw_inc32 + saw_inc32;
uint32_t spread_4 = saw_inc32 + saw_inc32 + saw_inc32;
uint32_t spread_5 = saw_inc32 + saw_inc32 + saw_inc32 + saw_inc32;
uint32_t ph_1 = phasedata[i];
uint32_t ph_2 = (ph_1 + spread_2) * 3.09f;
uint32_t ph_3 = (ph_1 + spread_3) * 5.01f;
uint32_t ph_4 = (ph_1 + spread_4) * 3.15f;
uint32_t ph_5 = (ph_1 + spread_5) * 4.79f;
int16_t val_1 = signed_multiply_32x16t(magnitude * 0.40f, ph_1);
int16_t val_2 = signed_multiply_32x16t(magnitude * 0.15f, ph_2);
int16_t val_3 = signed_multiply_32x16t(magnitude * 0.15f, ph_3);
int16_t val_4 = signed_multiply_32x16t(magnitude * 0.15f, ph_4);
int16_t val_5 = signed_multiply_32x16t(magnitude * 0.15F, ph_5);
*bp++ = val_1 + val_2 + val_3 + val_4 + val_5;
}
break;
Nennt sich dann „Xmas Supersaw Massacre“?…
Aber trotzdem , was für ein dicker sound.... Ist auch bald Weihnachten. Mit dem Bass könnt ihr dann den Weihnachtsmann umhauen .