Jump to content

TK.

Administrators
  • Posts

    15,254
  • Joined

Everything posted by TK.

  1. Just great! :) Best Regards, Thorsten.
  2. Yes, with MIDIsport devices it works: ground (the middle pin of the MIDI cable) has to be connected to J11:Vs, and the Tx signal of the MIDI interface (compare with MIDI Out of the core module where Tx of the PIC is connected - if you are unsure, try both possibilities) to J11:Rx The optocoupler has to be removed to avoid a short circuit Best Regards, Thorsten.
  3. In MBSEQ V3 you can set the loop start point with a GP encoder, the track end with a second GP encoder... in addition, you can rotate the pattern within the loop in the shift menu. Skip Steps are possible as well, and not to forget: the progression parameters. The possibilities are already endless :) Here some snapshots: Best Regards, Thorsten.
  4. Tip of the day: did you ever check what happens when the two wires to the MIDI In socket are swapped? Best Regards, Thorsten.
  5. Hi, it should work, there is nothing special on this MIDI interface. Best Regards, Thorsten.
  6. TK.

    MIDI-Problem

    Hallo Thomas, das Bottleneck entsteht an der seriellen Schnittstelle - es handelt sich hier um einen asynchrones serielles Interface, das heisst: feste Baudrate und vorgegebene Bandbreite, die sich nicht erweitern laesst. Heisst: wenn am Eingang bereits mit voller Bandbreite empfangen wird, und die Daten zum Ausgang weitergeleitet werden sollen, dann sollte man vermeiden, bei maximaler Auslastung noch zusaetzliche MIDI Events hinzuzufuegen - ansonsten stauen sich die Daten auf, und es kann zu einem Buffer Overrun kommen. In Deinem Projekt ist das vielleicht nicht der Fall (wie ich nach Deiner dritten Mail gemerkt habe), aber die potentielle Gefahr besteht immer. Und diese gilt es zu vermeiden. Doch mir ist eingefallen, dass die vorgeschlagene Loesung am Ziel vorbeifuehrt. MIOS_Delay() ist voellig fehl am Platze, denn sie blockiert den Mainthread. Ausserdem scheint das Problem in Deinem Programm zu sein, dass die Snapshot-Daten gesendet werden, waehrend der eingehende SysEx String noch nicht vollstaendig uebertragen wurde. Sendest Du die Daten vor oder nach dem 0xf7? Wahrscheinlich davor... und so werden sich alle nachfolgenden MIDI Parser (auch MIDI-Ox) fehlerhaft verhalten. U.u werden zusaetzliche Bytes hinzugefuegt oder von MIDI-Ox angezeigt, die gar nicht ueber die MIDI Leitung gegangen sind, weil die "State Machines" auseinanderlaufen (man darf nicht alles glauben, was MIDI-Ox anzeigt...) Eine Loesung, die dafuer sorgt, dass das MIDI Protkoll eingehalten wird, und die zusaetzlich auch die Auslastung des MIDI Out Ports ausbalanciert (so dass ein Buffer Overrun sehr unwahrscheinlich wird), sieht wie folgt aus: Der Snapshot sollte nicht sofort gesendet werden, sondern portionsweise mit jedem Aufruf von Tick() - der SysEx Parser sollte den Snapshot lediglich requesten, den Rest uebernimmt ein separater "Snapshot Handler". Diese Methode hat zwei Vorteile: die Snapshot-Events werden erst gesendet, wenn der SysEx Stream beendet wurde, und durch das portionsweise Senden kommt der Merger nach jedem Event wieder zum Zuge - ist also zwischendurch wieder etwas eingetroffen, so werden die eingegangenen Daten zuerst versendet, und die intern generierten Daten werden verzoegert. Der interne Stream wird quasi automatisch blockiert - und so sollte es im Idealfall auch sein. Hoert sich vielleicht kompliziert an, ist aber relativ einfach zu realisieren. In Tick() folgendes hinzufuegen: (ich nehme an, dass 8 Events versendet werden sollen, snapshot_ctr ist eine globale Variable): void Tick(void) { // send part of snapshot until counter is 0 again if( snapshot_ctr ) { SendMIDIEvent(8-snapshot_ctr); // this function sends a part of the snapshot, selected with the counter --snapshot_ctr; } } [/code] Im SysEx Parser den Aufruf der Komplett-Snapshot Funktion durch folgendes ersetzen [code] // request snapshot snapshot_ctr = 8; das wars. Probiere es mal aus, Du wirst ueberrascht sein, wie gut es funktioniert ;-) Gruss, Thorsten.
  7. With the MIDIsport 4x4 (and 2x2) normaly no problems have to be expected - hardware & driver work very stable Best Regards, Thorsten.
  8. TK.

    MIDI-Problem

    Wieviele Bytes werden vom Snapshot gesendet? Vielleicht kommt es zu einem Buffer overrun? Der IN Buffer ist 64 bytes gross, wenn gleichzeitig eingehende und interne Events weitergeleitet werden sollen, entsteht das typische Bottleneck-Problem. Mit dem RAM Monitor von MIOS Studio kann man das debuggen (Rx Buffer: 0x500-0x53f, Tx Buffer: 0x540-0x56f) Eine einfache Moeglichkeit waere, zwischen den einzelnen Events, die gesendet werden, ein Delay von 1 oder 2 mS einzufuegen (MIOS_Delay(2); ), um Zeitschlitze fuer die eingehenden Events freizulassen. Faustregel: 1 mS = 3 bytes Gruss, Thorsten.
  9. Which BankStick board are you using, which BankStick (part number, vendor name?) Best Regards, Thorsten.
  10. Maybe you could create a list of components you want to use, and somebody else can say, which ones are not really required - you could write this into the Wiki in order to ensure, that the same question doesn't need to be answered again and again... Best Regards, Thorsten.
  11. When the ground of your tester is connected to the cathode (pin marked with the black line), and + with the anode, it should beep (or show the current draw if no accoustic signal is available). If you test it in the other direction, it should not "beep" (-> no current draw). Unfortunately on your pictures the direction of the diode cannot be regognized, but I guess that you've already doublechecked this with my pictures? In the last months, we had several users who reported problems with the MIDI interface of their mainboard. I noticed, that you haven't mentioned yet, which kind of MIDI interface you are using...? Best Regards, Thorsten.
  12. TK.

    Motorfader-Frage

    Interessant! Zum "Fader 4": dass die 0-Position nicht exakt erreicht wird, ist ein Alps-typisches Problem, deshalb auch folgende Massnahme im Code: ;; --- special case: if target and current position <= 0x07, stop motor ;; (workaround for ALPS faders which never reach the 0x00 value) [/code] Gruss, Thorsten.
  13. 1000 mal pro sekunde (1kHz) Gruss, Thorsten.
  14. TK.

    Motorfader-Frage

    Hallo Thomas, dass es Probleme mit dem Shift Register gibt, wundert mich sehr, doch das ist vielleicht erstmal ein anderes Thema. Wie verhalten sich die Fader, wenn Du die direct_control applikation auflaedst? Hiermit kannst Du Ausgaenge des Shift Registers direkt ansteuern. Ist Fader 3 dann immer noch so langsam? Wie verhaelt es sich, wenn Fader 3 von einem H-Bridge Ausgang angesteuert wird, der zuverlaessig funktioniert? (bspw. der fuer Fader 2) Welchen 10-bit Wert erreicht Fader 3 bei Min/Max Stellung? Was sagt der Jitter Monitor, wenn die Motoren aktiv sind? Gruss, Thorsten. P.S.: meine Alps Fader laufen nach 4 Jahren zwar nicht mehr 100% gleichmaessig, doch immer noch sehr schnell. Ist bei Dir im Laufe der Zeit vielleicht der eine oder andere Fader mechanisch ueberdehnt worden?
  15. It depends on what you are planning to do with the MIDIbox. In general you can crosslink the Rx/Tx lines, since they are working at TTL level - it works exactly like described at the MBHP_USB page (MIDIbox Link port) But if you are using a MIDIbox which generates audio, like MIDIbox SID or MIDIbox FM, don't ommit the optocoupler - I tested this on my own MBSID and noticed some additional background noise Best Regards, Thorsten.
  16. Thank you Widdly, it's good that an expert looks over these tables :) Best Regards, Thorsten.
  17. TK.

    MIDI-Master-Clock

    Hallo Brain, die Pitch Funktion laesst sich aehnlich wie unter http://www.ucapps.de/mios_c_send_ain.html beschrieben realisieren - nur sendet man keine MIDI Events wenn der Fader bewegt wird, sondern aendert stattdessen die BPM Rate - das geht mit 'MCLOCK_BPMSet(pin_value >> 2);' (pin_value ist ein 10bit Wert, mit ">> 2" wird er zu einem 8bit Wert) Evtl. musst Du hier auch noch einen Offset (+48 oder so) hinzurechnen, ich weiss gerade nicht die minimale BPM Rate auswendig Ich fand die Idee fuer eine separate Start und Stop Taste eigentlich sehr livetauglich. Wenn man bspw. mit dem naechsten Beat die ersten drei Clocks deaktivieren moechte, muss man nicht lange ueberlegen, welche Tasten man nun druecken darf (welcher Clock laeuft noch, welcher wurde bereits deaktiviert), man drueckt einfach auf die ersten drei Stop Tasten. Gruss, Thorsten.
  18. TK.

    Motorfader-Frage

    Hallo Thomas, wenn 256 mal das gleiche Ergebnis gemessen wurde (der Fader sich also nicht bewegt) - wenn das analoge Signal jittert, funktioniert diese Erkennunng natuerlich nicht niemals, die Fader werden voellig unabhaengig angesteuert. auch hier: niemals - alles laeuft interruptgesteuert niemals, die Ansteuerungsroutine benoetigt weniger als 20 uS, bleiben 300 uS fuer die Verarbeitung von eingehenden MIDI Daten bei voller Bandbreite Du kannst in der Init Funktion den Zielwert einstellen, die Fader werden dann im Hintergrund bewegt, der Mainthread wird dabei nicht blockiert Deine Fragen helfen mir leider (wie auch schon in der Vergangenheit) nur wenig, mich in das Problem hineinzudenken. Wie sehr hast Du mittlerweile die Hardware modifiziert (Du hast ja auch schon in de.sci.electronics angefragt)? Welche Ergebnisse erhaelst Du mit der "mf_direct_control" Applikation, welche die Motorfader direkt (ohne MF Treiber) ansteuert - kannst Du hiermit alle 8 Fader gleichzeitig bewegen. Werden sie bei in diesem Fall langsamer? Gruss, Thorsten.
  19. Maybe it works better with a 50k pot instead of a 10k pot, could somebody try this out? The backlight has a polarity, it's a LED - therefore this is not related Best Regards, Thorsten.
  20. TK.

    MIDI-Master-Clock

    Hallo, der Test ist erfolgreich verlaufen. Mir ist aufgefallen, dass es sehr unguenstig ist, wenn man den MIDI Clock einfach nur wegschaltet, weil der Sequenzer dann u.U die angespielten Noten solange haelt und nicht loslaesst, bis er wieder Clocks empfaengt. Deshalb sendet die Clockbox nun ein Stop Event wenn ein Slave angehalten werden soll (der Sequenzer stoppt dann alle Noten), und ein Continue Event wenn der Clock wieder freigeschaltet wird. Weitere Details gibt es hier: http://www.midibox.org/forum/index.php?topic=5691.msg48932#msg48932 Die Play/Stop Button Logik entspricht nicht Deiner Beschreibung, aber sie laesst sich einfach anpassen (ich finde es so praktischer). Der Code steht in mclock.c Gruss, Thorsten.
  21. TK.

    Clockbox

    The clockbox got a new "multi MIDI Out option" based on an idea of Braintu. It allows to enable/disable the MIDI clocks of up to 8 MIDI clock slaves (sequencers, drum machines, synths) seperately and in a synchronized manner (clock will be enabled/disabled exactly on the next beat) [tt] Update V1.1: A "multi clock out" option has been added which supports 8 additional MIDI Outs. The clocks which are sent can be enabled/disabled with 8 seperate play and stop buttons. Changes will be synchronized to the beat (1/4 note) This option is based on an idea of Braintu, his full concept can be found under http://www.midibox.org/dokuwiki/doku.php?id=midimasterclock Only the stop/play function has been implemented yet, he will continue on this project. Technical details about this option: the 8 MIDI outs are available at J5 of the core module. This port is normaly used as analog input. In order to ensure, that no short circuit happens if a user uploads this application on a MIDIbox which has pots or AIN modules at J5, the MULTI_CLOCK_OPTION flag in main.h is disabled (0) by default. It has to be set to 1 to get the MIDI outs working MIDI events are sent over these outputs with the "bit banging" method. (see mclock.c, MCLOCK_SendMultiPort) The enabled MIDI clock channels are displayed with 8 LEDs There is a special schematic which describes the additional connections: http://www.ucapps.de/mios/clockbox_multi.pdf [/tt] Download: http://www.ucapps.de/mios_download.html Interconnections: http://www.ucapps.de/mios/clockbox_multi.pdf Best Regards, Thorsten.
  22. Hi, I'm normaly using my scope to measure the performance. A free IO pin is set to 1 when the function starts, and to 0 when it is finished - it gives a good feeling about the processor load. In addition, the scope can display the minimum and maximum pulsewidth. However, w/o a scope it gets difficult. You could use the integrated simulator of MPLAB, but it requires that you call the function which should be profiled with a correctly initialized memory. Since it is difficult to combine MIOS with the application in order to simulate it completely, you have to add some debugging code, located at 0x0000 (reset vector), which inits the memory and jumps to USER_Tick (not to Tick()) - this ensures, that also the stack pointers are initialized correctly This debugging code must be removed when you want to upload the application again. Best Regards, Thorsten.
  23. Btw.: I'm planning to create a 64 button/LED matrix application soon, I will use moxi's DIY button caps for this. This hardware is intented as an extension for MBSEQ, but it can also be used by other apps. Only 3 DOUT and 2 DIN registers will be required. This means, it can be easily extented to a 256 or 512 button/LED variant :) Best Regards, Thorsten.
  24. Today I've tested SDCC 2.6.0 for compatibility with the MIOS wrapper. It seems that all functions are still working... so, these are the good news :) But the bad news are, that I found a bug in SDCC during the tests - see http://sourceforge.net/tracker/index.php?func=detail&aid=1539278&group_id=599&atid=100599 So, currently I cannot recomment the usage of the most recent SDCC versions until this bug has been fixed I've released a new SDCC wrapper version v1_9a which got a fix for one of my own bugs (MIOS_HLP_Dec2BCD now working as expected) Best Regards, Thorsten.
  25. TK.

    MIDI-Master-Clock

    Hallo Brain, das ist super! Bei mir ist die Situation so, dass ich so etwas zwar schnell auf die Beine stellen koennte, sie aber ohne die entspr. Hardware nicht testen kann. Bzw., wenn ich etwas blind programmiere, baue ich vielleicht einen Bug ein, den ich mit einer realen MIDIbox die vor mir steht sofort sehen wuerde. Ausserdem liegt bei mir die Prioritaet momentan auf die Entwicklung von MBSEQ V3, anschliessend MBSID V2... Deshalb moechte ich eigentlich nur die grundlegenden Funktionen einhacken und selber testen, den Rest muesstest Du dann weiterprogrammieren. Dabei wirst Du sicherlich die eine oder andere Idee fuer Verbesserungen haben, die Du dann selbst umsetzen kannst. Ich habe heute mal die Funktion zum Senden von einem MIDI Clock ueber 8 Pins programmiert, auf dem Scope sieht es ganz gut aus. Die Pins lassen sich maskieren, und die Synchronisierung auf 1/4 Note klappt auch. Morgen werde ich mit den Clocks mal zwei MBSEQ, eine MBSID und einen RM1x ansteuern, wenn das funktioniert, werde ich die modifizierte "Clockbox" Variante veroeffentlichen. Darauf kannst Du dann aufsetzen. Falls dann spezielle Programmierfragen offen sind, kann ich natuerlich weiterhelfen. Es gibt ein paar Programmierbeispiele auf meiner Webseite, welche die Grundlagen erklaeren. Gruss, Thorsten.
×
×
  • Create New...