rolfdegen Posted May 4, 2014 Author Report Share Posted May 4, 2014 Hallo Nach längerer Abwesenheit aus familiären Gründen melde ich mich Heute wieder zurück. Die Hardware ist fast fertig. Was fehlt ist noch ein analoger Audioeingang, um externe Audiosignale über den Filter und VCA zu mischen. Das werde ich Heute auf die Platine löten. Dann werden die Schaltpläne für das Platinen Layout erstellt. Das Layouten übernimmt dann ein Freund. In der Zwischenzeit werkel ich noch ein wenig an der Software. Bis dahin lieben Gruß aus Wuppertal :) Hello After a long absence due to family reasons I sign today back. The hardware is almost ready. What is missing is still an analog audio input to mix external audio signals via the filter, and VCA. Today I will solder on the board. Then the schematics for the circuit boards layout are done. Doing layout is handled by a friend. In the meantime, I Werkel a little more on the software. Until then, love greeting from Wuppertal in Germany Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted May 24, 2014 Author Report Share Posted May 24, 2014 Hallo zusammen.. Wochenend ist Hobbyzeit.. und das bedeutet Weiterentwicklung an meinem Synthesizer. Heute gab es ein Update für meine Entwicklungsumgebung (ATMEL STUDIO 6.2 build 1153). Mal schaun was geändert wurde. Nächste Woche steht dann ein Hardware Update meines Computers an. Ich will die System Festplatte durch eine Samsung 840 EVO SSD 250GB ersetzen.Synthesizer Projekt Mit der Menüoberfläche fürs Laden der Sounds bin ich noch nicht ganz einverstanden. Gefällt mir irgendwie nicht. Aus dem Mutable Forum gabs mal wieder gute Tips. Sollte das Menü vlt. anders bennenne. Statt "Play Sound" lieber "Load Presets". Werde das mal überdenken und Heute ein paar Änderungen testen. Gruß Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted June 20, 2014 Author Report Share Posted June 20, 2014 Hallo zusammen.. Hab ein langes Wochenende vor mir und viel Zeit zum programmieren. Für die Soundverwaltung und das Laden von Waves und Samples habe ich jetzt eine gute Lösung gefunden. In Bank 00 befinden sich die festen Wellenformen wzB. Saw, Sinus, Rechteck u.a. (max. 128 ) Diese werden bei der Auswahl mit dem Encoder sofort geladen und auf dem Display dargestellt. In Bank 01-99 befinden sich die ganzen Samples (max. 12672 ). Die Samples werden als Text Liste dargestellt und können über die Load-Taste geladen werden. Für die grafische Darstellung und Einstellungen eines Samples geht man dann auf eins von vier Supmenu Seiten der Oscillator Page. Hi .. I have a long weekend and a lot of time for programing my synth. For the sound management and loading of Waves and samples I have now found a good solution. In bank 00 are the fixed waveforms Saw, Sine, Square and more (max. 128) These are loaded immediately when selecting the encoder and displayed on the screen. In Bank 01-99 are all the sample files (max. 12672). The samples are shown as a text list and can selected with “Load†button. For the graphical representation and edit of sample then goes to the Supmenu Pages of Oscillator. Auswahl eines Sound ProgramAuswahl einer WellenformAuswahl eines SampleOrdnerstruktur auf der SD Karte PS: Es geht voran Gruß Rolf Quote Link to comment Share on other sites More sharing options...
Marxon Posted June 21, 2014 Report Share Posted June 21, 2014 (edited) Hallo Rolf, es ist wirklich interessant, deinem Synth beim Erwachsenwerden zuzusehen! Mich würde noch interessieren, auf was sich die Bautteilkosten beim aktuellen Stand des Gerätes belaufen? Gruß Marxon Edited June 21, 2014 by Marxon Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted July 12, 2014 Author Report Share Posted July 12, 2014 (edited) So.. mir ist gerade ein guter Name für meinen Synthesizer eingefallen:"DeWave 1.0" Die ersten beiden Buchstaben sind aus meinem Familien Namen "Degen". Das "Wave" im Namen soll die verschiedenen Wellenformen und Samples im Synthesizer symbolisieren. Ich bin gerade dabei einen Programmabschnitt zu programmieren, der es ermöglicht, eine 16Bit WAVE-Datei von der SD Karte in den Synthesizer zu laden und dann als 8Bit Sample abzuspielen. Eigentlich ist eine WAVE-Datei ganz simpel aufgebaut. Am Anfang der WAVE-Datei ist ein Haeder bestehend aus 44 Byte, in dem z.B. das Format, Bitbreite und Samplerate gespeichert sind. Diese Header-Daten werden vom Synthesizer im Moment noch ignoriert. Nach den Header-Daten folgen die eigentlichen Sample-Daten. Diese sind bei einer 8Bit Wave-Datei vorzeichenlos (unsigned). Bei 16Bit bestehen sie aus 2Byte mit Vorzeichen. Das erste Byte ist das Low-Byte gefolgt vom High-Byte mit Vorzeichen. Um aus den 16Bit jetzt ein Vorzeichenloses Byte für den Synthesizer zu generieren reicht es aus, das Low-Byte einfach fallen zu lassen und das High-Byte mit 128 zu addieren. Das WAVE Format Hier ein C-Code Beispiel für meinen Synth // set folder --------------------------------------------------------- uint8_t error_status = 0; ffcd(""); ffcd("SAMPLE");ffcd(foldername); // open file ---------------------------------------------------------- if( MMC_FILE_OPENED == ffopen(sample_name,'r')) { uint32_t file_len = file.length; // set baseaddress sram hugemem_ptr_t p; uint32_t base = BOARD_EBI_SRAM_BASE; // 0x800000UL uint_fast8_t data = 0; uint32_t offset = 0x00000; p=(hugemem_ptr_t)((uint32_t)base + offset); uint8_t sample; // load WAVE-File 16Bit signed Little-endian / Low-byte first ----- // Sample-Bank 01-99 // skip Header from WAVE-File for (uint8_t i = 0; i < 44; i++) { sample = ffread(); } file_len = ((file_len - 44) / 2); for (uint32_t i = 0; i < file_len; i++) { sample = ffread(); // load L-Byte and ignore sample = ffread(); // load H-Byte sample = sample + 128; // convert in unsigned 8Bit hugemem_write8(p+i, sample); // write Sample in SRAM } Edited July 12, 2014 by rolfdegen Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted July 12, 2014 Author Report Share Posted July 12, 2014 Bisher war es in meinem Synthesizer nur möglich Wave-Dateien in Mono zu laden. Ich möchte dieses Wochenende nutzen, um auch Stereo Dateien in meinen Synth zu laden. Ferner möchte ich die Auflösung von 8Bit auf 12Bit erhöhen. Das entspricht der maximalen Auflösung der DA-Wandler im Xmega Chip. Im Header einer Wave-Datei sind zB. auf Adresse 0x16 die Informationen über die Anzahl der Kanäle gespeichert. Bei Mono hat die Adresse 0x16 den Wert 1 und bei Stereo den Wert 2. Bedeutung der Daten im Header Quelle: Wikipedia Gruß Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted July 12, 2014 Author Report Share Posted July 12, 2014 C-Code little Noise Shaping // skip Header from WAVE-File for (uint8_t i = 0; i < 44; i++) { sample = ffread(); } // calculate data length file_len = ((file_len - 44) / 2); uint8_t quantization_error; int16_t signed_sample_16; uint8_t sample_l; uint8_t sample_h; for (uint32_t i = 0; i < file_len; i++) { // load 16Bit sample-data sample_l = ffread(); // load L-Byte sample_h = ffread(); // load H-Byte // convert to signed 16Bit signed_sample_16 = (((int16_t)sample_h)<<8 | sample_l); // calculate data for noise-shaping int32_t sample_16 = (int32_t)(signed_sample_16); sample_16 += quantization_error; if (sample_16 < -32768){sample_16 = 32768;} else if (sample_16 > 32767){sample_16 = 32767;} int8_t sample_8 = sample_16 >> 8; quantization_error = sample_16 - ((int32_t)(sample_8) << 8); // convert to unsigned 8Bit sample_8 = sample_8 + 128; // write to 1MByte SRAM hugemem_write8(p+i, sample_8); } Gruß Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted July 12, 2014 Author Report Share Posted July 12, 2014 Hier eine Aufnahme vom Synth, in der das Noise Shaping noch deutlicher zu hören ist. 1.Sample mit Noise Shaping und 2.Sample ohne Noise Shapinghttps://soundcloud.com/rolf-degen/noise-shaping-2 Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted July 12, 2014 Author Report Share Posted July 12, 2014 (edited) Hallöchen.. Um die Kosten für einen Bausatz zu senken, will ich mal schaun ob ein anderes LC-Display wzB das SSD1289 von sainsmart am Synth funktioniert. Es handelt sich hierbei um ein 3.2" großes Farb LCD das mit einen Straßenpreis von 7-15 Euro fast überall erhältlich ist. SSD1289 Das Display hat sogar einen Touch Screen Controller on Board Gruß Rolf Edited July 12, 2014 by rolfdegen Quote Link to comment Share on other sites More sharing options...
albpower2seq4sid Posted July 13, 2014 Report Share Posted July 13, 2014 Hallo Seit Anfang diesen Jahres baue ich an meinen eigenen Synthesizer auf Basis eines ATxmega128A1 Mikrocontrollers und analogen Filterbeistein SSM2044. Wenn Ihr Lust und Zeit habt, dann schaut doch mal ins Forum des ComputerClub 2 vorbei. Die Betreiber sind alte Bekannte vom ehemaligen WDR-ComputerClub. Bild 1: AVR-Synthesizer "WAVE 1" [img=https://ox1aha.bay.livefilestore.com/y1pTC6CLuykzy6tk2AXNV9ecTwQKqLRJVup07GJfXJ4QLZaX4gJFkpQJCGN46Q79PIvn-QoQ7QAY1u1NQ8wOjWy0cH9XqjgWZtH/AVR_Synthi_Hardware.jpg] Features in the AVR-Synthi "WAVE 1": 2 Audiochanal 12 Bit 2 Oscillators per chanal 3 LFO's per chanal 1 Filter per chanal Noisegenerator Graphic display with Touch Panal Midi-In Bild 2: WAVE 1 Schema [img=http://www.mikrocontroller.net/attachment/151412/Synthi_Block_01.png] Auf soundcload.com gibts schon einige Klangbeispiele vom "WAVE 1":http://soundcloud.com/rolfdegen/avr-synthi-testsounds-mit-lfo'>Listen on Soundcloud.com Bild 3: So soll er mal aussehen.. der kleine "WAVE 1" [img=https://public.bay.livefilestore.com/y1p0qt9mwU_qoizinB_PzpYKp6RUsLxX2-rjlYzZWHrH-o2Gbui3uZ_hA98IgcOW52DNOMM6V9KvfLxuah9Ik9Fbw/Miditech_01.jpg] Es liegt auf jeden Fall noch viel Entwicklungsarbeit vor mir. Werde von Zeit zu Zeit hier berichten. MfG Rolf Hi Rolfdegen sorry because i don't speak german, it seems very interesting your project, some month ago i was working and program on Arduino Card for controlling a DAC module to generate several voltages to control analogic symtheziser modules I build for this purpose, like a VCO based on six hex buffer 4069, a VCF steiner type, and a VCA with discrete compontes but ota style (with current mirrors ), I try to see your project and within some days i try to comment it Best Regards!! Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted July 14, 2014 Author Report Share Posted July 14, 2014 (edited) Hallo.. My blog in english: http://mutable-instruments.net/forum/discussion/2504/shruthi-synthesizer-and-my-wave-1/p1 Hier die ersten Stereo Samples. Klingt schon ganz nett, aber noch nicht perfekt Stereo Sample Gruß Rolf Edited July 14, 2014 by rolfdegen Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted August 5, 2014 Author Report Share Posted August 5, 2014 Hallöchen Jetzt kommt Farbe ins Spiel :smile: Das neue Display ist in Betrieb und die ersten Regler Knöpfe sind designed. Zur Zeit passe ich die ganze Text- und Grafikausgabe an das neue Display-Format an. Durch das neue Display ergeben sich auch neue Ideen die ich einmal ausprobieren werde. SainSmart 3.2" LCD 240x320 Pixel Gruß Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted August 7, 2014 Author Report Share Posted August 7, 2014 Hallöchen.. Kleiner Zwischenstand meiner Entwicklungsarbeit am Synth. Hab gerade die LFO1-Menu Page neue entworfen. Mit dem Regler "Wave" kann man jetzt eine LFO Wellenform selektieren. Bild: LFO1 Menu Page Gruß Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted August 24, 2014 Author Report Share Posted August 24, 2014 Hallo Hier einige Bilder vom neuen GUI Interface in mein Synth Gruß Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted August 24, 2014 Author Report Share Posted August 24, 2014 Hallo.. Ich bräuchte mal einen Tip. Wie kann ich das Phasen Jitter (siehe Bild ca. 3Khz) in meinem Synthesizer verringern. Für die Klangerzeugung benutze ich die DDS Synthese. Das Phasen Jitter beträgt in allen erzeugten Frequenzen 25usec. Das entspricht genau der Abtastrate im Synthesizer.Phasen Jitter 25usec Code Beispiel DDS-Synthese in meinem Synth //————————————————————————————————————- // load phase register all 25usec (40KHz Sample Frequence) //————————————————————————————————————- LoadPhaccu1: LDS phakku0, phaccu1+0 ; (R26) load 32Bit Phaseaccu LDS phakku1, phaccu1+1 ; (R27) LDS phakku2, phaccu1+2 ; (R28) LDS phakku3, phaccu1+3 ; (R29) //————————————————————————————————————- // Load 256 Byte Sample from 1MB XRAM Addr. 0x0000 //————————————————————————————————————- Osc1Sample: MOV R30, phakku3 // set XRAM address (is H-Byte Address from Phaseaccu) LDI R31, 0x00 LDI R21, 0x00 LDI R22, 0x80 // load AddressOffset 0x80 (is necessary for addressing the XRAMs in xmega) ADD R21, R22 // add OUT 0x3B, R21 // set XRAM Address to EBI Port LD R1, Z // load 8Bit Sample from XRAM in R16 OUT 0x3B, R1 // special EBI command //————————————————————————————————————- // inc Phaseaccu OSC1 (32Bit) // ———————————————————————————————————— LDS pha_inc0, phaccu_stepsize1+0 ; load 24 Bit PhaseIncrement LDS pha_inc1, phaccu_stepsize1+1 LDS pha_inc2, phaccu_stepsize1+2 ADD phakku0, pha_inc0 ; add PhaseIncrement ADC phakku1, pha_inc1 ADC phakku2, pha_inc2 LDI R2, 0x00 ADC phakku3, R2 //————————————————————————————————————- // save Phaseaccu // ———————————————————————————————————— STS phaccu1+0, phakku0 ; save Phaseaccu STS phaccu1+1, phakku1 STS phaccu1+2, phakku2 STS phaccu1+3, phakku3 //————————————————————————————————————- // Other functions for sound calculation (sample is present in r1) // ———————————————————————————————————— ... Hat jemand eine Idee ? Bis dahin lieben Gruß Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted August 31, 2014 Author Report Share Posted August 31, 2014 (edited) Hallo zusammen Aus dem Mutable Forum bekam ich den Tip, zwei Samples hintereinander zu laden und dann zu interpolieren. Das sollte die Störungen etwas verringern. Gesagt und getan.. Das Beispiel Programm funktioniert. Um zwei Bytes für die Interpolation hintereinander zu laden kann man gewöhnlich Z+ (ld first_sample, Z+) für die Adressierung des nächsten Samples benutzen. Dann würde aber die Adresse 0x100 am XRAM (externes 1MByte SRAM) anliegen und nicht 0x001. Aus diesem Grund wird die Adresse des Phasenaccu inc und erneut in das Adressregister für das XRAM geschrieben. //------------------------------------------------------------------------- // Load 1.Sample from 1MB XRAM Addr. (sample size is 256 Byte) //------------------------------------------------------------------------- sample1 = 16 mov r30, phakku2 // load Phaseaccu (is same Address vor XRAM) ldi r31, 0x00 ldi r21, 0x00 ldi r22, 0x80 // load Adress Offset (XRAM) add r21, r22 // and add with XRAM Offset Address in R18 out 0x3b, r21 // set XRAM Address to EBI Port ld sample1, Z // load Sample from XRAM out 0x3B, r1 // special EBI command //------------------------------------------------------------------------- // Load 2.Sample from 1MB XRAM Addr.+1 //------------------------------------------------------------------------- sample2 = 17 inc r30 // inc Phaseaccu out 0x3b, r21 // set XRAM Address to EBI Port ld sample2, Z // load Sample from XRAM out 0x3B, r1 // special EBI command //------------------------------------------------------------------------- // Interpolation //------------------------------------------------------------------------- mul phakku1, sample2 movw R30, r0 com phakku1 mul phakku1, sample1 add r30, r0 adc r31, r1 eor r1, r1 mov sample1, r31 // 8Bit Result in sample1 Bild 1 zeigt wie die Interpolation Routine in meinem Synthesizer arbeitet. Obere Kurve (Kanal 1) ist die Interpolation aus zwei 8Bit Samples und unten der gleiche Sample ohne Interpolation. Die Messpunkte sind direkt am DAC0+DAC1. Gut zu erkennen ist die feinere Abstufung des Samples mit Interpolation. Interpolation In dem Youtube Video kann man die Interpolation gut erkennen. Oben Sample mit Interpolation am linken DAC Ausgang und unten der gleiche Sample ohne Interpolation am rechten DAC Ausgang Gruß Rolf Edited August 31, 2014 by rolfdegen Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted November 2, 2014 Author Report Share Posted November 2, 2014 Hallöli.. oder so Ich hoffe euch allen gehts gut. Der Name "DIYWA" für meinen Synthesizer gefällt mir. Die ersten drei Buchstaben "DIY" für Do It Yourself und "WA" für Wave. Klingt auch irgendwie cool Heute habe ich mich etwas mit der Grafik für das TFT Display beschäftigt. Für die Wellenformdarstellung bzw Scope-Funktion wollte ich dicke Linien zeichnen. Die Standart Liniebreite von einem Pixel kann man bei größerer Entfernung nicht mehr genau erkennen. Zuerst hatte ich versucht, zwei Linien mit einer Verschiebung von einem Pixel in X und Y Richtung zu zeichnen. Mit dem Ergebnis war ich aber nicht sonderlich zufrieden. Die beiden Linien liefen an manchen Stellen etwas auseinander (Bild 1). Dann kam mir aber der richtige Gedanke. Ich hatte mal gelesen, das Grafikkarten im PC Dreiecke benutzen um Geometrische Formen oder andere Dinge zu zeichnen. Also habe ich meine Routine fürs Zeichenen einer dicken Linie etwas abgeändert. Statt nur einen Pixel an der X- und Y-Koordinate zu zeichnen habe ich drei Pixel mit einem Verstatz von +1 Pixel an die X- und Y-Koordinate gezeichnet. Bild 1: Linie mit 2 Pixel 1. Pixel auf X und Y 2. Pixel auf X+1 und Y+1 Bild 2: Linie mit drei Pixel 1. Pixel auf X und Y 2. Pixel auf X+1 und Y 3. Pixel auf X und Y+1 Gruß Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted November 2, 2014 Author Report Share Posted November 2, 2014 Hallo Leute von Heute Ich verwende das 3.2' TFT von SainSmart mit SSD1289 in meinem Synthesizer Projekt. Die Ansteuerung und Initialisierung sowie Grafik und Textausgabe funktionieren mit der Eingebunden Library wunderbar und problemlos. Jetz möchte ich aber ein digitalisiertes Audio-Signal als Wellenform in einem Gitterraster wie zB auf einem Oszilloskop darstellen. Der Display-Controller SSD1289 bietet dafür die Möglichkeit zwei Windowsbereiche zu definieren und irgendwie übereinander zu legen (Picture in Picture Mode). Das 1.Windows wäre dann mein Raster und das 2.Windows wäre meine digitalisierte Audio-Wellenform. Leider schaffe ich es nicht, beide Windows übereinander zu legen und gleichzeitig darzustellen. Hab diverse Register-Settings ausprobiert, aber keine funktionierte. Bild 1: Register-Settings im SSD1289 Controller Aktuell verwende ich einen Windowsbereich im Ram des Displays. Darin werden Raster und Wellenform immer wieder neu gezeichnet was viel Zeit kostet (siehe Video). MiniScope im "DIYWA 1" Youtube: Im Bild 1 ein Auszug aus dem Manuel des Controllers SSD1289 in Bezug auf den Picture in Picture Modus. Vielleicht hat jemand eine Idee. Vielen Dank für Eure Hilfe. Gruß Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted November 2, 2014 Author Report Share Posted November 2, 2014 Es gibt einen neuen DIY Synthesizer namens "Groovesizer TB2". The TB2 is a 4 note paraphonic wavetable synth with (digital) filter, envelope and LFO. In addition to the built-in wave shapes (sine, triangle, saw, square, noise), additional wave shapes can be loaded from SD card. For sound generation, it makes use of the two 12-bit DACs built into the Due’s ATSAM3X8E processor (output is mono in the current configuration, but stereo operation is also possible). The TB2 will be available in kit form (ETA December 2014). Der "Groovesizer" Hier ein Video vom "Groovesizer" Youtube: Gruß Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted November 2, 2014 Author Report Share Posted November 2, 2014 Hallo Habe heute die Envelope Menüseiten fertig gestellt. Rechts ist ein kleines Fenster in dem in Echtzeit die Envelope Kurve gezeichnet wird, wenn eine Midi-Note empfangen wird. Envelope Page Grüße Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted November 9, 2014 Author Report Share Posted November 9, 2014 Hallo Freunde.. Mich beschäftigt schon seit längerer Zeit ein Problem mit dem digitalen ADSR Generator in meinem Synthesizer. Wenn ich in meinem monophonen Synthesizer zwei Midi-Noten sehr schnell hintereinander spiele ohne dabei die Release Phase der 1.Note abzuwarten, dann ensteht ein störendes Klick Geräusche zwischen den beiden Noten (siehe roter Kreis Bild 1). Mein ADSR-Generator funktioniert nach folgenden Regeln. Wenn ich eine Keyboard Taste drücke dann startet der ADSR bei einem Level von Null. Drücke ich während der ADSR-Phasen eine zweite Taste, dann startet der ADSR wieder bei einem Level von Null.Bild 1: Signalverlauf von zwei Noten die kurz hintereinander angespielt werden Um das zu vermeiden, könnte man den ADSR-Generator retriggern und den neuen Attack-Level auf den auf den letzten Wert des ADSR vor der Retriggerung setzen. Das wird zB. beim ADSR-Modul A-140 von der Firma Doepfer gemacht (siehe Bild 2).Bild 2: ADSR-Modul A-140 Ich werde das mal testen. LG aus Wuppertal. Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted November 13, 2014 Author Report Share Posted November 13, 2014 Hallöchen.. Ich hab den Code in der ADSR Envelope Routine etwas abgeändert. Jetzt wird der aktuelle ADSR-Wert der 1.Note als neuer Startwert für den ADSR der 2.Note benutzt. Im Bild kann man den Hüllkurvenverlauf der beiden Noten gut erkennen. Ergebnis der Änderung: Keine Klick Geräusch zwischen zwei Noten Ein Problem gibts aber noch. Wenn der DDS Phasengenerator beim Starten der Samples auf Null zurückgesetzt wird um den Sample ab Anfang abzuspielen, dann gibts wieder Klick Geräusche zwischen zwei Noten. Mal schaun wie ich das lösen kann Grüße aus Wuppertal. Rolf Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted November 15, 2014 Author Report Share Posted November 15, 2014 (edited) Hallöchen.. Heut gibts mal wieder was auf die Ohren. Hab mal ein paar Demo-Sounds hochgeladen. Sounds sind zweistimmig bzw. zwei Oszillatoren sind gegeneinander verstimmt. https://soundcloud.com/rolfdegen/wave-sounds-from-my-diy-synth-diywa Ich wünsch euch viel Spaß beim anhören. Gruß Rolf Edited November 15, 2014 by rolfdegen Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted December 30, 2014 Author Report Share Posted December 30, 2014 Hallo.. Ich bin gerade am überlegen, wie ich eine Wellenform Grafik zB mit einer horizontalen Länge von 402 Pixel auf ein 320 Pixel breites Grafik LCD verkleinern kann, so das es auf das ganzen Breite passt.Wellenform auf dem LCD Lösungsansatz 1: Anzahl Wellenform Pixel / Anzahl LCD Pixel = 1,25 Geht aber nicht ganz auf, da nur jeder 2.Pixel gezeichnet wird (siehe Bild) Lösungsansatz 2: Auf dem LCD bleiben noch 82 Pixel frei. Um diesen Platz auszunutzen teile ich die 402 Pixel / 82 = 4 und zeichne jeden 4.Bildpunkt der Wellenform Grafik zweimal Quote Link to comment Share on other sites More sharing options...
rolfdegen Posted January 18, 2015 Author Report Share Posted January 18, 2015 (edited) Aus dem mutable-instruments Forum kam mal wieder die rettende Idee. PS: Oliver du bist der Größte Nach seiner Idee konnte ich das Problem dann so lösen: // draw wave-file ————————————————————- uint32_t source = 0; uint32_t increment = (uint32_t)(file_lenght << 8)/310; for (uint16_t i = 4; i < 315; i++) { uint8_t sample = hugemem_read8(p + (source >> 8)); // p = xram startadr sample = sample >>1; source += increment; uint16_t x0 = i; uint8_t y0 = 94; // middle position of screen if (sample > 64) { y0 = 94-(sample – 64); sample = sample – 64;} else {y0 = 94; sample = 64 – sample;} vline(x0, y0, sample, color_orange); // plot sample on screen } Bild 1: Angepasstes Darstellung Gruß Rolf Edited January 18, 2015 by rolfdegen Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.