Jeannie Polyphonic DIY Synthesizer

Leicht OT:

André, mein Bester - darf ich mal ein klein wenig meckern?

Bitte gewöhn' Dir doch mal an, VOR Satzzeichen (Punkt/Komma/Doppelpunkt/Fragezeichen/Ausrufezeichen etc.) KEIN Leerzeichen zu setzen. Entschuldige, daß ich das erwähne, aber ich krieg' beim Anblick von derartig 'verunstalteten' Texten immer 'was am Auge' - wenn Du verstehst, was ich meine. Ist auch nicht böse gemeint...

Ich weiß auch gar nicht, wo diese 'Unart' herkommt... gibt einige hier (und auch in anderen Foren), die das praktizieren. In der Schule wird das doch sicher nicht so gelehrt, oder irre ich mich da?

Zu Eurer Jeannie: supertolles Projekt - Chapeau!
 
So lange man es versteht ist es ok. Aber Chat Abkürzungen finde ich blöd. Man muss schon oft überlegen, was gemeint ist.. Aber vielleicht liegts auch am Alter ;-)

Chat.PNG

cya Rolf
 
Zuletzt bearbeitet:
bei "afaik" und "wtf" würde ich mich manchmal auch schuldig bekennen (trotz :opa: ). :schwachz:
 
Leicht OT:

André, mein Bester - darf ich mal ein klein wenig meckern?

Bitte gewöhn' Dir doch mal an, VOR Satzzeichen (Punkt/Komma/Doppelpunkt/Fragezeichen/Ausrufezeichen etc.) KEIN Leerzeichen zu setzen. Entschuldige, daß ich das erwähne, aber ich krieg' beim Anblick von derartig 'verunstalteten' Texten immer 'was am Auge' - wenn Du verstehst, was ich meine. Ist auch nicht böse gemeint...

Ich weiß auch gar nicht, wo diese 'Unart' herkommt... gibt einige hier (und auch in anderen Foren), die das praktizieren. In der Schule wird das doch sicher nicht so gelehrt, oder irre ich mich da?

Zu Eurer Jeannie: supertolles Projekt - Chapeau!
Du mal ganz ehrlich , ich habe soviel zu tun das ich auf den deutschen Satzbau echt nicht soviel achte. Weist du , einige Leute könne deutsch , andere Synthesizer bauen . So hat jeder so seine Fähigkeiten. Für mich ist es wichtig das die Leute verstehen was ich meine . Weiß du , mein englisch ist auch nicht so super was meinst du wer sich beschwert hat, nur unsere deutschen Landsleute - keine Engländer . Also , bleib mal locker . - es sei denn du bist Deutschlehrer. ( auch nicht böse gemeint )
 
Zuletzt bearbeitet:
Also , bleib mal locker . - es sei denn du bist Deutschlehrer. ( auch nicht böse gemeint )
Keine Bange - ich bin locker ;-) und auch kein Deutschlehrer :) Und böse bin ich auch nicht. Aber ich entnehme Deiner Antwort, daß Du eigentlich in einer anderen Landessprache zuhause bist - das erklärt es dann - und damit kann ich locker leben :mrgreen:

Lieben Gruß,
Miks
 
Keine Bange - ich bin locker ;-) und auch kein Deutschlehrer :) Und böse bin ich auch nicht. Aber ich entnehme Deiner Antwort, daß Du eigentlich in einer anderen Landessprache zuhause bist - das erklärt es dann - und damit kann ich locker leben :mrgreen:

Lieben Gruß,
Miks
Gibt es auch was sachdienliches u produktives ??
 
Keine Bange - ich bin locker ;-) und auch kein Deutschlehrer :) Und böse bin ich auch nicht. Aber ich entnehme Deiner Antwort, daß Du eigentlich in einer anderen Landessprache zuhause bist - das erklärt es dann - und damit kann ich locker leben :mrgreen:

Lieben Gruß,
Miks

Im SequencerTalk 122 kannst du sehen, welche Landessprache er hat.

Ich verstehe diese ganze Sprach- und Schreibmurkserei nicht ganz.....🤔
 
Ist jetzt auch nicht ganz so wichtig…
zurück zum Thema…

gibt es schon eine Antwort von der MIDI Association?
das würde ich richtig cool finden, wenn ihr eine eigene ID bekommen würdet. 😎🥳
 
Nein. Ist auch nicht kostenlos.

Ich werde es so programmieren, dass Jeannie beim Senden und Empfangen von SysEx Daten keine ID benötigt.

Da lediglich Patch Daten gesendet und geladen werden, sollte das kein Problem sein.
 
Zuletzt bearbeitet:
Hallöchen..

Das Datenformat für die Übertragung bzw. für den Empfang von SysEx Daten hat so seine Tücken.
Die Daten dürfen nur 7Bit groß sein. Größere Werte führen zu einem Abbruch der Übertragung.
In der Jeannie werden zum Teil Fließkommazahlen und 16Bit Integer Zahlen verwendet.
Für das Speichern auf SD Karte werden die Parameter in ASCII Zeichen konvertiert und
auf die SD Karte geschrieben. Das sieht für Patch "B 032" zum Beispiel so aus..

Patch.PNG

Der Vorteil ist, dass Fließkommazahlen oder große Integerzahlen als 7Bit Zahlen (0-127) per SysEx übertragen werden können.
Ein Nachteil ist aber die etwas größerer Datenmenge.

Beispiel Code zur Übertragung eines SysEx Files ( Patch "B 032" Daten sind noch nicht vollständig )
C:
byte sysexData[32];    // SysEx buffer 256 Byte
int sysexCount = 0;        // SysEx Data pointer

//*************************************************************************
// convert parameter string to bin
//*************************************************************************
FLASHMEM void String_to_bin (String value, uint8_t len)
{
    for (uint8_t i = 0; i < len; i++) {
        sysexData[sysexCount] = value[i];
        sysexCount++;
    }
}
//*************************************************************************
// usbMidi send SystemExclusive
//*************************************************************************
FLASHMEM void SendSysEx(void)
{
    // send PrgNr "B 032"
 
    uint8_t patchNo = 32;
    uint8_t currentPatchBank = 1; // Bank B
    String numString = (patchNo);
    String bankString = char(currentPatchBank + 65);
    String fileString = (bankString + "/" + numString);
    uint8_t data_len = NO_OF_PARAMS;
    sysexCount = 0;
 
    // get Sound File String
    File patchFile = SD.open(fileString.c_str());
    String data[data_len]; //Array of data read in
    recallPatchData(patchFile, data);
    patchFile.close();
 
    // Sysex data lenght [28];                            // Daten lenght max 256
    sysexData[sysexCount++] = 0xF0;                        // 0        - Start SysEx
    sysexData[sysexCount++] = 0x00;                        // 1        - ID
    sysexData[sysexCount++] = 0x00;                        // 2        - ID
    sysexData[sysexCount++] = 0x00;                        // 3        - ID
    sysexData[sysexCount++] = 0x00;                        // 4        - Device ID 0-64
    sysexData[sysexCount++] = patchNo;                     // 5        - Patch No
    sysexData[sysexCount++] = currentPatchBank;            // 6        - Folder No
    String_to_bin(data[0], 12);                            // 7-18        - Patch Name
    String_to_bin(data[1], 4);                             // 19-22    - Osc1 level
    String_to_bin(data[2], 4);                             // 23-26    - Osc2 level
 
    // ..even more data
 
    sysexData[sysexCount++] = 0xF7;                        // 27        - End SysEx
 
    usbMIDI.sendSysEx(sysexCount, sysexData, true);        // send SysEx data
 
    Serial.println("Data sending complete");
 
}

Das übertragene SysEx File für Patch "B 032"
SysEx data.PNG

Gruß Rolf
 
Zuletzt bearbeitet:
Werde wohl noch ein paar Konvertierungsroutinen programmieren, um die SysEx Datenmenge zu verringern.

Zum Beispiel kann man einen positiven Fließkommawert von 0.00 bis 1.00 in einen 7bit Integer Wert umrechnen indem man diesen mit 100 multipliziert.
Dadurch spart man 3 Byte (das Komma mitgerechnet). Bei einer negativen Fließkommazahl z.B. -1.00 wird es schon etwas schwieriger.
Dafür benötigt man zwei SysEx Bytes. Das 1.Byte fürs Vorzeichen und das 2.Byte für den Integer Wert.

Wenn Ihr mehr über das Thema wissen wollt, hier ein interessanter Beitrag aus unserem Forum.

Ach.. ja. Das Programmieren ist des Müllers Lust oder so :pcsuxx:

Wünsch Euch allen einen schönen Tag. Gruß Rolf
 
Zuletzt bearbeitet:
Hallo , es gibt demnächst ein etwas überarbeitets DIY Manual in Version 1.05.
Änderungen wie folgt :
1:) der DAC ist nicht mehr steckbar sondern wird direkt von unter auf die Platine gelötet. Die 5mm Buchsenleisten entfallen .
**** Grund: die Buchsenleiste ist exorbitant teuer und schwer zu bekommen .
2:) die Spulen L 1,2,3,4 sowie die Spule auf dem FX Board können sowohl 3,3 uH oder auch 4,7 uH haben.
**** Grund: Bauteilknappheit. Die Werteänderungen haben keine Auswirkungen auf die Schaltung. Da die Spulen nur Störpeaks wegfiltern sollen sind größere Spulen fast schon ein Vorteil .

Hello , there will soon be a slightly revised DIY manual in version 1.05.
Changes as follows:
1:) the DAC is no longer pluggable but soldered directly from below onto the PCB. The 5mm female connectors are omitted.
**** Reason: the female connector is exorbitantly expensive and hard to get.
2:) the coils L 1,2,3,4 as well as the coil on the FX board can have 3,3 uH or also 4,7 uH.
**** Reason: component shortage. The value changes have no effect on the circuit. Since the coils are only to filter out interference peaks, larger coils are almost an advantage.
 
Werde wohl noch ein paar Konvertierungsroutinen programmieren, um die SysEx Datenmenge zu verringern.

Zum Beispiel kann man einen positiven Fließkommawert von 0.00 bis 1.00 in einen 7bit Integer Wert umrechnen indem man diesen mit 100 multipliziert.
Dadurch spart man 3 Byte (das Komma mitgerechnet). Bei einer negativen Fließkommazahl z.B. -1.00 wird es schon etwas schwieriger.
Dafür benötigt man zwei SysEx Bytes. Das 1.Byte fürs Vorzeichen und das 2.Byte für den Integer Wert.

Wenn Ihr mehr über das Thema wissen wollt, hier ein interessanter Beitrag aus unserem Forum.

Ach.. ja. Das Programmieren ist des Müllers Lust oder so :pcsuxx:

Wünsch Euch allen einen schönen Tag. Gruß Rolf
Jo und mehrere einfache On/Off Parameter kannst du bit für bit in einem Wert aneinanderhängen, das spart auch ne Menge Platz.
 
Zuletzt bearbeitet:
Ja das ist ein guter Vorschlag. Wenn man bedenkt das eine Bank 128 Patches beinhaltet ist das schon ein kleines Sümmchen. Bei den Fließkommawerten ist das so ein Problem. Diese sind in der Jeannie 4Byte (32Bit) groß und müssten jeweils in ein Low und High Byte zerlegt werden. Das macht dann 8Bytes. Da lohnt sich keine Konvertierung. Man kann sie einfach so stehen lassen und als ASCII Zeichnen speichern.
 
@rolfdegen: Magst du das github Repository mal aktualisieren? Aktuell kompiliert das nichtmal, weil in der ST7735Display.h Functionsdeklerationen aus der ino fehlen. Und es wäre super zu wissen, welche Libraries du genau verwendest, Circular Buffer, Mcp320x usw. gibt es leider bei Arduino Librarymanager diverse von aber CircularBuffer leider nicht von Agileware.
Danke, Klaus.
 
Zuletzt bearbeitet:
Habe im Moment noch viele Baustellen. Github Aktualisierung kommt vielleicht über Ostern. Mit Arduino gibts leider ein paar Schwierigkeiten. Ich verwende im Moment noch Microchip Studio. Will aber später auf Visual Studio umsteigen.

Gruß Rolf
 
@rolfdegen: Magst du das github Repository mal aktualisieren? Aktuell kompiliert das nichtmal, weil in der ST7735Display.h Functionsdeklerationen aus der ino fehlen. Und es wäre super zu wissen, welche Libraries du genau verwendest, Circular Buffer, Mcp320x usw. gibt es leider bei Arduino Librarymanager diverse von aber CircularBuffer leider nicht von Agileware.
Danke, Klaus.

Der Quellcode benötigt zum Kompilieren mindestens Teensyduino 1.54 Außerdem benötigen Sie CircularBuffer von Agileware und Adafruit_GFX, die im Arduino Library Manager verfügbar sind.

CircularBuffer: https://www.arduinolibraries.info/libraries/circular-buffer
ST7735 GFX: https://github.com/adafruit/Adafruit-ST7735-Library
 
Das habe ich alles ... habe auch die funktions deklarationen aus der ino in der ST7735Display.h als extern nachgetragen.
Aber der Linker beschwert sich über doppelte Symbols weil ja teile der audio library überschrieben werden.
P.S. Bitte entschuldigen Sie das ungefragte Du, ich bin das aus andere Foren so gewöhnt, dass sich alle mit Du anreden.
 
Da bin ich flexibel ... hatte es jetzt mit teensyduino probiert, weil das im sourcecode stand. Kann mir aber auch andere (freie) IDEs installieren oder gcc aus der Komandozeile. Da ich nicht so gerne unter Windows arbeite, wäre natürlich eine Lösung unter Linux für mich vorzuziehen, aber ich habe auch windows in einer VM, also gehen würde es auch.
 
Ich arbeite unter Win10 mit Microchip Studio. Allerdings benötigt man noch das kostenpflichtige vMicro PlugIn.

Ich schau mal, ob ich den Source Code auf teensyduino zum laufen bringe. Hat ja am Anfang meiner Entwicklung funktioniert.
Der Editor von teensyduino ist allerdings sehr bescheiden.

Gruß Rolf
 
I'm concerned that the Mute button on my recently built Jeannie doesn't seem to work; is there a definitive way to test it?
 
Hallo Andy

The mute button has a few functions:

Long press (more than 2sec) deletes all notes. The blue rectangles on the main page light up briefly.

A note step can be muted or unmuted in the Sequencer Editor with the Mute/Panic button (10).
to be activated. If the button is pressed longer in the sequencer editor, then all sequencers
Settings deleted and restored to default values.


Keys.PNG


Hardware check with an multimeter. Press key than 0 ohm

PCB.PNG
 
Zuletzt bearbeitet:
I've just checked with a multimeter, and the switch is 0 ohms when pressed, and works as it should in the Sequencer Editor, but long press has no effect.
 

Similar threads

R
Antworten
14
Aufrufe
2K
Kootsch
K


Zurück
Oben