Show Posts
Pages: 1 [2] 3 4 5
16  Using Arduino / Audio / Re: Possibility for polyphonic Wavetables (DDS) on different pinouts on: February 19, 2014, 06:23:03 am
Dear TRGT8,
4 voices without modulation sounds good for me!
I know Timer one, interrupts, progmem, but the atomic library is new for me! Mozzi is a really hugh project and a little overkill for my further project.
May you can post some code of your experiences?

Thank you
Matthias
17  Using Arduino / Audio / Re: Possibility for polyphonic Wavetables (DDS) on different pinouts on: February 10, 2014, 04:24:43 pm
"Schematics and Source Code - $ 14.95 USD "
...a little bit pricey just to answer my question  smiley
seriously: It should be possible to get out 8 voices per chip.
18  International / Deutsch / Re: Arduino Uno verhindert hochfahren (Mac Mini) on: February 10, 2014, 11:49:58 am
...das mit dem nicht hochfahren wollen ist mir bei meinem 2009er MBP auch schon öfters passiert. Kann auch nicht nachvollziehen wann und wie, hängt wohl auch davon ab, welchen USB-Port ich verwende.
Hab das Problem anders gelöst:
Aktiven USB-Hub um ein paar Euro gekauft (ist beim MBP sowieso fast Pflicht) und weg sind die Probleme und du hast dadurch gleichzeitig einen kleinen Schutz für die Mac-USB Ports vor Überspannung (dann ist halt der paar Euro Hub hin).
Also bitte nicht gleich das OS neu installieren usw..

LG
Matthias
19  Using Arduino / Audio / Possibility for polyphonic Wavetables (DDS) on different pinouts on: February 10, 2014, 11:41:24 am
Hello,
I'm working on an analog synthesizer project with "real" VCO´s (based an ICL8038), so my idea for the next projekt is, using DCO´s, with other words DDS, direct digital synthesis.
So the setup should be:
1 Atmega328 for controlling MIDI, ADSR, routing, switching, connected to:
Amega328(s) for DCO routed to:
SSM/V2164 (for VCA and  VCF good and cheap chip by the way!)
To make the project more interesting i´ll use polyphonic of 4-6 voices
 
My first attempts generating wavetables (8-bit, 256steps) with external DAC´s (MCP49xx)  brought me back to the ground of the earth. (Slow as hell). Not even more than 1.2khz was possible (without control!) in the shortest code example (and different libraries).

So I came over the "Mozzi library" which generates DDS as a charme but only for one pinout. (I want to filter the voices individually, like a "real synth").

My question is whether it would be possible, making up to 4-6 (basic)wavetable voices with on atmega and how.(8bit, 256 steps minimum)
The control of the chip should be easy as possible (Voice#, value, waveform (maybe PWM and modulation..keep on dreaming)).

My short calculation says no: 16MHZ / 256 = 60khz left for everything...

Thank you and
Regards
Matthias
20  International / Deutsch / Re: Brainstorming: Arduino gesteuerter Analogsynth on: October 13, 2013, 03:23:13 am
Hab ihn leider auch noch nicht getestet, beim kurzen Durchlesen ist mir folgendes aufgefallen:
Funktionsweise:
1 Poti am AnalogIn0 = Wellenformauswahl (7 Werte)
1 Poti am AnalogIn1 = Speed
Pin3 ist die Ausgabe (einfach mal ein TestLED daranhängen)
Die Timer2 Config (/*--- TIMER2 CONFIG ---*/) würde ich mal entfernen. (sehe den Sinn nicht im Sketch)
Serial.begin ist auch nicht notwendig.
Werd´s selbst mal testen

Am LCD Shield hab ich den Code schon erfolgreich getestet (selbst geschrieben):
mit Timer1.initialize(100000);  legt  man die Rate fest, Ausgabe ist 12 Bit
Code:
#include <TimerOne.h>
 #include <LiquidCrystal.h>
 LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
 byte zaehler     = 0;
 int sintable[] = {
   2048,2098,2148,2198,2248,2298,2348,2398,2447,2496,2545,2594,2642,2690,2737,2784,2831,2877,2923,2968,3013,3057,3100,3143,3185,3226,3267,3307,3346,3385,3423,3459,3495,3530,3565,3598,3630,3662,3692,3722,3750,3777,3804,3829,3853,3876,3898,3919,3939,3958,3975,3992,4007,4021,4034,4045,4056,4065,4073,4080,4085,4089,4093,4094,4095,4094,4093,4089,4085,4080,4073,4065,4056,4045,4034,4021,4007,3992,3975,3958,3939,3919,3898,3876,3853,3829,3804,3777,3750,3722,3692,3662,3630,3598,3565,3530,3495,3459,3423,3385,3346,3307,3267,3226,3185,3143,3100,3057,3013,2968,2923,2877,2831,2784,2737,2690,2642,2594,2545,2496,2447,2398,2348,2298,2248,2198,2148,2098,2048,1997,1947,1897,1847,1797,1747,1697,1648,1599,1550,1501,1453,1405,1358,1311,1264,1218,1172,1127,1082,1038,995,952,910,869,828,788,749,710,672,636,600,565,530,497,465,433,403,373,345,318,291,266,242,219,197,176,156,137,120,103,88,74,61,50,39,30,22,15,10,6,2,1,0,1,2,6,10,15,22,30,39,50,61,74,88,103,120,137,156,176,197,219,242,266,291,318,345,373,403,433,465,497,530,565,600,636,672,710,749,788,828,869,910,952,995,1038,1082,1127,1172,1218,1264,1311,1358,1405,1453,1501,1550,1599,1648,1697,1747,1797,1847,1897,1947,1997
};
void setup()
{
  // Initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards
//  pinMode(13, OUTPUT);   
   lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("Welcome");
  Timer1.initialize(100000); // set a timer of length 100000 microseconds (or 0.1 sec - or 10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
  Timer1.attachInterrupt( timerIsr ); // attach the service routine here
}
 
void loop()
{
  // Main code loop
  //
      lcd.setCursor(0,1);
 lcd.print(sintable[zaehler]);
 lcd.print("   ");
 if (zaehler ==0)
 {
         lcd.setCursor(0,1);
 lcd.print("         ");
 }
}
/// --------------------------
/// Custom ISR Timer Routine
/// --------------------------
void timerIsr()
{
    // Toggle LED
    zaehler++;
}
21  International / Deutsch / Re: Brainstorming: Arduino gesteuerter Analogsynth on: October 12, 2013, 04:08:06 pm
hab mittlerweile auch einen einfachen, brauchbaren Code gefunden, muss natürlich modifiziert werden:
http://abrammorphew.com/notes/2012/01/05/arduino-lfo-generator/
Glaube aber, dass in seinem Text ein Fehler ist:
i’m only using timer2 for output in this code. i’ve started implementing the LFO code into my 8-bit melotronium where timer 2 is dedicated for the audio output.
Ist wohl ein Tippfehler und er meint, dass Timer0 verwendet wird.
22  International / Deutsch / Re: Brainstorming: Arduino gesteuerter Analogsynth on: October 12, 2013, 12:48:24 pm
Lt. deiner Tabelle dürften die Centbereiche recht egal sein, nunmal da ein LFO nicht unbedingt die Rolle eines VCO´s übernehmen muss.
Wie gesagt, ob der 328er die "Power" besitzt, da kann ich nur eines machen: Es ausprobieren smiley Realistisch gesehen, werden mehr als 500HZ-1kHZ nicht drinnen sein.
Zu den ganzen alten analog(digital) IC´s: Die hat restlos alle Dave Smith aufgekauft und verbaut sie in seinen Neuerscheinungen smiley
Ironischerweise bin ich ja Behringer zum Dank verpflichtet, da diese CoolAudio vor x Jahren aufgekauft haben und dadurch sind zumindest noch VCA-Chips und BBD-Chips zu humanen Preisen erhältlich, wenn auch schwer zu bekommen. http://www.coolaudio.com/products.html
Die einzige andere Firma ist THAT, die Preise sind sind halt nicht mehr im Budgetbereich anzusehen.
Sounddemos werden wohl noch länger auf sich warten lassen, da ich noch mitten in der Experimenterphase bin, wo ich alles austeste bevor ich meine Prototypplatinen löte.
Interessanterweise ist mir bei meinen ganzen Überlegungen und Experimenten ein "Abfallprodukt" eingefallen, dass - zumindest am analog Retro Synthiemarkt ein Renner wäre: Das Midi-CV Interface mit Wertetabelle (könnte man sogar als Autotune konzipieren) - die meisten alten Analogsynths sind, alterungsbedingt - vollkommen out of tune (auch in sich), DAS wäre dann die Abhilfe smiley-wink

LG
Matthias
23  International / Deutsch / Re: Brainstorming: Arduino gesteuerter Analogsynth on: October 12, 2013, 06:32:07 am
die Idee mit dem 8-Bit Counter+R2R + EEProm gefällt mir! Da sind wir schon fast bei Wavetables!
Hab auch schon ein Projekt gesehen, wo ein 555-Timer über einen Eingangspin die Frequenz im Microprozessor steuert, der dann über R2R/DAC´s/wasauchimmer die Wellenformen/Wavetables ausgibt, also fast der umgekehrte Weg deiner Idee.

Nur bei meinem Projekt stellt sich weniger die Frage nach der Hardwarelösung, hab es wohl noch nicht ganz klar beschrieben:

Der Haupt"Arduino" soll folgendermaßen funktionieren (ich speck jetzt die Funktionen ein bisschen ab)
Empfängt Mididaten:
Midiempfang: Noteon/off: geht an den Pitch DAC + generiert die ADSR Hüllkurve(n) (GATE on Gate off) für VCA und VCF
Midiempfang: Controller(x) Wert y: Beispiel: Empfängt Controller 47 mit Wert 80, Intern hab ich festgelegt, falls Controllernummer 47 empfangen wird, dann gibt er den Wert(y) auf den VCF-Cutoff DAC aus. Das lässt sich beliebig fortsetzen (wie ich halt die DAC´s hardwareseitig beschaltet habe).
Im Minmalbetrieb hab ich drei DAC´s:
1x für Pitch
1x für VCA
1x für VCF (Cutoff)

d.h. mein digitaler LFO rechnet sich dann an die Ausgangswerte hinzu, Beispiel:
Note C1 wird gedrückt:
Pitch-DAC sendet Wert für CV-Pitch (aus Wertetabelle)
ADSR1 (für VCO) bekommt das Gatesignal (Note xx on) und generiert die Hüllkurve, die über den VCA-Dac ausgegeben wird
ADSR2 (für VCF) bekommt das GAtesignal (Note xx on) und geniert die Hüllkurve für den Cutoff-DAC,
aber jetzt:
Ich habe definiert, dass LFO1 mit z.B. Amplitude 127 (maximal) auch das Cutoffsignal beeinflussen soll:
D.h. die Ausgabe  für den CutoffDAC: (Momentan)Wert der Hüllkurve + (LFO *Amplitude)

Somit lässt sich der LFO x-beliebig mit x-beliebiger Amplitude an jeden DAC addieren.

Vorteile der Software-LFO Lösung:
kein zusätzlicher  Hardwareaufwand
Software lässt sich x-beliebig erweitern/verändern usw... ohne dass die Hardware umgebaut werden muss
kompletter "Recall" über Midi: da alle Werte über Midi gesteuert werden, kann man Programs generieren.

Also ich muss nur 1-2 LFO´s zusätzlich berechnen, die sollen aber a) nicht "eiern" (wenn z.b. mehrere Controllerdaten gleichzeitig empfangen werden) und b) wenig CPU Last benötigen, damit die anderen Funktionen nicht gestört werden.

Mein "Vorbild" für das ganze Projekt ist der Oberheim Matrix 1000, der in einer 19' Höheneinheit ein 6-stimmiger analoger Synth war und über Software (oder Hardwarecontroller) unzählige Funktionen und Kombination beherrschte. (Sicher auch dank seiner 6x CEM3396, die eine "all inclusive" Lösung für Synths waren)

Liebe Grüße
Matthias


24  International / Deutsch / Re: Brainstorming: Arduino gesteuerter Analogsynth on: October 11, 2013, 03:10:10 pm
...ist ähnlich dem DDS-Sinewavegenerator:
Sinuskurve als Table, restlichen Wellenformen berechnet, "abgefeuert" mittels Interrupt (Timer).
Werde wohl einfach mal das Projekt beginnen (dauert sicher sowieso mehrere Monate (Vollzeitjob + 1,5 jährige Tochter smiley ), und den LFO "nachreichen", ist ja eine reine Softwarelösung und rechnet sich dann an Pitch/Cutoff/VCA usw. an die vorhanden DAC´s dran. Vermute nur, dass dem 328er die Luft ausgehen wird und entweder "eiert" oder dass Midisteuerdaten untergehen/verzögert werden. Da wäre wohl ein Due die performantere Wahl. Abgesehen davon, sind mehr als ein bis zwei unabhängi timergesteuerte LFO´s sowieso nicht möglich (es stehen nur Timer1 u. Timer2 zur Verfügung). Dh jeden weiteren LFO müsste man in ein  proportionalen Verhältnis (Teilungsfaktor) setzen....

Im Übrigen bin ich mit meinen MCP4922 12-Bit DAC´s über das Ziel hinausgeschossen:
Notwendig sind diese nur für die Pitch Werte (da kann man mit 4096 Teilschritten sehr genau tunen, werde auch für alle Notenwerte eine eigene Table machen.)
Bei VCO/VCF/Routings  sind 8 Bit vollkommen ausreichend, v.a. deswegen, wenn das Teil MIDI gesteuert wird und die Controller nur 7 Bit (128 Schritte) per Definition haben (außer Pitchbend).
25  International / Deutsch / Brainstorming: Arduino gesteuerter Analogsynth on: October 10, 2013, 10:57:03 am
Hallo,

wie ich im Beitrag: http://forum.arduino.cc//index.php?topic=192178.0
schon erwähnt habe, plane bzw. experimentiere ich mit einem Arduino gesteuerten Analogsynthesizer.
Eckdaten des Projektes: (mittlerweile abgespeckt, sonst wird es nie fertig)

Analogteil:
  • 2 VCO´s (ICL8038 basierend)
  • 2x VCF (einmal Multimode HP/BP/LP) und einmal 4-Pole LP (Herzstück: SSM2164 bzw. V2164)
  • VCA: auch auf V2164 basierend
Digitalteil:

Midi/CV Converter (mittels MCP4922 DAC´s):
  • Pitch (für beide VCO´s getrennt)
  • Balance VCO1 zu VCO2
  • VCF Cutoff (möglicherweise Resonance)
  • VCA
  • div Zusätze (Modulatoren, wie VCO1 Out -> VCO2 In (FM)) usw..

analoge Matrixsteuerung (mittels mehreren CMOS 4054 und 4066, über Shiftregister gesteuert)
  • Schalten der analogen Wellenformen der VCO`s (sin,tri,pulse,saw)
  • Zuschalten vom Sub-OSC
  • Wählen der/des Filterboards
  • Wahl des Filtertyps

digital generiert:
  • ADSR Hüllkurven (Pitch, VCF, VCA) können ruhig linear sein, da die exp-Wandlung die Hardware übernimmt
  • 1-2 LFO´s, die dann digital geroutet werden können (z.B. LFO1 mit Faktor xy zu VCO1 Pitch DAC-Out)
Um die Last zu verteilen, plane mindestens 2 ATmega328 zu verbauen:

1x als reiner Midicontroller (Display, Potis, Buttons, Led´s, Arpeggiator (Zukunft), Patchspeicher, EEprom) - hatte schon ein ähnliches Projekt gebaut, d.h. macht mir keine Kopfschmerzen
1x als Midi-CV-Interface (DAC´s, Switches, ADSR, LFO)

beide 328er werden über das MIDI Protokoll gesteuert (hat den Vorteil, dass ich den reinen Controller erst viel später bauen kann und das CV-Interface zunächst mit einem Standardmidicontroller bzw. Software steuern kann).

Meine Frage ist nur, ob das CV-Interface die Rechnenleistung schafft, es muss ja folgendes können:
Midi Noten + Velocity
Controllerdaten auf die DAC´s verteilen
ADSR auf die DAC´s
Switching (da  ist mir das Timing egal, da dies nicht unbedingt während des Spielbetriebs funktionieren muss)
LFO...und der bereitet mir Kopfzerbrechen, ob der 328er mit der Rechenleistung klar kommt (würde ich über Timer1 oder Timer2 steuern und höchstens bis auf 500-1000Hz laufen lassen). Ausgangscode für den LFO hätte ich mir dieses Projekt gedacht: http://interface.khm.de/index.php/lab/experiments/arduino-dds-sinewave-generator/

Was meint ihr dazu?

Danke u.
LG
Matthias
26  International / Deutsch / Re: Standalone Arduino/FTDI Basic/Optokoppler on: October 09, 2013, 06:39:51 am
Yup, ist mir auch schon untergekommen, dass der 4051er besser geeignet ist, da er VDD,VEE und VSS beherrscht.
Mir ist nur die Schaltung http://hem.bredband.net/bersyn/4p%20VC%20switch.pdf nicht ganz klar:
Die VEE und VSS wird an -1 Volt angeschlossen? Klingt ein bisschen mager für mich, v.a. wenn man mit VPP 5 Volt arbeitet, da sollte VEE mindestens -3V sein oder?
Ich bin ja gespannt, ob meine Lösung mit den 4054 (bekomme ich erst) und 4066 funktioniert, zumindest hab ich schon geschafft, den 4066 mit +-5V über einen Optokoppler mit dem Arduino zu steuern (Übersprechen hab ich halt noch nicht getestet).
27  International / Deutsch / Re: Standalone Arduino/FTDI Basic/Optokoppler on: October 09, 2013, 05:24:37 am
gerne: Wegen der Schaltung (falls du es soweit durchgelesen hast) ist nur zu bedenken, dass es mehrere 4046er gibt, die nicht oder nur schlecht funktionieren, betrifft natürlich(!) all die Typen, die man im normalen Handel (und um wenige Cent auf Ebay) erhält:
TI CD4046BE
SGS Microelectronics HCF4046
Zitat:
"These particular ICs were the Texas instrument CD4046BE; they would not even make the first octave from 80 to 160 Hz. "
und
"There was one other type of 4046 that did not quite make the grade (in comparison to others that seemed much easier to tune) and that was the SGS Microelectronics HCF4046."
D.h. übrig bleibt:
National CD4046
Fairchild CD4046
Motorola MC14046 (angeblich der Beste)
D.h. wenn du nicht die drei letztgenannten Chips besitzt, klingt es eher nach Frustbasteln. Da würde ich eher 6 Euro für 10 Stück ICL8038 investieren (Versandkostenfrei über Ebay: http://tinyurl.com/oxftg22). Schaltung kann ich dir gerne per PM schicken (auch von Thomas Henry, ist ähnlich zum 4046er aufgebaut)!
Du wirst immer wieder über diese 2k Tempcos stolpern: sind SEHR schwer erhältlich (hab mir über smallbear welche geordert, aber auch nur SMD), wenns nur für ein Hobbyprojekt (bzw. einen Synth mit "Charakter" ist), dann nimm einfach 2k Widerstände und kleb die (selbstgematchten) Transitoren zusammen.

LG
Matthias
28  International / Deutsch / Re: Standalone Arduino/FTDI Basic/Optokoppler on: October 09, 2013, 04:09:52 am
Ich muss sagen, dass mich das jetzt schon ein wenig verunsichert, d.h. die Auswirkung wäre wenn, ein höherer Noisepegel?
Ansonsten könnte ich mal 4 Stück 9-Volt Batterien mit jeweils einem LM7815 und einem LM7915 testweise an die Schaltung anschließen und einen A/B Vergleich machen.
Wie würde ein besseres Entstörfilter in etwas aussehen?
Bzgl. Bastelwahn mit 4046, könnte ich ja diese Schaltung empfehlen: http://www.birthofasynth.com/Thomas_Henry/Pages/X-4046.html#X-4046_VCO_Schematics

Danke und liebe Grüße

Matthias
29  International / Deutsch / Re: Standalone Arduino/FTDI Basic/Optokoppler on: October 08, 2013, 04:48:21 pm
Uwe: darüber hab ich mir einfach keine Gedanken gemacht, da mir  (besser gesagt meinen Ohren) nichts, also so richtig nichts negatives aufgefallen wäre. Kann es sein, dass das eingebaute Entstörfilter - zumindest im NF Bereich - so gut arbeitet, dass es nicht "stört"?
Datasheet: http://www.elpro.org/shop/_pdf_products_new/4985.pdf
Oszilloscope hab ich leider nicht, werde aber am PC die Wellenformen unter die Lupe nehmen (zumindest im hörbaren Bereich bis 22khz ist dies per Software möglich)
30  International / Deutsch / Re: Standalone Arduino/FTDI Basic/Optokoppler on: October 08, 2013, 01:32:39 pm
Liebe nix_mehr_frei,

danke für deine Tipps, die ich auch berücksichtigt habe/werde  (ich bin durch die "harte Schule" des Musikdings Forums gegangen und mehrfach schroff, aber zurecht zurechtgewiesen worden ; aber manche Tipps kannte ich noch nicht)
Habe mir testhalber vor längerer Zeit  eine Stück Burr Brown OP´s geleistet (ja, DIE muss man sich leisten!), war auch recht begeistert von denen, nur wenn man dann für ein Projekt gut 20  OP´s im Signalweg(!) hat, ist dann Schluss mit lustig (v.a. für die Geldtasche)
Mein Schaltnetzteil (PSAIG 62W +5V +15V -15V) arbeitet für meine Zwecke hervorragend, habe den Tipp dafür auch aus div. Foren bekommen, die die Döpfer-Modularteile damit betreiben, konnte noch keine negativen Eigenschaften auf den Signalweg entdecken.
Kerkos und Elkos habe ich im Schaltplan auch noch nicht eingezeichnet gehabt, auch wenn es, wie Schachmann richtig erwähnt hatte, nicht das direkte Signal, sondern die Steuerspannung ist.

@Schachmann: der LM358 ist aber nicht von Haus aus R2R, ist eher der LMV358 und der ist halt leider nicht in der Krabbelkiste Reichelt zu finden, da gibt´s wenn man SMD vermeiden will ab Euro 1.21 den OPA 347 PA (einfach!!! 2347 gibts nicht als PDIP)

Wobei ich auch noch bei einem Thema bin: Ich versuche, soweit wie möglich, ausschließlich kostengünstige Standardbauteile zu verwenden. Ausnahmen: ICL8038, SSM2164 (bzw. Coolaudio V2164, bei smallbear günstig zu haben). V.a. der v2164 nimmt schon enorm "Arbeit" ab (insb. beim VCF und VCO, da erspart man sich die LM13x00) Beispiel für einen 2164 4-Pole Filter: http://userdisk.webry.biglobe.ne.jp/000/024/65/1/VcfSSM0602a.GIF
Pages: 1 [2] 3 4 5