Jump to content

rolfdegen

Members
  • Posts

    457
  • Joined

  • Last visited

  • Days Won

    14

Posts posted by rolfdegen

  1. Wir planen jetzt das Motherboard. Auf dem Motherboard (siehe Bild) sitzt die Spannungsversorgung, Midi Schnittstelle, VCA, Fx (Delay Schaltung) und Audio Ein/Ausgang. Das Filter- und CPU-Board werden später auf das Motherboard gesteckt. Da auf dem CPU-Board einige SMD Bauteile sitzen, wird sie von uns gelötet und getestet ausgeliefert. Jetzt gibt es noch ein paar Details zu klären, die den externen Audio Eingang auf dem Motherboard betreffen. Dann wird Andre mit dem Layouten beginnen. 

    DE:GENERATOR Motherboard
    Degenerator-Layout3%2B%25281%2529.bmp
    Änderungs Info: Der LCD Konnektor ist jetzt komplett auf das CPU Board gekommen.

    Gruß Rolf 
     

  2. Hallöchen..

    Heute sind die CPU Platinen für den DE:GENERATOR aus China eingetroffen. Wir haben insgesamt 10 Stück bestellt. Jetzt gehts ans SMD löten. Bin gespannt ob wir's hinbekommen.

    CPU Platinen für den DE.GENERATOR
    P1050566%2B%255B23506%255D.JPG

    P1050567%2B%255B23505%255D.JPG

    Gruß Rolf 

    • Like 1
  3. Hallöchen. Was ich zur Zeit mache.. nix Augenzwinkern 

    Das war gelogen. Ich arbeite zur Zeit an ein paar Midi-Routinen für den DE:GENERATOR. Bei einer Routine handelt es sich um eine kleine Midi Noten Verwaltung (NoteStack).

    Der NoteStack macht folgendes: Wenn ich eine Midi Note spiele, wird die Noten Nummer auf Platz 1 im NoteStack gespeichert und der Ton vom Synthesizer gespielt. Lasse ich die Taste wieder los, so wird die Note im NoteStack gelöscht und der Ton wird ausgeschaltet. Simpel.. 

    Jetzt drücken wir aber zwei Noten. Fast passiert: Zuerst wird die 1.Note auf Platz 1 im NoteStack gespeichert und der Ton gespielt. Danach wird die 2.Note auf Platz 2 im NoteStack gespeichert und der Ton für die 2.Note gespielt. Damit befinden sich jetzt zwei Noten im NoteStack. Die 1.Note auf Platz 1 und die 2.Note auf Platz 2. Lasse ich jetzt die 2.Note los, so wird im Stack die 2.Note auf Platz 2 gelöscht und der Ton für die 1.Note gespielt.

    Änliches passiert wenn die 1.Note losgelassen wird und die 2.Note noch gespielt wird. Dadurch wird dann die 1.Note auf Platz 1 im NoteStack gelöscht und die 2.Note auf Platz 1 verschoben. Der Ton für die 2.Note wird ohne Unterbrechung weiter gespielt. Insgesamt können 16 Noten im NoteStack verwaltet werden.


    NoteStack Schema
    NoteStack_01.jpg

    C-Code Beispiel

    uint8_t NoteStack_pool[10];
    uint8_t NoteStack_ptr = 0;
    uint8_t NoteStack_size = 10;
    
    //-------------------------------------------------------------------------
    // NoteOn
    //-------------------------------------------------------------------------
    void midi_NoteOn(void)
    {
        uint8_t midi_note_temp = midi_data[0];                        // load midi_note
        
            if (NoteStack_ptr < NoteStack_size)
            {
                midi_note = midi_note_temp;
                NoteStack_pool[NoteStack_ptr] = midi_note;        // write current note into notestack_pool
                NoteStack_ptr++;
                midi_sync_flag = 1;                                // start envelopes
            }        
    }
    
    
    //-------------------------------------------------------------------------
    // NoteOff
    //-------------------------------------------------------------------------
    void midi_NoteOff(void)
    {
        // load current note
        uint8_t midi_note_temp = midi_data[0];
        uint8_t last;
        
        // search current note into notestack_pool
        for (uint8_t i = 0; i < NoteStack_size; i++)
        {
            if (NoteStack_pool[i] == midi_note_temp)
            {
                // clear current note into notestack_pool
                NoteStack_pool[i] = 0xFF;
                NoteStack_ptr--;
                last = i;
                
                // sort notes into notestack_pool
                for (last; last < NoteStack_size;last++)
                {
                    NoteStack_pool[last] = NoteStack_pool[last+1];
                }
                
                // playing previous note
                if (NoteStack_ptr > 0)
                {
                    last = NoteStack_ptr-1;
                    midi_note = NoteStack_pool[last];
                    frequency_tune();
                }
                else
                {
                    // stop envelope if no note into notestack_pool
                    midi_gate_flag = 0;
                }
                break;
            }
        }        
    }

    Gruß Rolf

    • Like 1
  4. Hallo.. ich schon wieder Augenzwinkern 

    Montags ist eben immer viel los und auch bei mir in der Entwicklungswerkstatt.

    Um den DE-GENERATOR in seiner "unbegrenzten" Möglichkeit der Klangerzeugung noch zu steigern, können jetzt die 128 festen Wellenformen als Wellenform Bank von der SD Karte geladen werden. Insgesamt besteht dann die Möglichkeit auf 128*100 Waveforms und 128*100 Sample-Files zu zugreifen . Eine Wellenform Bank besteht aus 128 einzelnen 256 Byte großen Wellenformen. Diese können zB am PC mit einem Audioeditor (Audacity) hergestellt und auf die SD Karte kopiert werden. Im Oszillator Menu kann dann der Benutzer auf die verschiedenen Wellenform Bänke und Sample-File Bänke zugreifen. Eine Editierung der Wellenform Bank ist im DE-GENERATOR momentan noch nicht vorgesehen.

    Mit dem Mode Schalter kann zwischen der Auswahl von Wellenform oder Sample-File umgeschaltet werden.

    Auswahl von Waveforms
    IMG_20160229_151838.jpg
    IMG_20160229_151910.jpg

    Auswahl von Sample-Files
    IMG_20160229_152957.jpg


    Gruß Rolf

  5. Hallöchen..

    Andre hat das CPU-Board jetzt fertig entwickelt. Ich muss es jetzt auf Fehler überprüfen und wenn alles gut ist werden diese Woche die ersten Platinen in China bestellt. Bin gespannt..

    Die zwei Pfostenleisten K3 und K4 verbinden das CPU-Board über zwei Flachbandkabel mit dem Bedienpanel für die LCD-Anzeige, Tasten und Encoder. Die restlichen Pfostenleisten sind mit dem Motherboard verbunden und zuständig für Stromversorgung, Audio- und Steuerleitungen. Die zwei 8 poligen Pfostenleisten auf der linken Seite des CPU-Boards sogen für einen sicheren und festen Halt des SD Karte Buchse.

    DE-GENERATOR CPU-Board
    CPU_Board_final_a.JPG

    CPU_Board_final_b.JPG

    CPU_Board_final_c.JPG

    Gruß Rolf 

  6. Hallo ihr Lieben!

    Da die Entwicklung der Platinen noch etwas andauert, habe ich die Zeit genutzt und an der Verbesserung der Menüoberfläche gearbeitet. Damit man die Menüseiten besser unterscheiden kann, haben diese jetzt farbige Frames, die nach Funktionsgruppen sortiert sind. So haben zum Beispiel die Menüseiten für den Oszillator alle einen blauen Frame und die LFO's einen grünen Frame.

    Menu.JPG


    Die Menüseite für den Filter wurde auch überarbeitet. Entsprechend der eingestellten Filterfunktion wird der Frequenzverlauf und die Resonanz als grafische Filterkurve dargestellt. Ein kleines Scope Fenster auf der rechten Seite zeigt die Wellenform des Filterausganges in Echtzeit an.

    Picture%2B19.jpg

    Das MiniScope hat jetzt eine bessere Triggerfunktion erhalten. Der Triggerlevel kann jetzt auch auf negative Amplitudenwerte eingestellt werden. Auf der linken Seite zeigt ein kleiner gelber Pfeil auf den eingestellten Pegel. Wird der Triggerlevel auf 0 eingestellt, ist die Triggerfunktion ausgeschaltet.

    Als nächstes steht die Oszillator Engine auf dem Programm. Ich will das Bedienkonzept etwas vereinfachen. Dadurch wird die ganze Sachen dann etwas überschaubarer.

    Bis zum nächten Post und ein schönes Wochenende.

    Gruß Rolf 

  7. Hallöchen..

    Andre hat den ersten Entwurf für die Prozessor-Platine gemacht. Da die Platine mit einigen SMD-Bauteile bestückt ist und wir den Kunden diese Lötarbeit nicht zumuten wollen, werden wir diese selber löten und getestet ausliefern.


    Prozessor Board im DE-GENERATOR

    CPU_Board.jpg

  8. Hallo zusammen..

    Der Schaltplan für das Frontpanel ist jetzt fertig. Insgesamt gibt es jetzt 13 Tasten, fünf Drehimpulsgeber und 3 Potis. Für die indirekte Beleuchtung der Drehimpulsgeber und Potis sorgen 32 LED's. Für spezielle Statusinformationen wzB Midi-Empfang und laufende LFO gibt es noch zusätzliche rote LED's. Die LED-Farbe kann aber bei der Bausatzbestellung selber ausgewählt werden.

    Das LCD-Display wird über einen 8Bit breiten Datenbus vom Xmega Prozessor angesteuert. Mit dem Latch IC1a werden die oberen Adress- und Datenleitungen DB8-DB15 für das LCD erzeugt. Die LED-Hintergrundbeleuchtung liegt über R67 1.5 Ohm direkt an der Versorgungsspannung von +3.3 Volt.

    Die Drehimpulsgeber und Tasten werden mit Hilfe eines Schieberigster IC3a, IC4a und IC5a über die SPI-Schnittstelle am Xmega Prozessor abgefragt. Über die gleiche SPI-Schnittstelle steuert das Schieberegister IC6a die roten Status LED's an.

    Pot1+2 sind über zwei ADC-Eingänge am XMega verbunden und werden jede Millisekunde abgefragt. In der Modulationsmatrix kann diesen Potis ein oder auch mehrere Modulationsziele zugewiesen werden. Das Volum-Poti ist ein Stereo-Poti und steuert die Lautstärke am Audioausgang. 

    Schaltplan Frontpanel
    PanelBoard.jpg

    Schaltplan Prozessor Board
    CPU_Board_321.jpg

    Gruß Rolf 

  9. Hallöchen..

    Im DE:GENERATOR habe ich für die Sample Aufnahme eine Noise Shaper Function integriert. Der ADC-Eingang arbeitet mit einer Auflösung von 12 Bit. Für die weitere Bearbeitung werden die Samples im DE:GENERATOR auf 8Bit herunter gerechnet. Beim normalen Herunterrechnen von 12 auf 8Bit (4* rechts Shiften) entsteht bei leisen Signalen ein sehr störendes pumpartiges Rauschen. Der Noise Shaper verschiebt dieses Rauschen in einen höheren Frequenzbereich, so dass unser Ohr das Rauschen als weniger störend wahrnimmt.

    Programmcode

    php:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    10:
    11:
    12:
    13:
    14:
    15:
    16:
    17:
    18:
    19:
    20:
    21:
    22:
    23:
    24:
    25:
    
    //*************************************************************************
    // Test noise-sharping 12Bit 44.1KHz 
    //*************************************************************************
    ISR(TCC0_OVF_vect)
    {
        
        // Noise Shaper function
        int16_t sample_x ADCA_CH0RES;
        int16_t sample_16 sample_x 12;
        sample_16 += quant_error;
        if (sample_16 < -32768){sample_16 32768;}
        else if (sample_16 32767){sample_16 32767;}
        int8_t sample_8 sample_16 >> 8;
        quant_error sample_16 - ((int16_t)(sample_8) << 8);
        
        /* convert 12Bit into 8Bit
        uint16_t sample_16 = ADCA_CH0RES;
        uint8_t sample_8 = sample_16 >> 4;
        */
    
        // DAC out
        DACA.CH0DATAH sample_8;
        DACB.CH0DATAH sample_8;
    
    }



    Um das zu demonstrieren habe ich ein paar Klangbeispiele aufgenommen. Jeweils ohne und mit der Noise Shaper Funktion. Am deutlichsten hört man es bei Sound 3+4. Ohne Noise Shaper versinkt das Piano quasi im 8Bit Rauschen.

    Sound 1: https://drive.google.com/file/d/0BxbpDqw...iew?usp=sharing
    Sound 2: https://drive.google.com/file/d/0BxbpDqw...iew?usp=sharing
    Sound 3: https://drive.google.com/file/d/0BxbpDqw...iew?usp=sharing
    Sound 4: https://drive.google.com/file/d/0BxbpDqw...iew?usp=sharing
    Sound 5: https://drive.google.com/file/d/0BxbpDqw...iew?usp=sharing
    Sound 6: https://drive.google.com/file/d/0BxbpDqw...iew?usp=sharing

    Gruß Rolf 

  10. On 17.1.2016 at 5:45 PM, nlate said:

    Hallo Rolf

    Wenn du R89 mit jeweils 10k auf die Multiplexereingänge X1 & X2 verschiebst, fällt nur eine geringe Spannung über dem Multiplexer ab, da der Multiplexerausgang bzw. der(-) Eingang von IC15b nahezu auf 0V. Dies kommt der Signalqualität deiner Einganssingnale zu Gute.

    Gruss

    Jo

    Hi Jo

    Danke für deinen Tip. Werde es mal ausprobieren.

    Gruß Rolf

  11. Hallo zusammen..

    Damit das Sampeln von Audio-Signalen noch etwas störungsfreier funktioniert, habe ich den ADC-Eingang im Xmega Prozessor als Differenzial-Eingang beschaltet. Der ADC im Xmega Prozessor sampelt mit 12Bit und einer Abtastrate von 44.1KHz. Intern wird der 12Bit Wert dann auf 8Bit herunter gerechnet und ins 1MByte große Sample-Ram geschrieben. Der Operationsverstärker IC 15c+15d erzeugen aus dem Audio-Signal ein Differenzsignal für den ADC-Eingang.

    ADC im Xmega128A1: http://www.atmel.com/images/atmel-8032-u...ote_avr1300.pdf



    Bild: ADC mit Differenzial-Eingang
    Audio_IN_1.2.JPG


    Initialisierung des ADC im Xmega128A1 Prozessor

    php:
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    9:
    
    // intit ADCA 12Bit (Sample Input)
    // 8Bit / differencial mode / ext.VRef 2.5V PortA0 / Prescaler 64 / positive Input PortA3 / negative Input PortA1
        ADCA.CTRLB ADC_RESOLUTION_12BIT_gc ADC_FREERUN_bm;
        ADCA.REFCTRL ADC_REFSEL_AREFA_gc;        
        ADCA.PRESCALER ADC_PRESCALER_DIV64_gc;
        ADCA.CH0.CTRL ADC_CH_INPUTMODE_DIFF_gc;
        ADCA.CH0.MUXCTRL |= ADC_CH_MUXPOS_PIN3_gc ADC_CH_MUXNEG_PIN1_gc;
        ADCA.INTFLAGS 0x00;
        ADCA.CTRLA ADC_ENABLE_bm;        // ADC enabled



    Gruß Rolf 

  12. Hallöchen..

    Ich hab den externen Audio-Eingang im DE-GENERATOR etwas abgeändert. Man hat jetzt die Möglichkeit das Stereosignal am Eingang als Summensignal zu sampeln. Ferner ist das Eingangssignal auch auf die Filtereingänge geschalten. Für die MiniScope-Funktion wird der Stereoausgang auf den gleichen ADC-Eingang geschaltet. Das spart Bauteile und Platz auf der Platine.

    Stereo Eingang im DE-Generator
    Audio_Input.JPG


    Gruß Rolf 

  13. Hallöchen..

    So ein Digi Scope ist doch eine feine Sache wie ich finde. Es hilft doch sehr bei der Fehlersuche ebueb 

    Die Tage hatte ich ein Problem mit einem Encoder. Bei der Dateneingabe hatte ich öffters Zahlensprünge. Ich dachte zuerst an ein Problem in meiner Software, weil diese immer wieder weiterentwickelt und geändert wird. Aber Test brachten mich nicht weiter. Die Encoder und Tasten werden im DE-GENERATOR alle 500msec abgefragt. Das ist auch für eine schnelle Umdrehung der Encoder schnell genug. Das Problem musste also an der Hardware liegen. Hab dann mein Digi Scope "angeschmissen" und mal an die Kontakte des Encoders angeschlossen. Und siehe da.. viele nette Impulsefolgen und noch viel mehr. Das auf dem Bildschirm sah so gar nicht nach einem Gray-Code von einem Encoder aus. Die beste Software kann dieses Prellen nicht beseitigen.

    Ich hab dann einen neuen Encoder eingelötet und alles funktioniert jetzt fehlerfrei.

    Signalverlauf am alten Encoder. Man sieht deutlich wie die Signalflanken prellen
    Encoder_Alt.jpg

    Signalverlauf am neuen Encoder ohne prellen
    Encoder_Neu.jpg

    Gruß Rolf 

  14. Hallo zusammen..

    Ich hoffe Ihr seit alle gut ins neue Jahr gerutscht und habt keinen Kater bekommen. Wenn ich an die Bowle denke... man die war so lecker holy-willi 

    Mein Kollege Andre war in den letzten Tagen auch sehr fleißig und hat die ersten Platinen und Gehäuse Entwürfe gezeichnet. Wegen der besseren Abstimmung untereinander,
    habe ich beschlossen, die ganzen Schaltpläne von Eagle nach Target 3001 zu importieren. Andre entwirft mit Target 3001 dann die Platinen für den DE:GENERATOR.
    Target 3001 gibts auch als Freeware von distrelec mit der Einschränkung auf maximal 700 Pins. Hier der Link: http://www.distrelec.de/de/cad-freeware/...ice_cadfreeware


    Gehäuse Entwurf DE:GENERATOR
    DE-GENERATOR%2BBETA%2BGUI3.bmp
    Mit der Platzierung der LFO-LED's über dem Display bin ich noch nicht ganz einverstanden. Ich finde die Position rechts neben dem 4.Encoder besser.
    Auch der Namen "Transwave" für eine gemeinsame Produktlinie muss noch diskutiert werden.


    PCB Layout DE:GENERATOR
    Degenerator-Layout3%2B%25281%2529.bmp

    Gruß Rolf 

  15. Ho ho ho.. Ich wünsch euch allen ein schönes und gemütliches Weihnachtsfest.

    Ich habe testweise mal einen Encoder mit den blauen LED's bestückt. Wenn jetzt noch die Löcher in der Frontplatte etwas größer gemacht werden, so das Knopf das Loch nur knapp abdeckt, sollte etwas blaues Licht an den Seiten austreten. Hier mal zwei Pics..

    LED Beleuchtung für Encoder
    IMG_20151223_214004.jpg
    IMG_20151223_214107.jpg

    Gruß Rolf 

  16. Hallöchen..

    Die Zeit rast dahin und man hat das Gefühl, nicht mehr viel Zeit zu haben, für die Dinge die man noch machen will. So gehts mir im Moment.

    Am DE:GENERATOR gibt es einige Änderungen. Um die Bedienung zu vereinfachen sind jetzt 8 Taster vorhanden. Zusätzlich gibts auf dem Front Panel zwei Potis. Diese können für Modulationszwecke frei programmiert werden. Damit das Ganze noch etwas bunter wird, gibts für die Kontrolle der LFO's jetzt drei LED-Lampen. Geplant ist noch die Beleuchtung der DATA Encoder mit blauen LED's.

    DE:GENERATOR
    IMG_20151222_091948.jpg

    Front Panel
    Pannel.jpg

    Lieben Gruß und schöne Weihnachten. Rolf 

  17. Hoh hoh hoh.. Bald ist Weihnachten und die Leute kaufen wie verrückt. Ich auch großes Grinsen 

    Zum DE:GENERATOR:
    Hab die 1.Menü Seite jetzt komplett überarbeitet. Zu jedem Sound Programm werden jetzt die Datei Größe und Wellenform (Sample-File oder Wellenform) angezeigt.
    Das laden eines Sound Programms funktioniert jetzt doppelt so schnell wie vorher. 

    Damit man beim Suchen eines Sounds in anderen Sound Bänken die Orientierung nicht verliert, wird das aktuelle (geladene) Sound Programm grau markiert und unterm MiniScope nochmal angezeigt.

    Bild: Menüseite 'Sound Program'
    Picture%2B5.jpg

    Gruß Rolf 
     

  18. Hallöchen..

    Auf Heise.de habe ich einen sehr interessanten Artikel gelesen. Thema des Artikel ist 'Synthesizer im Eigenbau'. Darin werden vier bekannte DIY Synthesizer vorgestellt wzB der Shruthi, MeeBlip, Rockit und Nebulophone.

    DIY Synthesizer
    DIY_SYNTH.jpg

    Link zum Artikel: http://www.heise.de/make/artikel/Synthes...au-3036913.html

    Link zu den Klangbeispielen: http://www.heise.de/make/inhalt/2013/01/086

    Ich denke ich werde über die Weihnachtstage mal meinen Raspberry Pi2 anwerfen und ein paar Musikalische Dinge ausprobieren und darüber berichten. Bis dahin viel Spaß beim lesen.

    Lieben Grüße aus Wuppertal. Rolf 
     

  19. Hallöchen..

    Falls ihr euch fragt, was ich gerade mache...

    Ich verbessere gerade das Datei System auf der 4GB SD Karte meines Synthesizers. Dazu gehört das abspeichern oder löschen von Samples und Presets.
    Das hört sich jetzt nicht gerade kompliziert an, aber die Arbeit steckt mal wieder in den Details. Die Abbildung zeigt die Ordner Stuktur auf der SD Karte.

    Die Ordnerstruktur auf der SD Karte im DE:GENERATOR
    Ordner.jpg


    Auf der SD Karte gibt es drei Ordner mit der Bezeichnung PRESET, SAMPLE und SYSTEM. Im Ordner 'Preset' sind die gesamten Sound Parameter, UserWave-Table und ggf das Sample-File für den Sound abgespeichert. Der Ordner 'SAMPLE' beinhaltet die gesamte Sample Library. Hier kann man Samples laden, speichern oder löschen, ohne eine Beeinflussung auf die Preset Sounds. Dadurch kann man z.B. die komplette Sample Library auf der SD Karte ändern oder austauschen, ohne Gefahr zu gehen, dass sich die Preset Sounds verändern. Falls ein Preset ein Sample-File besitzt, wird dieses immer im Preset Ordner mit abgespeichert.
    Im Ordner 'SYSTEM' befinden sich System relevante Daten wzB Bilder, Sequenzer-Daten, USERWAVE-Table und die aktuelle Midi CC Tabelle. Die USERWAVE-Table besteht aus 128 festen Wellenformen mit 256 Byte Größe und kann beliebig ausgetauscht werden. Damit stehen dem Benutzer unendlich viele Möglichkeiten der Soundgestaltung zur Verfügung. 

     

    Werde die Tage mal ein Video drehen, um die Datei Funktionen im DE:GENERATOR zu demonstrieren. Wer mehr über die Implimentierung einer SD Karte für ein eigenes Hardware Projekt wissen möchte, sollte mal hier vorbeischauen:https://www.mikrocontroller.net/topic/105869?page=1 

    Kleiner Tip: Jede Menge kostenlose und gute Sample Sounds gibts auf Freesound.org

    Gruß Rolf 

     

    Nachtrag: Hab Gestern mal eine 16GB SD Karte ausprobiert und keine Probleme feststellen können.

    Gruß Rolf

×
×
  • Create New...