Jump to content

SpeakJet Board und Applikation


Rio
 Share

Recommended Posts

  • 3 weeks later...
  • Replies 70
  • Created
  • Last Reply

Top Posters In This Topic

So, hab das Board mal komplett aufgebaut. Funzt.

Der Lowpass nimmt ja ganz schön die Höhen, dafür ist das nervige Fiepen weg.

Wie rum sind die Anschlüsse des RS232 bei http://www.ucapps.de/mbhp/mbhp_iic_speakjet_prelim.pdf zu verstehen, für Blick auf buchse von vorn oder von hinten? Also ist das die Lötseite oder die Anschlussseite?

Wenn ich den SpeakJet einschalte ertönt READY, und der SJ reagiert auf einkommende Midisignale. Wie sollte J4 im mbhp_iic_speakjet_13.board.pdf gesetzt werden? und was bedeuten die einzelnen Einstellungen:

1 SJ Out

2 D0 Ready

3 D1 Speaking

Bis jetzt ist J4 offen.

@audiocommander: Vielen dank für die gute Dokumentation.

Link to comment
Share on other sites

Hallo Rio,

freut mich, dass alles soweit gut geklappt hat :)

Wie rum sind die Anschlüsse des RS232 bei

Du kannst dich bei den Anschlüssen des RS232 Steckers auch ganz bequem nach meinem Plan richten, weil mir der prelim-Plan da auch Grübeleien beschert hatte ;)

Ich habe in meinem Plan die Ansichten farblich codiert, so dass man nicht so leicht durcheinander kommt. Die Lötseite erkennst du an der normalen Schrift (Vorderseite gespiegelt).

Aber noch besser: an 99% aller SUB-D Stecker sind die Pinzahlen vermerkt; schau mal ganz genau hin: die geprägten Pinzahlen (1,5,6,9) sollten mit der Zeichnung übereinstimmen. Die lila markierten Pins 4 und 6 sollten direkt am Stecker verbunden werden (kommen also nicht ans SJ-Modul).

Wie sollte J4 im mbhp_iic_speakjet_13.board.pdf gesetzt werden?

J4 ist kein Jumper in dem Sinne, dass eine Brücke draufzustecken wäre, sondern um zwei wichtige Pins gut erreichen zu können, die evtl. für spätere Versionen oder eigene Anpassungen benötigt werden:

"1 SJ Out" ist leider ein Fehler, das ist noch übrig geblieben als es noch keinen J3 (Line-Out ohne LowPass) und keinen J5 (Line-Out mit LowPass) gab:

D.h. J4 besteht aus:

"D0 Ready" und "D1 Speaking" haben zwei Funktionen:

- Ready: zeigt ob der Chip nach dem Einschalten bereit ist

- Speaking: D1 ist high, wenn der Chip spricht und low, wenn nicht. Damit könnte man ein visuelles Feedback geben oder Mundbewegungen synchronisieren.

Oder man kann den Chip (via EEPROM settings) so programmieren, dass D0 und D1 als Datenausgänge verwendet werden.

Hoffe das hilft erst mal,

Viele Grüße,

Michael

Link to comment
Share on other sites

was mir noch aufiel beim testen, irgendwas scheint noch nicht ganz zu stimmen..

Wenn ich über den SEQ eine Note (Channel 1) anspiele, spielt der SpeakJet manchmal was, manchmal nicht und der SJ wiederholt das Gesprochene auch nach "loslassen der taste" also nach dem Gate weiter. Dann spielt der SJ auch ganz andere Effekte hinterher oder auch gleichzeitig, wie den Schuss und das Telefon gleichzeitig... ich weiss jetzt noch nicht woran es liegt..., dürfte doch eigentlich nicht sein oder?

uppsss... was ich grad seh du hast die SpeakJet Event INs mit Jumpern gesetzt. Das hab ich noch nicht gemacht. Kann es daran liegen? Muss ich mal heut abend testen.

Grüße Rio.

Link to comment
Share on other sites

Genau, die linke Seite des Speakjets sollte komplett gejumpert sein (der mittlere muss nicht sein, stört aber auch nicht).

Das von dir beschriebene Verhalten sollte nicht sein.

Was genau für einen MAX-Chip hast du?

Bringt es was, wenn du alles ausschaltest und die IIC-Verbindung unterbrichst? (sozusagen ein kompletter reset) und dann wieder alles verbindest und einschaltest?

Grüße,

Michael

Link to comment
Share on other sites

..lag an den offenen INs. Nun funzt alles so wie es soll 8).

Habs gestern getestet und wie du gesagt hast, musste der SpeakJet "resetet" werden - also mal stromlos gemacht werden (danke für die Info) .. Auf jedenfall klingt das schon mal ganz nett.

Hab jetzt den SUB-D Anschluss gelötet. Kann ich eigentlich direkt ein serielles Verbindungskabel zum RS232 Com-Port des PCs anschließen, weil in deiner Doku stand ja das man das nicht direkt darf wegen der 12V vom PC?

Link to comment
Share on other sites

Hab jetzt den SUB-D Anschluss gelötet. Kann ich eigentlich direkt ein serielles Verbindungskabel zum RS232 Com-Port des PCs anschließen, weil in deiner Doku stand ja das man das nicht direkt darf wegen der 12V vom PC?

Ja, denn dafür ist ja jetzt der MAX232 da ;)

Man darf das 12V Signal nur nicht direkt an den seriellen Eingang des SpeakJet hängen, da der nur TTL-Level hat.

Grüße,

Michael

Link to comment
Share on other sites

mhh.... irgendwie macht das teil probleme ??? Wenn ich das serielle Kabel (also im ausgeschalteten Zustand beider Geräte) mit dem Com-Port verbinde, dann beides einschalte, den PhraseAlator starte und verschiedene Aktionen ausführe, dann spinnt der SpeakJet rum, spielt effekte und phrasen gleichzeitig und das PhraseAlator-Programm hängt sich nach ner Weile auf...

ich hab jetz mit 9600 baud und Com 1 getestet.

PS: eventuell kann das auch an den Einstellungen die mein Grafiktablet Wacom benutzt hat liegen. Das hing vorher auch am Com1 Port. Als der Dienst fürs Tablet noch an war, hat der SpeakJet gleich irgendwelchen quatsch gemacht. Das PhraseAlator Prog. hat dann gar nicht auf den Port reagiert. Aber den Dienst für das graphical Tablet habe ich ja nun gestoppt.

Jemand eine Idee?

Im gegensatz zu der RS232 Schnittstelle funzt das MIDI-IN einwandfrei.

TK wrote in SJ-Schematic:

COM Port only required if

SpeakJet should be controlled

by PC as well.

The serial stream goes through

the PIC16F88 and will be merged

with received data from IIC port.

Baudrate: 19200 !!!

(not the default baudrate of 9600)

The received IIC data is also

forwarded to COM Rx (for debugging)

ich kann wie gesagt erst immer abends testen.. so dass ich aus den worten vermute das der PhrasAlator auf 19200 gestellt werden muss, richtig?

Link to comment
Share on other sites

  • 1 month later...

Hallo Rio,

jo... also wie gesagt, bei mir macht das Note Off auf grund der zu kurzen Zeit zwischen den NOTEON/OFF signale zu Problemen, also es hängt der Ton sozusagen, aus welchen Gründen auch immer.

Es ist wahrscheinlich cleverer, so wie du schon gesagt hast, das an deiner Applikation einzustellen/zu verändern, anstatt dass ich Hüftsprünge im meiner Applikation tue...  ;D

Muss ich was besonderes beachten um dein Projekt neu zu übersetzen, um das NoteOff zu ignorieren? Ich benutz Code::Blocks..

(Falls du es selber machen kannst, wär auch cool, aber kein Muss)

PS: man könnte ja dann beide precompilierten Hex-Dateien in deinem KII Paket anbieten (so wie das torsten mit setup_6581.hex und setup_8580.hex für die MBSID auch macht), da sich eventuell einige leute nicht die mühe zum neu übersetzen machen würden.

Dann würde es z.B. eine KII_2.hex und eine KII_2_NoteOff.hex geben.

Was meinst du?

Grüße Rio.

nachdem ich im Augenblick überhaupt keine Zeit habe und wenn einige Minuten frei sind, ich mit der Entwicklung der nächsten kII -Version beschäftigt bin, die schon ziemlich weit fortgeschritten ist, kann ich das für das nächste Release einplanen.

Ansonsten musst du das bitte im Augenblick selbst probieren, da es mir im Augenblick einfach zu viel Zeit kosten würde, die alte Version rauszukramen, zu ändern, zu kompilieren und zu testen.

Es ist ja an sich nichts komplexes, schau dir doch einfach mal die betreffenden Stellen (wie schon erwähnt in main.c, MPROC_Notify) an:


// parse channels
switch(channel) {
case SJCH_SOUNDCODES:
if(evnt2 > 0) {
IIC_SPEAKJET_MSA_Soundcode(evnt1);
} else if( (evnt2 == 0) && (evnt1 == lastNoteDown[channel]) ) {
IIC_SPEAKJET_MSA_Stop();
}
break;
case SJCH_ALLOPHONES:
if(evnt2 > 0) {
IIC_SPEAKJET_MSA_Allophone(evnt1);
} else if( (evnt2 == 0) && (evnt1 == lastNoteDown[channel]) ) {
IIC_SPEAKJET_MSA_Stop();
}
break;
case SJCH_FX:
if(evnt2 > 0) {
IIC_SPEAKJET_MSA_FX(evnt1);
} else if( (evnt2 == 0) && (evnt1 == lastNoteDown[channel]) ) {
IIC_SPEAKJET_MSA_Stop();
}
break;
case SJCH_PERCUSSIVE:
if(evnt2 > 0) {
IIC_SPEAKJET_MSA_Percussive(evnt1);
} else if( (evnt2 == 0) && (evnt1 == lastNoteDown[channel]) ) {
IIC_SPEAKJET_MSA_Stop();
}
break;
[/code]

Du muss eigentlich nur den [tt]"else if { MSA_Stop() }"[/tt] teil bei den spracherzeugenden Funktionen auskommentieren.

Darauf komplett zu verzichten ist nicht sinnvoll, weil es für den Synthie-Modus auch gilt.

Außerdem macht es wohl keinen Sinn dieses eine Feature extra zu releasen, da es eine riesige Menge an unterschiedlichen Kompilierungsoptionen gibt. Wenn ich da alles Kombis (mit/ohne LCD, versch. LCD größen, etc, etc... einfach mal in die #define sektionen reinschauen) durchkompiliere werd' ich glaub' ich wahnsinnig...

Anders sieht es aus, wenn es deine Applikation mal gibt und die funzt, dann kann ich gerne verschiedene hexes zur Verfügung stellen.

v.Grüße,

Michael

Link to comment
Share on other sites

ok abgemacht..., ich werd mal deine App. neu compilieren.

Gute Idee mit dem #define in deinem kommenden Release.

Sobald meine Applikation öffentlich gemacht wird, kann ja dann solche eine gesonderte precompilierte K-II Hex  (ohne die Verarbeitung von NOTE Offs) bei dir beiliegen..

PS: Das Problem mit dem gehaltenem Ton entsteht z.B. auch wenn mein MB SEQ zu schnell Note Offs zu deiner App. sendet. Also es ist ja vom sendenden device unabhängig..

Beste Grüße, Rio.

Link to comment
Share on other sites

PS: Das Problem mit dem gehaltenem Ton entsteht z.B. auch wenn mein MB SEQ zu schnell Note Offs zu deiner App. sendet. Also es ist ja vom sendenden device unabhängig..

Um genau zu sein, ist das kein Problem von meiner Anwendung, sondern vom SpeakJet. Beim NoteOff wird ein 5 byte langes SCP Kommando gesendet, das die Aussprache stoppt und den Input-Buffer freimacht. Wenn alles ein wenig zu schnell geht, kann ein Ton stehen bleiben. Nachdem die NOTE_OFF Funktion aber eh' kein Killer-Feature ist, kann man das halt abschalten. Aber wie gesagt, bei normalem Gebrauch tritt das ziemlich selten auf und die Möglichkeit die Sounds zu verkürzen fand ich sehr sinnvoll, deshalb hab ich's angelassen.

Link to comment
Share on other sites

Also ich hab gestern mal deine Applikation neu übersetzt. Komischerweise wurde die appl. ohne das ich was geändert habe fast 2kb größer (30kb)  :-X

Ja und nach ewigen Tests, ist dein Feature mit den NoteOff-NoteOn -> Vol = 0 Converter schon an vielen Stellen sinnvoll. ;)

Nach ein bißchen rumspielen mit den Noten und den CCs viel mir auf, dass du die Osc 1..5 immer "enveloped" startest (bei Ch11..15) . Die OSC sollten ja auch ohne "envelope" funktionieren. Aber ich finde keine Deaktivierung der Envelope in deiner Beschreibung.

Was mich dabei noch ein wenig stutzig machte - wenn ich veränderungen für die Freq. des Envelope oder für das Volumen via CC vornehme, wird bei jedem neuen Tastenanschlag diese Einstellungen wieder zurückgesetzt und die Freq. für OSC+ENV gleichgesetzt. D.h. Alte Werte die per CC dafür gesetzt worden sind, gehen bei neuen Tastenanschläge verloren. Das Phraselator Programm kann dagegen solche Einstellungen unabhängig voneinander ansteuern.

Ich bin jetzt ein wenig ratlos...

Link to comment
Share on other sites

Hallo Rio,

Also ich hab gestern mal deine Applikation neu übersetzt. Komischerweise wurde die appl. ohne das ich was geändert habe fast 2kb größer (30kb) :-X

Das ist seltsam. Ich habe die Anwendung in den letzten Wochen dramatisch erweitert und bin immer noch auf 16 kB. Soweit ich mich erinnere hat die alte Hex-Syx-Datei maximal 14 kB, also sind es 16 kB mehr (das ist mehr als das doppelte!!): vermutlich hast du die mios_lib_sdcc eingebunden?

Das sollte nicht notwendig sein.

Ja und nach ewigen Tests, ist dein Feature mit den NoteOff-NoteOn -> Vol = 0 Converter schon an vielen Stellen sinnvoll. ;)

ja, ne? Naja, es gibt sicherlich noch einige Stellen an denen das verbesserungswürdig ist. V.a. ist mir aufgefallen treten Probleme auf, wenn mehrere Tasten sehr hastig gedrückt werden.

Ich checke nochmal alles ab und vielleicht kann ich was verbessern;

aber wie gesagt, nachdem meine aktuelle Version schon 0.2.2 beträgt (0.1.4 oder 0.1.5 sollte veröffentlicht sein) wäre es ein wenig planlos jetzt hektisch in einer uralt-Version rumzuändern.

Du kannst aber davon ausgehen, dass in den neuen Releases theoretisch alles kompatibel sein sollte.

Nach ein bißchen rumspielen mit den Noten und den CCs viel mir auf, dass du die Osc 1..5 immer "enveloped" startest (bei Ch11..15) . Die OSC sollten ja auch ohne "envelope" funktionieren. Aber ich finde keine Deaktivierung der Envelope in deiner Beschreibung.

habe mich eigentlich bemüht alles gut zu kommentieren:


// set OSC Freq & Lvl based on incoming Note & Velocity
IIC_SPEAKJET_ENVFreq(evnt1); // base freq for ENV
IIC_SPEAKJET_OSCFreq(targetOsc, evnt1); // play note
IIC_SPEAKJET_OSCLvl(targetOsc, evnt2); // set velocity
[/code]

D.h. du kannst gerne testhalber [tt]IIC_SPEAKJET_ENV_Freq(evnt1);[/tt] deaktivieren.

Soweit ich das verstanden habe, gehen aber alle Oszillatoren durch den Envelope (s. Fig 3 SpeakJet 5 Channel Synthesizer Block Diagramm, S. 4). D.h. wenn ich den Envelope nicht der Frequenz anpasse, auf die ich den OSC stelle, kommt nach meinem Verständnis kein harmonischer Klang heraus.

Was mich dabei noch ein wenig stutzig machte - wenn ich veränderungen für die Freq. des Envelope oder für das Volumen via CC vornehme, wird bei jedem neuen Tastenanschlag diese Einstellungen wieder zurückgesetzt und die Freq. für OSC+ENV gleichgesetzt. D.h. Alte Werte die per CC dafür gesetzt worden sind, gehen bei neuen Tastenanschläge verloren. Das Phraselator Programm kann dagegen solche Einstellungen unabhängig voneinander ansteuern.

Das kannst du auch!

[u]1. Via "so ist es gedacht":[/u]

Du musst einfach einen entsprechenden Midi-Kanal auswählen, denn das Einstellen der Frequenzen/Volumes via CC ist nicht im Zusammenspiel mit der Tastatur im Synth-Modus (CH 11-16) gedacht, sondern mit der Tastatur im Speech-Modus (CH 1-10)!

D.h. stell den Midikanal auf Sprache ein (z.B. CH 3), triggere ein paar Sounds und drehe dann an den CCs rum ;D ..dann weißt du wie's gedacht ist.

Die "Synth"-Modi (Midi-Kanal 11-16) sind dann nichts anderes als vordefinierte ENV/OSC-CCs nur dass die stimmstabil sind, d.h. dass du das harmonisch nutzen kannst (was via CC nicht möglich ist!).

Ein "Zurückschalten" der OSC/ENV Einstellungen nach einem NoteON/OFF Signal sind meines Erachtens nicht sinnvoll, da diese Einstellungn auch nach einer Sprachausgabe nicht zurückgestellt werden. Das würde zu viel Aktion bedeuten und ich wüßte nicht, was das bringen sollte. Außerdem klingt mir das eher nach einer Anwendung für zwei SpeakJets, die parallel betrieben werden (meine Applikation ist aber (noch?) nicht Multimodul-kompatibel!).

[u]2. Via Code:[/u]

Dafür gibt es beide Funktionen separat:

[code=IIC_SPEAKJET.h:168]
void IIC_SPEAKJET_ENVFreq(unsigned char value) __wparam {
// 0..127, SCP_FREQ_MAX is 3999
void IIC_SPEAKJET_OSCFreq(unsigned char osc, unsigned char value) __wparam {
// osc = 1..5, value = 0..127, SCP_FREQ_MAX is 3999

Ich weiß keinen sinnvollen Anwendungszweck für eine getrennte Einstellung, weil der SJ ohnehin schon aufgrund der fehlenden Fließkommagenauigkeit ziemlich ... naja, ::) so halbmastschräg ist (manchmal), da brauch ich nicht noch einen schrägen Envelope, aber du kannst ja gerne die Funktionen direkt ansprechen. Dafür habe ich die Applikation ja in verschiedene Dateien aufgeteilt:

- IIC_SPEAKJET.h/.c Kernfunktionen des Speakjet

- main.h/.c Beispielhafte Implementation und MIDI-Control des SJ

Die kommende Version enthält einige kleine Änderungen, viele Korrekturen und kleinere Bugfixes und ein neues Modul: eine SensorMatrix, die die Jaw/Tongue Enunciation Controls nutzt, die in der veröffentlichten Version schon angelegt ist.

Hoffe, ich konnte einige Fragen klären,

Grüße,

AC

Link to comment
Share on other sites

mhhh.. also die precompilierte HEX-Version in deinem KII_2 Appliklation zum download (dokuwiki) ist doch 28kb groß, oder nicht? die mios_lib_sdcc habe ich nicht eingebunden.

    // set OSC Freq & Lvl based on incoming Note & Velocity

    IIC_SPEAKJET_ENVFreq(evnt1); // base freq for ENV

    IIC_SPEAKJET_OSCFreq(targetOsc, evnt1); // play note

    IIC_SPEAKJET_OSCLvl(targetOsc, evnt2); // set velocity

void IIC_SPEAKJET_ENVFreq(unsigned char value) __wparam {

// 0..127, SCP_FREQ_MAX is 3999

void IIC_SPEAKJET_OSCFreq(unsigned char osc, unsigned char value) __wparam {

// osc = 1..5, value = 0..127, SCP_FREQ_MAX is 3999

jop, die fkt. haben ich gestern schon näher angeschaut und mit denen experimentiert.

na also zu 1:

Du musst einfach einen entsprechenden Midi-Kanal auswählen, denn das Einstellen der Frequenzen/Volumes via CC ist nicht im Zusammenspiel mit der Tastatur im Synth-Modus (CH 11-16) gedacht, sondern mit der Tastatur im Speech-Modus (CH 1-10)!

...na doch eigentlich sollen die doch genau für den Synth gelten, so stehts in deiner doku:

(CH 11-16) Synth Oscs

(CC 101-106) Synth CCs Freq..

ok und so wie du es oben beschreibst klappt das ja auch.. ich oder der Seq :) spielen einen OSC an (z.B. Ch11) und solange der gehalten ist kann ich auch alles mit den CCs ändern. Nur wenn der OSC wieder angespielt wird, werden alle CC Werte leider wieder zurückgesetzt (also alle einstellungen für env. freq / vol vergessen sozusagen) ...mhh.. vielleicht muss ich für meine zwecke deinen Code wirklich selber noch anpassen.. falls du n neues release fertig hast, lass mich wissen, damit ich nicht im alten code zulange rumfummel  ;D..

ok, und mit dem deaktivieren des Envelops, kam ich darauf, weil in dem Phraselator man ja den Envelope zuschalten kann oder nicht (must mal schauen).

Ich habe aber in deiner Doku bisher solch einen Befehl nicht gefunden.. es wird immer einer der Waveshapes für den ENV genutzt.

D.h. stell den Midikanal auf Sprache ein (z.B. CH 3), triggere ein paar Sounds und drehe dann an den CCs rum Grin ..dann weißt du wie's gedacht ist.
muss ich testen... aber hauptsächlich habe ich mich mit der Funktionalität der Synth gestern beschäftigt :)

Ein "Zurückschalten" der OSC/ENV Einstellungen nach einem NoteON/OFF Signal sind meines Erachtens nicht sinnvoll, da diese Einstellungn auch nach einer Sprachausgabe nicht zurückgestellt werden.

Was meinst du denn mit "Zurückschalten"?  :-\ Versteh ich nicht ganz....

Beste Grüße, Rio

Link to comment
Share on other sites

Nur wenn der OSC wieder angespielt wird, werden alle CC Werte leider wieder zurückgesetzt (also alle einstellungen für freq/vol vergessen sozusagen)

Also nochmal:

CH 1-10: Stimm-/FX-Ausgabe

CH 11 bis 15: OSCs 1-5

CH 16: Multi-Mode für alle OSCs

die CC's funktionieren Channel-übergreifend, d.h. CC#111 macht auf CH1 das gleiche wie auf CH12!

- mit dem ControlChange der OSC-Frequenc für die OSCs 1 bis 5 manipulierst du direkt die Frequenz des betreffenden Oszillators!

- mit einem Tastendruck im Synth-Mode (CH 11-15) passiert genau das gleiche: der OSC wird auf die Frequenz der Tonhöhe eingestellt.

Warum sollte jetzt, wenn du die Taste loslässt, der zuletzt eingestellte CC Wert wieder kommen? Ist doch total unlogisch. Der zuletzt eingestellte Wert war der der Taste. (Klar kannst du das einprogrammieren, gerne, mir ist jedoch schleierhaft, warum du das möchtest?!)

Die Möglichkeit OSC-Frequenzen per CC einzustellen ist kein Filter oder Effekt, das ist die Basis-Frequenz des Oszillators! Wenn du das veränderst, veränderst du die zugrundeliegende Basis der Tonerzeugung.

Und der OSC behält halt einfach die zuletzt wiedergegebene Frequenz. Ob die Eingabe per CC oder per NoteON/OFF erfolgt ist unrelevant.

Im übrigen verhält sich der SJ Chip nach dem gleichen Prinzip: Wenn ein Sound per MSA getriggert wird, bleiben alle OSCs und der ENV in der Position der letzten Spracherzeugung. Also dann sind deine letzten CC-Werte auch weg :-\ ??

Mit anderen Worten: wenn du unbedingt die letzte OSC-Frequenz /-Lautstärke, die per CC kam, behalten willst, dann darfst du halt keine Klaviatur-Taste drücken; das ist ja das gleiche also ob du den CC-Schieber veränderst?!

Edit:

mhhh.. also die precompilierte HEX-Version in deinem KII_2 Appliklation zum download (dokuwiki) ist doch 28kb groß, oder nicht? die mios_lib_sdcc habe ich nicht eingebunden.

Die Hex-Datei ist exakt 29.376 Bytes groß (= 32kB)

Ich dachte, du meinst die SYX-Datei, denn die wird ja übertragen. Und die ist in dieser Version 13.024 Bytes (=16 kB) groß. (Hab ich im letzten Posting auch durcheinander gebracht ;)...

Also hier scheint alles in Ordnung zu sein.

Link to comment
Share on other sites

jo ok... das mit den synth seh ich ja im Prinzip genauso ... Basisfreq = Tonhöhe der Note.

..doch wie verhält es ich mit den Envelops? ich vermisse halt das Aktivieren und das komplette Deaktivieren der Envelope-Frequenz und die Envelope-Frequenz sollte getrennt unabhängig von den Noten einstellbar sein...

damit lässt sich meineserachtens viel mehr am sound experimentieren...

Warum das feature missen wenn der Phraselator es vormacht..?

Link to comment
Share on other sites

Es gibt nicht mehrere Envelopes, sondern nur einen.

Ich glaube, jetzt wäre der passende Moment, dass Du Dir nochmal das Datenblatt des SpeakJets durchliest und das zugrundeliegende Funktionsprinzip des Chips anschaust.

Meine Anwendung ist kein Zaubermittel das aus dem SpeakJet einen multitimbralen GSM Synthie macht :-\

Edit zum Edit:

..doch wie verhält es ich mit den Envelops? ich vermisse halt das Aktivieren und das komplette Deaktivieren der Envelope-Frequenz und die Envelope-Frequenz sollte getrennt zu den Noten einstellbar sein...

Ich habe das Gefühl, dass wir uns hier im Kreis drehen. Wenn in den letzten Postings, für die ich heute schon über eine Stunde aufgebracht habe, keine ersichtliche Antwort dabei war: die Quellen sind veröffentlicht, du kannst gerne deinen eigenen Code schreiben.

;)

noch ein Hint: wenn der Envelope auf 0 Hz steht, hörst du gar nichts.

Und bitte schau doch jetzt mal in das Datenblatt. Da steht das nämlich.

und ein letzter Hint: du kannst auch in meiner Anwendung die Env-Frequenz getrennt von der OSC-Frequenz einstellen (deshalb gibt es ja die CC-Controls).

Link to comment
Share on other sites

ich glaub wir reden ein klein wenig aneinander vorbei... ich weiss das es nur einen ENV gibt..und ich meine einfach nur das der von den OSCs unabhängig behandelt werden sollte, so wie der Phraselator es macht.. Schau dir den Phraselator im "Synth-Modus" einfach an... da gibts ne checkbox "Envelope aktivieren" ...

Link to comment
Share on other sites

und zu deinem letztem hint  ::): die wird jedesmal in deinem Code auf die BaseFreq gesetzt, wenn man ne neue note sendet...

egal.. hab das gefühl, dass du es nicht hören willst. Es muss eine möglichkeit geben den ENV komplett zu aktivieren/deaktivieren so wie's der Phraselator macht, das hat mit ENV auf 0 stellen nix zu tun.

Ich finde deine  K2 wirklich gut, und das sollte auch keine destruktive Kritik sein... aber das war halt nur ne idee was ich beim phrasalator gesehen hab...

Link to comment
Share on other sites

aus der speakjet doku:

The first two bits are used to select the type of Envelope

  00 = Saw Wave

  01 = Sine Wave

  10 = Triangle Wave

  11 = Square Wave

The 3rd, 4th, 5th and 6th bits are not used.

The 7th bit is used to select if Oscillators 1, 2 and 3 are enveloped.

  0 = Not Enveloped.

  1 = Enveloped.

The 8th bit is used to select if Oscillators 4 & 5 are half enveloped.

  0 = Not Enveloped.

  1 = ½ Enveloped + ½ Not Enveloped.

All bits are sent in a single value.

Example: To turn off the envelopes: “8J0Nâ€

Registers 9 and 10 are not used.

mal sehn... ich kanns ja mal im code testen...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share


×
×
  • Create New...