Jump to content

Rio

Members
  • Posts

    724
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by Rio

  1. ok... ;) jetzt check ichs... mit TransmitByte werden die 3 Zahlen seriell gesendet und (Schlussmarkierung: N) zuerst die 1, 9 und dann dass jeweilige ausgewählte: z.B. 2 Damit setzt du natürlich bei jedem senden den Envelope für alle OSC.. daraus ergibt sich 1100 0000 -> also wird Saw ausgewählt und Envelope für OSC123 und Half-Envelope für OSC45 gesetzt. ;D klar dann funktioniert das nicht für Off mit dem einfachen setzen von 0, weil dann 190 gesendet werden und das 10111110 ergibt.. fatal. Die Lösung ist der Ansatz: mit 19x setzt du allein ja schon das jeweilige Envelope. Das heisst, um den envelope zu aktivieren oder nicht, könnte man z.B. eine if-abfrage for dem Senden der beiden Werte (1 und 9) machen ;) ja kann ja mal ausprobiert werden. beste Grüße Rio.
  2. oki na das ist doch was ;D .. ich werd mir mal die Tage den Synthbereich bei dir im Code die nächsten Tage in Ruhe anschauen. Das bringt dann sicherlich mehr Klärung :). Mhh... dazu hab ich 2 kurze Fragen: // == SCP_MEMWRT (N) == // ENVType (send ENVType + ENVState!) #define SCP_ENV_OFF '0' #define SCP_ENV_SAW '2' #define SCP_ENV_SINE '3' #define SCP_ENV_TRIANGLE '4' #define SCP_ENV_SQUARE '5' hier werden ja die Werte für EnvType definiert. kannst du mir kurz erklären warum die Typen um 2 (für EnvState?) incrementiert sind, weil aus der Doku finde ich ja lediglich das: und letzte Frage: mir ist nur noch unklar, warum du im IIC_SPEAKJET_ENVCtrl for dem Setzen des EnvType folgendes setzt: IIC_SPEAKJET_TransmitByte('1'); // write envelope IIC_SPEAKJET_TransmitByte('9'); // (incl. enable envelopes for all osc) ... Wo finde ist das in der Doku beschrieben? und was macht '1' und '9' genau? Zu Register 8 finde ich eigentlich nur diese WerteTabelle (wie oben beschrieben): 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. Dann müsste ja '1' - Sine Wave und '9' - Nicht definiert sein...irgendwas versteh ich hier falsch. Ich dachte es reicht wenn man 8J(Val)N sendet. Beste Grüße, Rio.
  3. aus der speakjet doku: mal sehn... ich kanns ja mal im code testen...
  4. 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...
  5. 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" ...
  6. 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..?
  7. 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. jop, die fkt. haben ich gestern schon näher angeschaut und mit denen experimentiert. na also zu 1: ...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. muss ich testen... aber hauptsächlich habe ich mich mit der Funktionalität der Synth gestern beschäftigt :) Was meinst du denn mit "Zurückschalten"? :-\ Versteh ich nicht ganz.... Beste Grüße, Rio
  8. 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...
  9. 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.
  10. ;D congratulations for your Gameboy place on BOTB.. mhh.. try to upload application or mios1.9 within 2 seconds after switch power on. I'd similar problem.. after that all runs fine.
  11. i don't know, whether it is solved in the new build, but in Build69, there was an graphical bug in record mode.. if i record notes and rotate the Rotary Encoder for Steps at this time... the visuals of the "record screen" are drawn into the "step sequencer" screen. It's only a visual bug. But we have to check this out in new version.. Greets Rio.
  12. yes thxs... i'll do that at evening.. ;) Greets Rio.
  13. mhh... background: i've implemented a timer function for notifyevent of pressing keys from sm_matrix in my application, because i want increase/decrease CC values by pressing a key til i release the key in realtime. It's functional without sending data, but if i used MIOS_MIDI_TxBufferPut at every step (50ms) - different errors occurs -> til hanging / crashing of application at random time, or wrong visuals on LCDs.. :-\ what can i do? PS: What is about sending BPM-values? Mhh.. seems that they can be transfered in this time or i'm wrong? Are you sure that 50 ms is to less?
  14. i init the timer with 50 ms value: MIOS_TIMER_Init(0x03,62500); is that time to short to proceed 3x MIOS_MIDI_TxBufferPut?
  15. melody is so nice ;D funny...
  16. At my last changes on program, where i execute 3 MIOS_MIDI_TxBufferPut(..); functions in a Timer Intervall, i got critical states in programm... So after a duration of worrking my program crashes, hangs or does some other programm code/states :o after a time... :-X maybe it's to time critical or txbuffer is overrun... i don't know.. Can anyone help or knows a solution for that behavior? Greets Rio.
  17. ??? Beinhaltet der PIC18f eigentlich ein 8Bit oder 16Bit Prozessor? Grüße Rio.
  18. Rio

    Sin Fkt.

    you mean this file: sid_lfo_table.inc ?
  19. thx, but this infos is well-knowed. I thought unsigned must be a datatype (or a flag), because it's normal to do declarations like this (maybe in c++): int int a; // (int * int) ... so i thought i can use unsigned as a one bit datatyp (flag) too: unsigned a; // there is no compiling error! ..but maybe it's same like unsigned char a;, because the smallest alloced datatyp is an byte in memory, right? So i only have to use "bitfields" in structures, i'm right? but i have to use always 8 BIT, never less and all unused i've to declare without a name.., correct? Can i use 16 BIT Bitfield too in a struct?
  20. Rio

    Sin Fkt.

    I'll take a look into ;) i don't know how tk did it on MBSID Application? Does he used a lookup table too or a function for that?
  21. thx and sorry for german post... yes, seems that this is special at SDCC-Compiler. But i most wonder about the wasted memory if i initialise the variables at deklaration too....and they are always 0. So SDCC will init all variables at 0, i'm right? So i'll only need to initialise variables in init function, if values are different from 0, correct?
  22. also dann ist dieses unsigned nicht nur ein bool-wert, sondern ein bitfeld, wenn man das durch ein ":" und einer Zahl dahinter deklariert? geht sowas in C++ auch? hab ich noch nie gesehn... geht sowas auch ohne eine Struktur oder Union? ich glaub da kam bei mir eine fehlermeldung: unsigned test:2;
  23. Ist es möglich eine Sinus funktion zu verwenden? Wenn ich die math.h verwenden will kommt immer das: sdcc: Calling preprocessor... sdcc: Generating code... ========================================================================== Linking project error: missing definition for symbol "_sinf", required by "_output\main.o" ERROR! Process terminated with status 1 (0 minutes, 3 seconds) 0 errors, 0 warnings anscheinend wird das nicht in der LIB von TK unterstützt. gibt es eine Lösung?
  24. Hi, für meine Anwendung benötige ich globale Variablen, die mit einem bestimmten Wert initialisiert werden, und genau da liegt mein Problem: wenn ich z.B. das global definiere: unsigned char test = 2; dann wird in meinem Programm die Variable "test" trotzdem mit 0 initialisiert. Versteh ich nicht. Anhand meiner Tests wird anscheinend alles auf 0 initialisiert und ich muss per hand in der Init() Fkt. die daten nochmal initialisieren (das frisst natürlich speicher)...oder mach ich was falsch? Übrigends wird mein Programm auch größer, sobald ich eine Initialiserung in der Deklaration vornehme...obwohl ja hier die Werte auf 0 bleiben.. Kann mir das jemand erklären und was wäre nun die günstigste Variante? brauch man eigentlich dann werte, die mit 0 initialisiert werden sollen, nicht mehr explizit zu initialisieren, weil das automatisch geschieht? PS: Ist eine Initialisierung von Variablen in der Deklaration nur in C++ und nicht in C möglich?
×
×
  • Create New...