cc2.tv
 
  Forenübersicht
  Anmelden
  Registrierung
  Mitgliederliste
  Teammitglieder
  Hilfe
  Suche
  FAQ
  Forenregeln
  Wie poste ich richtig?
  Impressum

cc2.tv-Fan-Club » CC2tv +CC2audio » ATM18/AVR, Arduino + Sonstiges » AVR Synthesizer-Projekt » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (31): « erste ... « vorherige 27 28 29 30 [31] Antwort erstellen
Zum Ende der Seite springen   AVR Synthesizer-Projekt
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo..

Andre hat ein kleines Video mit dem DE-GENERATOR gemacht und stellt ein paar interessante Klänge vor. Viel Spaß beim anhören ebueb


Youtube: https://www.youtube.com/watch?v=gNiUXgoGdoU&feature=youtu.be

Gruß Rolf
10.10.2017 21:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Bender
Mitglied

images/avatars/avatar-816.png

Dabei seit: 17.11.2012
Beiträge: 51
Wohnort: HEF

Bender ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Krasse Sache! ebueb
13.10.2017 16:49 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Danke. Wir sind jetzt in der Endphase. Zur Zeit wird ein neues Panelboard mit einem besseren TFT-Display entwickelt und ein Gehäuse gebaut. Das Neue TFT Display ist kontrasstärker und hat eine gleichmäßig beleuchtete Hintergrundfläche.

Altes TFT Display im DE-GENERATOR


Neues TFT Display im DE-GENERATOR


Gruß Rolf

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von rolfdegen: 15.10.2017 00:10.

14.10.2017 23:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
perlian perlian ist männlich
Mitglied

images/avatars/avatar-631.gif

Dabei seit: 04.05.2010
Beiträge: 875
Wohnort: Osnabrück

perlian ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Zitat:
Original von Bender
Krasse Sache! ebueb


Ja dem kann ich mich nur Anschliessen.
Fetter Sound !!
Reicht zur Ansteuerung ein normales Midi Keyboard ?
Ich hab eins allerdings mit USB Anschluss
Ist das mit dem de-generator kompatibel ?
Und habt ihr schon einen ungefähren VK Preis im Auge ?
15.10.2017 17:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Danke smile

Am DE-GENERATOR kann man ein normales Midi Keyboard über ein Midi-Kabel anschließen. Eine USB Schnittstelle besitzt er leider nicht. Der Verkaufspreis steht noch nicht fest.

Gruß Rolf

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von rolfdegen: 16.10.2017 20:22.

16.10.2017 20:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Bootloader im DE-GENERATOR Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo liebe Mitleser..

Mein guter Freund Thomas Margolf aus Holland hat mir heute einen Bootloader für den DE-GENERATOR
geschickt. Damit ist es jetzt möglich, die Firmware für den DE-GENERATOR über die SD Karte zu
flashen. Allerdings gibts noch Probleme mit älteren 4GB Karten von SandDisk. Mal schaun woran es
noch liegt.. Hab mal ein kleines Video gedreht ums zu zeigen. Auf der SD Karte befindet sich die Firmware.
Für's flashen muss beim Einschalten die "LOAD" Taste gedrückt und gehalten werden. Ist das Firmware
File vorhanden und ok, dann fangen die Led's an zu blinken. War der Flashvorgang erfolgreich blinkt kurz
die 1.LFO LED. Sollte ein Fehler aufgetreten sein, wird das mit dem Aufleuchten der 3.LFO Led signalisiert.
Eine Textausgabe über das TFT-Display passte leider nicht mehr in den 8 KByte großen Bootsektor.

Youtube: https://youtu.be/X90Xk2eUY2o

Gruß Rolf

Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von rolfdegen: 22.10.2017 13:34.

22.10.2017 13:11 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallöchen..

Hab mal wieder etwas Geld von der Bank abgehoben und in meinen Arbeitsplatz investiert. Ein schöner großer 32" Monitor von BENQ (BENQ PD3200Q) mit 2560 x 1440 Pixel Auflösung und Höhenverstellung war auf der Wunschliste. Was mir bei der Auswahl eines Monitors besonders wichtig war, ist ein Augenschonendes Arbeiten. Der BENQ PD3200Q hat für diesen Zweck einige Technologien integriert. Die Flicker-free Technik verhindert das Flimmern des Displays. Das ermöglicht stundenlanges Arbeiten ohne müde oder brennende Augen. Zusätzlich hat der Monotor eine Low-Blue-Light Funktion. Diese Technologie filtert schädliches blaues Licht heraus um die Irritationen der Augen zu verringern.

BENQ PD3200Q


Link: http://www.benq.de/product/monitor/pd3200q/

Gruß Rolf

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rolfdegen: 29.10.2017 20:13.

29.10.2017 20:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Floppy in concert Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo..

Hier zur Abwechslung mal was lustiges. Hier macht kein Oszillator die Töne sondern eine Reihe von alten FloppyDisk Laufwerken, Festplatten und Scannern. Echt ideenreich wie ich finde ebueb

The Floppotron in concert: Sweet Dreams

Youtube: https://www.youtube.com/watch?v=oGfkPCZYfFw

Gruß Rolf

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rolfdegen: 01.11.2017 15:45.

01.11.2017 15:39 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Einen kleiner Ausschnitt an Dingen, die ich in den vergangenen Wochen am DE-GENERATOR programmiert habe:

Build 3.37 05.08.2017
- Externen Midi-Clock implementiert

Build 3.38 30.08.2017
- Sequencer Funktion integriert

Build 3.39 09.09.2017
- Osc Mode im Osc-Mneü jetzt über Enc3 einstellbar
- Fehler bei der Berrechnung und Anzeige für freies Sample Ram beseitigt
- Share Mode (SHA) für Osc2 implementiert. Ist die Funktion im Osc2 Mneü eingeschaltet, dann teilt sich Osc2 den gleichen Sample mit Osc1. Interessant für Phasing oder andere Effekte
- CPU Last wird nur auf der System Page angezeigt
- Scope Funktion ist zwecks CPU Entlastung jetzt abschaltbar
- Interpolations Routine in den Oszillatoren wurde optimiert (schneller)

Build 3.40 24.09.2017
- Osc Wave- und Sample Mode optimiert
- CPU Last Anzeige entfernt
- Temperaturanzeige entfernt
- Scope Page entfernt

Build 3.41 29.09.2017
- Beim Laden eines neuen Patchs wird der Transpose Wert für die Noten im Sequencer jetzt auf null gesetzt.
- Die Sample Recording Function ist bei Auswahl von Page 12 jetzt immer ei...aden eines neuen Patch wurde die Wellenform im CPU Ram nicht aktuallisiert.
- Einige Fehler beseitigt

Build 3.42 03.10.2017
- Sequencerstart jetzt über die Funktion "PLAY" einstellbar. Im "KEY" Mode startet und stopt der Sequencer mit der "SEQ" Taste am DE-GENERATOR. Im "Note" Mode startet der Sequencer mit einer Keyboard Taste und stopt beim loslassen.

Build 3.50 22.10.2017
- Bootloader integriert

Build 3.52 31.10.2012
Sampel-Page:
- Rec-Led Status auf der Sample-Page integriert. 25% Led-Licht: Aufnahme wartet auf Threshold Level oder Midi_Note Event. 100% Led-Licht bei aktivierter Aufnahme
- Im Sample Rec-Mode "Note" ist der Aufnahmestart oder Ende über Midi-Note möglich.

Sequencer Page:
- Im Sequencer PLay_Mode "NOTE" startet und stop der Sequencer über eine Midi_Not
- Transponieren funktioniert jetzt in allen beiden Sequencer Play_Modes
- Bei der Auswahl eines Steps werden jetzt alle Step-Paramter aktualisiert
- Die Step-Auswahl ist jetzt über Encoder 3 möglich



Sequencer Pages



Der Rote Punkt markiert den laufenden Step. H den Haltewert für die Note. Der dunkelgraue
Balken die Lautstärke der Note

Gruß Rolf

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von rolfdegen: 01.11.2017 16:18.

01.11.2017 15:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
highunix highunix ist männlich
Mitglied

images/avatars/avatar-798.jpg

Dabei seit: 16.09.2011
Beiträge: 667

highunix ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Floppy in concert

Das ist schon abgefahren. ebueb
01.11.2017 19:12 Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallöchen..

Wärend ich auf meine Lieblings-Pizza warte (ist von Dr.Otker und brauch im Backofen immer 10min) schreib ich mal schnell diesen Beitrag ebueb

Eigentlich ist es nur ein Hinweis auf mein neues Youtube Video. Hab mal neue Sounds und Sequencen aufgenommen. Sind einige verrückte Sachen dabei. Wünsch euch viel Spaß beim anhören.

Long Expression


Youtube: https://youtu.be/P-mxpUMQ2e8

Gruß Rolf

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von rolfdegen: 04.11.2017 22:48.

04.11.2017 22:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallöchen..

Habe schon wieder etwas Geld ausgegeben Augenzwinkern

Dieses mal für eine schicke Tastatur mit beleuchteten Tasten. 75,- Euro ist schon ein Batzen Geld,
aber man gönnt sich ja sonst nix.

In Bezug auf die EINFG und ENTF Taste ist ein kleines Umgewöhnen notwendig. Aber sonst echt geil.. ebueb

Logitech K740 ILLUMINATED


Link: https://www.logitech.com/de-de/product/i...d-keyboard-k740

Gruß Rolf

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rolfdegen: 17.11.2017 17:20.

17.11.2017 17:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Radiomicky Radiomicky ist männlich
Mitglied

images/avatars/avatar-943.jpg

Dabei seit: 25.07.2007
Beiträge: 1.798
Wohnort: Göttingen

Radiomicky ist online
Beitrag: beantworten | zitieren | editieren | melden       | Top

Jou, diese Tastatur leistet seit Jahren bei mir gute Dienste! ebueb
18.11.2017 08:36 Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Wir sind noch fleißig am arbeiten. Hier einige interessante Soundtracks vom DE-GENERATOR. Stammen alle von Andre.

Link: https://soundcloud.com/rolf-degen/de-generator

Oooh je geschockt Da hab ich wohl den Mischpulteingang etwas übersteuert.

Gruß Rolf
02.12.2017 21:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Ach.. hätt ich doch mehr Geld. Dann würde ich mir diesen Synthesizer kaufen.


Modal Electronics 001


Der Modal 001 ist ein 2 stimmiger, bi-timbraler Synthesizer mit analoger / digitaler “Hybrid” Klang-Architektur. Pro Stimme gibt es 2 Oszillatoren und 2 Sub-Oszillatoren, mischbar im Mixer mit (Over)Drive Funktion. Wie im DE-GENERATOR sind die Oszillatoren NCOs (Numerically Controlled Oscillators) mit hoher Auflösung und hoher Stabilität. Der zur Auswahl stehende Wellenform-Satz pro Oszillator umfasst 56 Wellenformen ( im DE-GENERATOR sind es 128 + 20 Shapes ), die natürlich per Steuerspannung zu durchlaufen sind. Das VCF ist ein 24dB/Okt 4-Pol Transistor Filter mit Morphing-Möglichkeit (“Slope Control”) hin zur BandPass- und 1dB/Okt Filter Charakteristik. Zwei LFOs, mit MIDI-Sync-Möglichkeit. Zwei ADSR Hüllkurven für VCF und VCA. Eine Modulations-Matrix mit 6 simultane Modulationsquellen und 8 bzw. 9 Modulationsziele. Step-Sequenzer: 32 Steps mit 12 Spuren bzw. Paramater-Modulationen gleichzeitig. MIDI-Synchronisation sowie Live-Transponierung über das Keyboard möglich. Programmspeicher mit Platz für 100 x 100 Sounds. 3-Oktaven FATAR Tastatur mit Velocity und Aftertouch. Ein farbiges 4,3-Zoll TFT Display für die Programmierung. 4 CV Inputs und 4 CV Outputs und zwei Audio-Eingänge u.v.m. Preis um die 1850,- €. Wow..

Link: http://www.modalelectronics.com/modal-001/


Modal Electronics Waveforms


Klangbeispiele: https://www.youtube.com/watch?v=EQjL8VeugA0

Gruß Rolf
03.12.2017 10:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Mein Weihnachtsgeschenk an mich:


Korg Monologue silver



Somit besteht zukünftig meine Synthesizer Sammlung aus einem Shruthi, einem DE-GENERATOR und einem Korg Monologue.

Hier noch ein paar Soundtracks vom DE-GENERATOR. Künstler an den Drehknöpfen war Andre von TubeOhm Augenzwinkern

ZU den Soundtracks: https://soundcloud.com/rolf-degen/de-generator-13

Gruß Rolf

Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von rolfdegen: 15.12.2017 16:53.

15.12.2017 16:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Mein Weihnachtsgeschenk ist Gestern angekommen. Der KORG MONOLOGUE in silber. Hab ihn direkt ausprobiert. Hier mein Ergebnis:

DE-GENERATOR & KORG MONOLOGUE IN CONCERT


Youtube: https://youtu.be/xYaBt2WhCow

Gruß Rolf
20.12.2017 21:34 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

KORG MONOLOGUE inside

Hab mal meinen KORG MONOLOGUE aufgeschraubt um zu schaun, was unter der Haube steckt smile
Insgesammt arbeiten drei ARM MCU's auf den Platinen. Eine ist für die Keyboardabfrage zuständig.
Die Zweite MCU für die beiden Oszillatoren und Filterparameter und diverse andere Sachen.
Die Dritte MCU sitzt auf dem Panelboard und ist für die Abfrage der Potis und Schalter zuständig,
sowie für die Ansteuerung des kleinen TFT Displays.

PS: Wenn ich mir das überlege, dann ist es schon eine Wunder, was die ATMEL MCU mit ihren 32MHz im DEGENERATOR alles leistet ebueb

Mainboard


Link: https://scontent-frt3-1.xx.fbcdn.net/v/t...455&oe=5ACA211D

Panelboard


Link: https://scontent-frt3-1.xx.fbcdn.net/v/t...f60&oe=5ABEEE6A

Gruß Rolf

Dieser Beitrag wurde 6 mal editiert, zum letzten Mal von rolfdegen: 25.12.2017 15:20.

25.12.2017 14:58 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

KORG MONOLOGUE

Aufbau

Großes Bild: https://scontent-frt3-1.xx.fbcdn.net/v/t...7cd&oe=5AC7D7BF

Bedienung

Großes Bild: https://scontent-frt3-1.xx.fbcdn.net/v/t...637&oe=5AF87191

Rückseite

Großes Bild: https://scontent-frt3-1.xx.fbcdn.net/v/t...301&oe=5AF94698
26.12.2017 07:27 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo zusammen..

Hab ein wenig an der Soundengine im DE-GENERATOR gewerkelt und einen VOWEL Sound implementiert.

VOWEL Sound parameter auf der Oszillator Page


Sound: https://soundcloud.com/rolf-degen/vowel-...om-de-generator


Ich habe den Shruthi code für die Soundengine im DE-GENERATOR etwas angepasst
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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
//*************************************************************************
// OscRender: VOWEL
//*************************************************************************
void OscRender_Vowel(uint8_t osc_nr)
{
    uint8_t block_size 40;
    uint8_t parameter;
    uint8_t *buffer;
    uint8_t ix 0;
    
    if (osc_nr == 0)
    {
        parameter Osc.prm[0];
        if (Voice.buffer_nr == 0)
        {
            buffer Voice.Buffer2a;
        }
        else {buffer Voice.Buffer1a;}
    }
    else
    {
        parameter Osc.prm[1];
        if (Voice.buffer_nr == 0)
        {
            buffer Voice.Buffer2b;
        }
        else {buffer Voice.Buffer1b;}
    }
    
    Osc.vw_update = (Osc.vw_update 1) & 3;
    if (!Osc.vw_update) {
        uint8_t offset_1 U8ShiftRight4(parameter);
        offset_1 U8U8Mul(offset_17);
        uint8_t offset_2 offset_1 7;
        uint8_t balance parameter 15;
    
    // Interpolate formant frequencies.
    for (uint8_t i 03; ++i) {
        Osc.vw_formant_increment[i] = U8U4MixU12(
        pgm_read_byte (&(wav_res_vowel_data[offset_1 i])),
        pgm_read_byte (&(wav_res_vowel_data[offset_2 i])),balance);
        Osc.vw_formant_increment[i] <<= 3;
    }
    
    // Interpolate formant amplitudes.
    for (uint8_t i 04; ++i) {
        uint8_t amplitude_a pgm_read_byte (&(wav_res_vowel_data[offset_1 i]));
        uint8_t amplitude_b pgm_read_byte (&(wav_res_vowel_data[offset_2 i]));
        Osc.vw_formant_amplitude[i] = U8U4MixU8(amplitude_a,amplitude_bbalance);
    }
    }    
  
    // sample loop --------------------------------------------------------
    do
    {
        Osc.phase[osc_nr] += Osc.phase_increment[osc_nr];
        
        uint16_t phase_integral Osc.phase[osc_nr] >> 8;
        uint16_t phase_increment_integral Osc.phase_increment[osc_nr] >> 8;
        int8_t result 0;
        
        for (uint8_t i 03; ++i) {
            Osc.vw_formant_phase[i] += Osc.vw_formant_increment[i];
            result += pgm_read_byte (&((== wav_res_formant_square wav_res_formant_sine)
            [(((Osc.vw_formant_phase[i] >> 8) & 0xf0) | Osc.vw_formant_amplitude[i])]));
        }
        result S8U8MulShift8(result, ~ (phase_integral >> 8));
        phase_integral += phase_increment_integral;
        int16_t phase_noise = (int8_t)(Noise.data_rng_state << 8) * 1;// (int8_t)Osc.noise_modulation;
        if (phase_integral phase_noise phase_increment_integral) {
            Osc.vw_formant_phase[0] = 0;
            Osc.vw_formant_phase[1] = 0;
            Osc.vw_formant_phase[2] = 0;
        }
        uint8_t x S16ClipS8(result) + 128;
        
        // write sample in sound-buffer
        buffer[ix++] = x;
        buffer[ix++] = x;
        block_size--;        
        
    } while (--block_size);

}


Gruß Rolf

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rolfdegen: 28.12.2017 11:52.

28.12.2017 11:27 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Mutable Shruthi & KORG Monologue & DE-GENERATOR in concert


Link: https://soundcloud.com/rolf-degen/shruth...ogue-in-concert

Viel Spaß beim anhören. Gruß Rolf
28.12.2017 13:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo und guten Morgen..

Ich habe ein kleines Sound Problem mit der "Quad Saw" im DE-GENERATOR. Im Vergleich mit dem
Shruthi Synthesizer klingt der Sound im DE-GENERATOR sehr statisch. Ich habe den Quellcode
aus dem Shruthi für den DE-GENERATOR etwas angepasst. Der Parameter-Wert steht auf beiden
Synthesizern auf 0. Ich habe ein kleines Video gedreht um es zu zeigen und zu hören.
Damit die QuadSaw funktioniert muss der "phase_spread" immer >0 sein.


Youtube: https://youtu.be/G7RaY6ZXLOM

Shruthi Code
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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
.
// ------- Quad saw or pwm (mit aliasing) ------------------------------------
void Oscillator::RenderQuad(uint8_tbuffer) {
  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 03; ++i) {
    phase_increment += phase_spread;
    increments[i] = phase_increment;
  }
  
  if (shape_ == WAVEFORM_QUAD_SAW_PAD) {
    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
  }
  else { //WAVEFORM_QUAD_PWM
    uint16_t pwm_phase static_cast<uint16_t>(127 parameter_) << 8;
    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 pwm_phase 63;
      value += data_.qs.phase[0] < pwm_phase 63;
      value += data_.qs.phase[1] < pwm_phase 63;
      value += data_.qs.phase[2] < pwm_phase 63;
      *buffer++ = value;
    END_SAMPLE_LOOP
  }
}



DE-GENERATOR Code
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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
.
//*************************************************************************
// OscRender: Quad saw or pwm (mit aliasing)
//*************************************************************************
void OscRender_PAD(uint8_t osc_nr)
{
    uint8_t block_size 40;
    uint8_t shape Osc.shape[osc_nr];
    uint8_t parameter Osc.prm[osc_nr];
    uint8_t *buffer;    // pointer name
    uint8_t i 0;
        
    if (osc_nr == 0)
    {
        if (Voice.buffer_nr == 0)
        {
            buffer Voice.Buffer2a;
        }
        else {buffer Voice.Buffer1a;}
    }
    else
    {
        if (Voice.buffer_nr == 0)
        {
            buffer Voice.Buffer2b;
        }
        else {buffer Voice.Buffer1b;}
    }
    
    uint16_t phase_increment_ = (Osc.phase_increment[osc_nr] >> 8);
    uint16_t phase_spread = (uint32_t)(phase_increment_ parameter) >> 13;
    ++phase_spread;
    
    uint16_t increments[3];
    for (uint8_t i 03; ++i) {
        phase_increment_ += phase_spread;
        increments[i] = phase_increment_;
    }

    //BEGIN_SAMPLE_LOOP ---------------------------------------------------
    if (shape == OSC_SAW_PAD) {
        do
        {
            // update Phase
            Osc.phase[osc_nr] += Osc.phase_increment[osc_nr];
            
            if (SREG 0b00000001// test overflow
            {
                Osc.phase[osc_nr] = 0;
            }
                
            uint16_t phase_intergral Osc.phase[osc_nr] >> 8;
            uint8_t value = (phase_intergral >> 10);
            
            // Osc1
            if (osc_nr == 0)
            {
                Osc1.data_qs_phase[0] += increments[0];
                Osc1.data_qs_phase[1] += increments[1];
                Osc1.data_qs_phase[2] += increments[2];
                value += (Osc1.data_qs_phase[0] >> 10);
                value += (Osc1.data_qs_phase[1] >> 10);
                value += (Osc1.data_qs_phase[2] >> 10);
            }
            else // Osc2
            {
                Osc2.data_qs_phase[0] += increments[0];
                Osc2.data_qs_phase[1] += increments[1];
                Osc2.data_qs_phase[2] += increments[2];
                value += (Osc2.data_qs_phase[0] >> 10);
                value += (Osc2.data_qs_phase[1] >> 10);
                value += (Osc2.data_qs_phase[2] >> 10);
            }
            
            // write sample in sound-buffer
            buffer[i++] = ~value;
            
        } while (--block_size);
    }
}


Vielleicht hat jemand eine Idee, wie ich das im DE-GENERATOR verbessern kann.

Gruß Rolf

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rolfdegen: 30.12.2017 10:20.

30.12.2017 09:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hi Cyclotron

Ich hab ein wenig experimentiert und einen kleinen Zufallswert zu dem phase_spread addiert. Klingt schon besser aber halt noch anders wie im Shruthi.

Mein Code
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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
.
//*************************************************************************
// OscRender: Quad saw or pwm (mit aliasing)
//*************************************************************************
void OscRender_PAD(uint8_t osc_nr)
{
    uint8_t block_size 40;
    uint8_t shape Osc.shape[osc_nr];
    uint8_t parameter Osc.prm[osc_nr];
    uint8_t *buffer;    // pointer name
    uint8_t i 0;
       
    if (osc_nr == 0)
    {
        if (Voice.buffer_nr == 0)
        {
            buffer Voice.Buffer2a;
        }
        else {buffer Voice.Buffer1a;}
    }
    else
    {
        if (Voice.buffer_nr == 0)
        {
            buffer Voice.Buffer2b;
        }
        else {buffer Voice.Buffer1b;}
    }
   
    uint16_t phase_increment_ = (Osc.phase_increment[osc_nr] >> 8);
    uint16_t phase_spread = (uint32_t)(phase_increment_ parameter) >> 13;
   
    // Test phase_spread with/without random value
    if (Osc.Test_flag == 0)
    {
        ++phase_spread;
    }
    else {phase_spread += (Noise.sample >> 7);}
   
   
    uint16_t increments[3];
    for (uint8_t i 03; ++i) {
        phase_increment_ += phase_spread;
        increments[i] = phase_increment_;
    }

    //BEGIN_SAMPLE_LOOP ---------------------------------------------------
    if (shape == OSC_SAW_PAD) {
        do
        {
            // update Phase
            Osc.phase[osc_nr] += Osc.phase_increment[osc_nr];
           
            if (SREG 0b00000001// test overflow
            {
                Osc.phase[osc_nr] = 0;
            }
               
            uint16_t phase_intergral Osc.phase[osc_nr] >> 8;
            uint8_t value = (phase_intergral >> 10);
           
            // Osc1
            if (osc_nr == 0)
            {
                Osc1.data_qs_phase[0] += increments[0];
                Osc1.data_qs_phase[1] += increments[1];
                Osc1.data_qs_phase[2] += increments[2];
                value += (Osc1.data_qs_phase[0] >> 10);
                value += (Osc1.data_qs_phase[1] >> 10);
                value += (Osc1.data_qs_phase[2] >> 10);
            }
            else // Osc2
            {
                Osc2.data_qs_phase[0] += increments[0];
                Osc2.data_qs_phase[1] += increments[1];
                Osc2.data_qs_phase[2] += increments[2];
                value += (Osc2.data_qs_phase[0] >> 10);
                value += (Osc2.data_qs_phase[1] >> 10);
                value += (Osc2.data_qs_phase[2] >> 10);
            }
           
            // write sample in sound-buffer
            buffer[i++] = ~value;
           
        } while (--block_size);
    }
}


Im Video schalte ich zwischen einer Addition mit random Wert und ohne um.


Youtube: https://www.youtube.com/watch?v=klz7gUTZ9xs

Gruß Rolf

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von rolfdegen: 30.12.2017 17:13.

30.12.2017 17:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
amsel77
Mitglied

Dabei seit: 10.10.2007
Beiträge: 9

amsel77 ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Zitat:

PS: Wenn ich mir das überlege, dann ist es schon eine Wunder, was die ATMEL MCU mit ihren 32MHz im DEGENERATOR alles leistet


Halbwegs ordentlich programmiert sind die bewährten 8Bitter halt nach wie vor für sehr vieles sehr viel überschaubarer als 32er Boliden einsetzbar. Danke für dieses komplexe Vorzeigeprojekt, welches dies auf beeindruckende Art und Weise beweist!
01.01.2018 23:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo amsel77..

Ich wäre schon froh über etwas mehr Prozessor Power ebueb

Es wird irgendwann ein Update des Prozessorboards geben das mit einem ARM Bestückt ist.

Vorerst bleibts beim ATMEL Chip mit 32 MHz.


Gruß Rolf

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von rolfdegen: 02.01.2018 10:14.

02.01.2018 10:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

DE-GENERATOR Build 3.61
- Scope Darstellung: Auflösung wurde von 150 auf 64 Pixel reduziert. Dadurch wird die Systemlast verringert. Zeitbasis passt sich jetzt automatisch an Audiofrequenz an.
- Fehler in Ringmodulation auf der Oszillator Page beseitigt
- Vowel Sound implementiert (Shape: VOW)
- SoundBuffer Größe von 40 auf 128 erhöt. Menüdarstellung und Bedienung wird dadurch etwas schneller und flüssiger
- Für eine geringere Systemlast wurden einige Funktionen in der Soundengine verbessert.
- Berechnung der Notenfrequenz verbessert. Tabellenwerte jetzt 16Bit



Gruß Rolf

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rolfdegen: 02.01.2018 13:49.

02.01.2018 13:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Mein neuer "Workplace" und einen Platz für die leckeren Kekse gibts auch noch ebueb



Gruß Rolf
06.01.2018 22:10 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Der singende DE-GENERATOR



Link: https://soundcloud.com/rolf-degen/singing-de-generator

Parametereinstellungen
Osc1: Vowel
Osc2: Vowel -7 semitones
Env1: CUTOFF + Osc1+2 vowel parameter
Env2: VCA
LFO1: Osc1+2 fine tune
Portamento: 14
Delay: Time 114 / Feedback 79 / Volume 127
21.01.2018 00:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

I love vowel sounds ebueb



Link: https://soundcloud.com/rolf-degen/vowelyy
29.01.2018 22:51 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

DE-GENERATOR with Midi Control Change

MIDI-Control-Change-Meldungen werden verwendet, um eine Vielzahl von Funktionen in einem Synthesizer fern zu steuern.



Youtube: https://youtu.be/bueQeDujiEI

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von rolfdegen: 15.02.2018 17:54.

15.02.2018 17:51 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MDS-78 MDS-78 ist männlich
Mitglied

Dabei seit: 24.03.2016
Beiträge: 39
Wohnort: STYRIA / AUSTRIA

MDS-78 ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Echt Hut ab vor deinem Projekt, meine ARDUINO Projekte sind eher klein. Bin mehr der Hardware Mann als Software.
05.03.2018 19:00 Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Danke..

Bald ist der Synthi fertig. Gibt immer noch kleine Bugs die beseitigt werden müssen oder beseitigt wurden. Hier ein kleiner Auszug von den letzten Bugs..

Build 3.61
- Scope Darstellung geändert. Auflösung wurde von 150 auf 64 Pixel reduziert. Dadurch Systemlast verringert. Zeitbasis passt sich jetzt automatisch an Audiofrequenz an.
- Fehler in Ringmodulation auf der Oszillator Page beseitigt
- Vowel Sound implementiert (Shape: VOW)
- SoundBuffer Größe von 40 auf 128 erhöt. Menüdarstellung und Bedienung wird dadurch etwas schneller und flüssiger
- Für eine geringere Systemlast wurden einige Funktionen in der Soundengine verbessert.
- Berechnung der Notenfrequenz verbessert. Tabellenwerte jetzt 16Bit
- Oscillator Page: Tune -1 / +1 semitones
- Modmatrix: Osc pitch jetzt -16 / +16 semitones
- Modmatrix: LFO-LEDs leuchten jetzt auch wenn LFO als Ziel ausgewält wird und Amount <>0 ist
- Portamento Funktion auf der System Page integriert
- Systempage: Osc_Pitch von -2 / +2 Oktaven und Tune -1 / 1+ Semitones wird nur im EEPROM gespeichert

Build 3.61a
- Auswahl von Shape "VOW" (Vowel) auf Osc Page funktioniert jetzt...unt -1 / +1 Semitones
- Modmatrix: Pitchbend ~ Osc1 oder Osc2 fine, Amount -1 / +1 Semitones
- Modmatrix: LFO1 ~ Osc1+2, Amount -4 / +4 Semitones
- Modmatrix: LFO1 ~ Osc1 oder Osc2, Amount -16 / +16 Semitones
- Modmatrix: LFO1 ~ Osc1 fine, Amount -1 / +1 Semitones
- Modmatrix: LFO1 ~ Osc1 oder Osc2 fine, Amount -1 / +1 Semitones
- Fx_Delay: Panorama hinzugefügt
- System Page: Midi CC on/off hinzugefügt
- Sequencer: Start/Stop Problem bei großen Hold-Werten (> 100) beseitigt.
- Modmatrix: Filter Balance hinzugefügt

Build 3.63d 28.02.2018
- Modmatrix: LFO Modulationsstärke angepasst

Build 3.63e 01.03.2018
- Osc: Parameter "RING" für Ringmodulation verstärkt

Build 3.63f 03.03.2018
- Modulationsmatrix: geänderte Amount für Osc Pitch - 16 / + 16 Semitones
- Modulationsmatrix: geänderte Amount für Osc fine - 2 / + 2 Semitones
- Modulationsmatrix: Modwheel Amount Wert vergrößert (von 127 auf 255)
- Osc-Page: Osc-Sync für alles Wellenformen außer Samples[

Gruß Rolf

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von rolfdegen: 05.03.2018 20:03.

05.03.2018 20:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Hallo ihr Lieben..

Hier gehts mal nicht um den DEGENERATOR (das Ende naht großes Grinsen ), sondern um eine sehr schöne und interessante Web-Seite, in der es um Synthesizer Selbstbau und den Nachbau eines Mini-Moog Synthis geht.

https://www.subroutine.info/



Gruß Rolf

Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von rolfdegen: 11.03.2018 23:54.

11.03.2018 23:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Es wurde Zeit für etwas Neues..

Ich meine natürlich nicht meinen DEGENERATOR, sondern ein neues und gemütliches Arbeitszimmer
(siehe Bilder). Zuerst sollte es nur ein neuer Büroschrank werden um den ganzen Elektronik-Müll, der
sich seit Jahren angesammelt hat, zu verstauen. Als ich dann aber durch die Schwedischen Einkaufs-
hallen in Wuppertal wanderte und die "Ungeahnten Möglichkeiten" sah, dann überkam mich die Lust
auf mehr.

So wurde es dann doch noch ein großer Eckschreibtisch mit Rollcontainer samt Bürostuhl und kleiner
Komode. Als ich dann endlich gehen wollte, viel mir noch ein gemütlicher Ohrensessel auf, der für
Gäste oder für Entspannung dienen soll. Mein Budget für das Arbeitszimmer war zwar erschöpft,
aber ein kleiner Notbookständer für meine zwei Synthesizer habe ich dann auch noch bestellt.

Das alte Arbeitszimmer, bestehend aus einem Wohnzimmertisch, einem Küchentisch als Lötecke, zwei
Regalen, einem Sideboard und einem Sofa, habe ich mit Hilfe meines netten Nachbarn auf den Sperr-
müll gestellt. So war denn ausreichend Platz für den großen Eckschreibtisch mit Lötecke und Büro-
schrank mit zwei Regalen.

Bilder:

https://lh3.googleusercontent.com/-837IB...0325_015715.jpg


https://lh3.googleusercontent.com/-ZAYuX...0325_014416.jpg

Ach was soll ich sagen.. Jetzt ist es richtig schön gemütlich und das arbeiten macht doppelt Spaß ebueb

Grüße aus Wuppertal. Rolf
25.03.2018 03:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

DEGENERATOR Firmware/Buglist

Build 3.63f 03.03.2018
- Modulationsmatrix: geänderte Amount für Osc Pitch - 16 / + 16 Semitones
- Modulationsmatrix: geänderte Amount für Osc fine - 2 / + 2 Semitones
- Modulationsmatrix: Modwheel Amount Wert vergrößert (von 127 auf 255)
- Osc-Page: Osc-Sync für alles Wellenformen außer Samples

Build 3.63g 11.03.2018
- Init Sound: Osc1:SAW / Mod. ENV1~Cutoff +33 / Mod. ENV2~VCA +63 / Mod. PitchBend~Osc1+2 Pitch +8 / Mod. MWheel = LFO1~Osc1+2 fine +32
- Polling time für Midi buffer auf 250us verringert.
- Midi overflow symbol [!] in der Überschriftleiste integriert

Build 3.64 11.03.2018
- Modmatrix: Mit der Taste "MOD-MAT" kann jetzt von Slot 1-6 auf Slot 7-12 gewechselt werden
- Wird die Taste "CANCEL" länger als 3sec gedrückt, werden im DEGENERATOR alle Noten ausgeschaltet (Panic-Funktion)

Build 3.64a 22.03.2018
- Draw sample curve on osc-page if new sample recording
- Sample Editor: MUTE/CUT/LOOP/REV/SEC/SECL funktioniert jetzt
25.03.2018 03:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Neues Panelboard für den DEGENERATOR

Andre von TubeOhm instruments hat ein neues Panelboard für den DEGENERATOR entwickelt.
Die Änderungen bestehen im wesentlichen aus einem anderem TFT Display und zusätzlichen Leucht-
dioden für die beiden Taster "REC" und "SEQ". Falls die Leuchtaster nicht mehr lieferbar sind, werden
die zwei LED's als Ersatz neben den beiden Tastern bestückt. Auf meinen Wunsch ist dann noch eine
Midi-LED imlementiert worden.

DEGENERATOR Panelboard

Link: https://plus.google.com/photos/photo/114...rDm9O8ygE&hl=de


Link: https://plus.google.com/photos/photo/114...536338626?hl=de

Gruß Rolf
25.03.2018 14:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

Es gibt ein neues Firmware Update für den DEGENERATOR

Build 3.64b 01.04.2018
- DMA Transfer mit Double-Buffer Funktion für Audio-Daten implementiert. Spart Prozessor Ressourcen
- Fast 16Bit Noisegenerator implementiert. Spart Prozessor-Ressourcen

Ich habe mich am Osterwochenende endlich mal hingesetzt und mich mit der DMA-Funktion im ATXmega128 beschäftigt. Die DMA-Funktion hatte ich immer vernachlässigt, da ich dachte, das sie mir nicht viel an Prozessor-Ressourcen einsparen würde. Aber wer's nicht wagt, der wird's nicht erfahren oder so.. ebueb

Gesagt getan. Jetzt war nur zu überlegen, wie der DMA am effektivsten eingesetzt werden kann. Im DEGENERATOR existieren u.a. zwei Double-Buffer für die Audio-Ausgabe. Ich habe mir überlegt, dass die DMA-Funktion hier die größte Einsparung und Entlastung für den Prozessor einbringen könnte. Ferner bringt der ATXmega128 insgesamt 4 DMA Kanäle mit Double-Buffer Funktion mit. Wobei allerdings zwei DMA-Kanäle für eine Double-Buffer zusammengeschaltet werden müssen. Dies kann man dann idealer Weise für die beide Audio-Kanäle verwenden.

DMA-Controller
Der DMA-Controller (Direct Memory Access) ermöglicht das Übertragen von Daten zwischen Speicher und Peripheriegeräten ohne große Prozessorauslastung. Während der DMA-Controller Daten von einem Speicherbereich zu einem anderen Bereich kopiert, kann die CPU andere Aufgaben wzB. Tastenabfrage oder Textausgabe auf einem LC-Display ausführen.

Link: DMA Funktion im Xmega


Bild: Datenübertragung mit CPU



Initialisierung des DMA-Kontrollers im DEGENERATOR
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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
//*************************************************************************
// DMA init
//*************************************************************************
void dma_init(void){
    DMA.CTRL DMA_CH_ENABLE_bm DMA_DBUFMODE_CH01CH23_gc// set Double Buffer and enabled
    
    // DMA Channel 0 (Audio-Buffer A)    
    DMA.CH0.ADDRCTRL DMA_CH_SRCRELOAD_TRANSACTION_gc DMA_CH_SRCDIR_INC_gc
    DMA_CH_DESTRELOAD_BURST_gc DMA_CH_DESTDIR_INC_gc;
    DMA.CH0.TRIGSRC DMA_CH_TRIGSRC_DACB_CH0_gc// DACB CH0 is trigger Quelle
    DMA.CH0.DESTADDR0 = (((uint32_t)(&DACB.CH0DATAH))>>0*8) & 0xFF;
    DMA.CH0.DESTADDR1 = (((uint32_t)(&DACB.CH0DATAH))>>1*8) & 0xFF;
    DMA.CH0.DESTADDR2 = (((uint32_t)(&DACB.CH0DATAH))>>2*8) & 0xFF;
    DMA.CH0.TRFCNT 128;
    DMA.CH0.SRCADDR0 = (((uint32_t)(&Voice.Buffer_A))>>0*8) & 0xFF;
    DMA.CH0.SRCADDR1 = (((uint32_t)(&Voice.Buffer_A))>>1*8) & 0xFF;
    DMA.CH0.SRCADDR2 = (((uint32_t)(&Voice.Buffer_A))>>2*8) & 0xFF;
    DMA.CH0.CTRLA 0xA4;   // Aktivieren, Wiederholen, 1 Byte, Single
    
    // DMA Channel 1 (Audio-Buffer B)
    DMA.CH1.ADDRCTRL DMA_CH_SRCRELOAD_TRANSACTION_gc DMA_CH_SRCDIR_INC_gc
    DMA_CH_DESTRELOAD_BURST_gc DMA_CH_DESTDIR_INC_gc;
    DMA.CH1.TRIGSRC DMA_CH_TRIGSRC_DACB_CH0_gc// DACB CH0 is trigger Quelle
    DMA.CH1.DESTADDR0 = (((uint32_t)(&DACB.CH0DATAH))>>0*8) & 0xFF;
    DMA.CH1.DESTADDR1 = (((uint32_t)(&DACB.CH0DATAH))>>1*8) & 0xFF;
    DMA.CH1.DESTADDR2 = (((uint32_t)(&DACB.CH0DATAH))>>2*8) & 0xFF;
    DMA.CH1.TRFCNT 128;
    DMA.CH1.SRCADDR0 = (((uint32_t)(&Voice.Buffer_B))>>0*8) & 0xFF;
    DMA.CH1.SRCADDR1 = (((uint32_t)(&Voice.Buffer_B))>>1*8) & 0xFF;
    DMA.CH1.SRCADDR2 = (((uint32_t)(&Voice.Buffer_B))>>2*8) & 0xFF;
    DMA.CH1.CTRLA 0xA4;   // Aktivieren, Wiederholen, 1 Byte, Single
    
    // DMA Channel 2 (Audio-Buffer C)
    DMA.CH2.ADDRCTRL DMA_CH_SRCRELOAD_TRANSACTION_gc DMA_CH_SRCDIR_INC_gc
    DMA_CH_DESTRELOAD_BURST_gc DMA_CH_DESTDIR_INC_gc;
    DMA.CH2.TRIGSRC DMA_CH_TRIGSRC_DACA_CH0_gc// DACA CH0 is trigger Quelle
    DMA.CH2.DESTADDR0 = (((uint32_t)(&DACA.CH0DATAH))>>0*8) & 0xFF;
    DMA.CH2.DESTADDR1 = (((uint32_t)(&DACA.CH0DATAH))>>1*8) & 0xFF;
    DMA.CH2.DESTADDR2 = (((uint32_t)(&DACA.CH0DATAH))>>2*8) & 0xFF;
    DMA.CH2.TRFCNT 128;
    DMA.CH2.SRCADDR0 = (((uint32_t)(&Voice.Buffer_C))>>0*8) & 0xFF;
    DMA.CH2.SRCADDR1 = (((uint32_t)(&Voice.Buffer_C))>>1*8) & 0xFF;
    DMA.CH2.SRCADDR2 = (((uint32_t)(&Voice.Buffer_C))>>2*8) & 0xFF;
    DMA.CH2.CTRLA 0xA4;   // Aktivieren, Wiederholen, 1 Byte, Single
    
    // DMA Channel 3 (Audio-Buffer D)
    DMA.CH3.ADDRCTRL DMA_CH_SRCRELOAD_TRANSACTION_gc DMA_CH_SRCDIR_INC_gc
    DMA_CH_DESTRELOAD_BURST_gc DMA_CH_DESTDIR_INC_gc;
    DMA.CH3.TRIGSRC DMA_CH_TRIGSRC_DACA_CH0_gc// DACA CH0 is trigger Quelle
    DMA.CH3.DESTADDR0 = (((uint32_t)(&DACA.CH0DATAH))>>0*8) & 0xFF;
    DMA.CH3.DESTADDR1 = (((uint32_t)(&DACA.CH0DATAH))>>1*8) & 0xFF;
    DMA.CH3.DESTADDR2 = (((uint32_t)(&DACA.CH0DATAH))>>2*8) & 0xFF;
    DMA.CH3.TRFCNT 128;
    DMA.CH3.SRCADDR0 = (((uint32_t)(&Voice.Buffer_D))>>0*8) & 0xFF;
    DMA.CH3.SRCADDR1 = (((uint32_t)(&Voice.Buffer_D))>>1*8) & 0xFF;
    DMA.CH3.SRCADDR2 = (((uint32_t)(&Voice.Buffer_D))>>2*8) & 0xFF;
    DMA.CH3.CTRLA 0xA4;   // Aktivieren, Wiederholen, 1 Byte, Single
}


//*************************************************************************
// Timer0 Interrupt: DAC Task 40KHz/25usec
//*************************************************************************
ISR(TCC0_OVF_vect)
{    
    // DMA Interrupt ------------------------------------------------------
    
    // if Channel Transaction Complete Interrupt Flag set
    if (DMA.INTFLAGS DMA_CH0TRNIF_bm)
    {
        // set buffer_nr
        Voice.buffer_nr 0;
        
        // set buffer_fill interrupt
        TCE1.INTCTRLA 0b00000010;
        
        // clear DMA Interrupt (set one)
        DMA.INTFLAGS |= DMA_CH0TRNIF_bm;
    }
    else if (DMA.INTFLAGS DMA_CH1TRNIF_bm)
    {
        // set buffer_nr
        Voice.buffer_nr 1;
        
        // set buffer_fill interrupt
        TCE1.INTCTRLA 0b00000010;
        
        // clear DMA Interrupt (set one)
        DMA.INTFLAGS |= DMA_CH1TRNIF_bm;
    }

....


Ferner habe ich den 16Bit Noise-Generator überarbeitet. Dieser ist jetzt als Inline Assembler Code vorhanden und etwas kürzer im Code und in der Berechnungszeit. Er benötigt jetzt nur noch 512ns (16 Taktzyklen).
Hierbei habe ich aus Zeitgründen auf die Übergabe der Ergebniswerte in der Funktion verzichtet und die Werte direkt in die Ausgabe-Variablen RNG_8 und RNG_16 geschrieben.

Fast Noisegenerator
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
uint16_t RNG_16;
uint8_t RNG_8;

static inline Noise8(void) {
    asm volatile (
    "lds r30, RNG_16+0" "\n\t"
    "lds r31, RNG_16+1" "\n\t"
    "lsr r31" "\n\t"
    "ror r30" "\n\t"
    "brsh xxor" "\n\t"
    "ldi r17, 0xb4" "\n\t"
    "xxor: eor r31, r17" "\n\t"
    "sts RNG_8, r30" "\n\t"
    "sts RNG_16+0, r30" "\n\t"
    "sts RNG_16+1, r31" "\n\t"
    ::: "r17""memory"
    );
}



Bis zum nächsten mal. Schöne Ostergrüße aus Wuppertal holy-willi

Dieser Beitrag wurde 11 mal editiert, zum letzten Mal von rolfdegen: 02.04.2018 15:48.

02.04.2018 15:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
rolfdegen rolfdegen ist männlich
Mitglied

images/avatars/avatar-873.jpg

Dabei seit: 11.07.2008
Beiträge: 1.788
Wohnort: Wuppertal

Themenstarter Thema begonnen von rolfdegen

rolfdegen ist offline
Beitrag: beantworten | zitieren | editieren | melden       | Top

So.. noch ein paar Bugfixes und dann ist der DE-GENERATOR fertig

Build 3.64b 01.04.2018
- DMA Transfer mit Double-Buffer Funktion für Audio-Daten implementiert. Spart Prozessor Ressourcen
- Fast 16Bit Noisegenerator implementiert. Spart Prozessor-Ressourcen
- Richtige Darstellung von Noise und Vowel Wellenform im Osc-Menü.
- Falsche Berechnung von freien Speicherplatz für Samples. Freier Speicherplatz wird jetzt im Menü richtig angezeigt
- Osc2: Flasche Berechnung der Loop-Punkte. Fehler beseitigt
- Sample-Editor: Markierung der Loop-Punkte beim zoomen fehlerhaft. Fehler beseitigt.

Andre hat das neue Panelboard aus China bekommen. Muss jetzt schnell die Bauteile bestellen und
einlöten. Bin gespannt ob' funktioniert. Zur Info: Die neue Revision hat ein neues TFT Display erhalten
und es sind ein paar Leuchtdioden mehr bestückt (Midi-In, Rec- und Seq-Taste).

Facebook: https://www.facebook.com/tubeohm.tubeohminstruments


Link:https://plus.google.com/photos/photo/114...tTh8MOPVQ&hl=de



Andre der "Fleißige" Augenzwinkern hat ein kleines Platinchen rund um den FV-1 Chip von Semiconductor
entwickelt. Der FV-1 ist eine einfach zu programmierender DSP, der speziell für Audio- und
Effektgeräte-Anwendungen hergestellt wurde. Der FV-1 besitzt Stereo ADC und DACs.
Insgesamt kann auf 16 Effekt-Programme zugegriffen werden. 8 Programme sind in das interne
ROM integriert. In Verbindung mit ein serielles EEPROM können 8 zusätzlichen Programmen
angesprochen werden. Mit 3 Potentiometereingängen können Echtzeit-Parameter gesetzt werden
wie z. B. Reverb-Abklingzeit , Rate und Tiefe in einem Chorus oder einer Frequenz in einem Filter.
Integrierte digitale LFOs und Rampengeneratoren ermöglichen die Programmierung
Chorus, Flansch und Tonhöhenverschiebung.

FV-1 Fx-Board

Link: https://plus.google.com/photos/photo/114...-Sc19jXRA&hl=de

Gruß aus Wuppertal. Rolf

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von rolfdegen: 14.04.2018 15:07.

14.04.2018 15:06 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Seiten (31): « erste ... « vorherige 27 28 29 30 [31] Baumstruktur | Brettstruktur
Gehe zu:
 
Antwort erstellen
cc2.tv-Fan-Club » CC2tv +CC2audio » ATM18/AVR, Arduino + Sonstiges » AVR Synthesizer-Projekt

Impressum - Datenschutzerklärung

Forensoftware: Burning Board, entwickelt von WoltLab GmbH