-
Posts
15,247 -
Joined
Content Type
Profiles
Forums
Blogs
Gallery
Everything posted by TK.
-
speed/memory balance, bankstick transfer question
TK. replied to th0mas's topic in MIOS programming (C)
Hi Tom, reading 320 bytes at once will cause a delay of ca. 8-10 mS, this is not acceptable. But if you would read the data on-the-fly (with each step) the delay would be ignoreable. Small calculation example: let's say you are storing the whole MIDI event in the BankStick memory, reading three bytes takes ca. 75 uS, and sending them via MIDI takes 960 uS. Since the MIDI IO is buffered and works interrupt driven, you wouldn't notice any delay caused by the BankStick, only the delay caused by MIDI transfers (which cannot be avoided...) However, this method would mean, that data has to be stored in the BankStick immediately if realtime changes should be made possible. But even this could be implemented in a way where you don't notice delays. Here again a calculation example: let's say the pattern is played with a speed of 140 BPM. The clock process is triggered each 24 mS. Saving one byte into EEPROM takes ca. 2 mS (if I remind correctly). So, if you save an edited note after a step has been played, you won't notice a delay. A data cell can be overwritten more than 1M times, so I guess that for a DIY project this method is acceptable. Advanced solution: buffered saving (store changes in a buffer, and save them after one second if no button/encoder has been moved during this time, store it immediately if a new step is selected). Thats the way how the integrated wavetable editor of MBSID is working Best Regards, Thorsten. -
midibox cv - defekt nach wackelkontakt und kurzschluss
TK. replied to captain chaos's topic in Deutsch
Hallo, der 6N139 sollte funktionieren, das haben schon mehrere Leute ausprobiert Gruss, Thorsten. -
Hallo Chris, mit ca. 10 zusaetzlichen Codezeilen in main.asm koennte man bis zu 128 digitale gates hinzufuegen. Doch die waeren dann nur statisch vergeben (heisst: feste Note, fester Kanal). Gruss, Thorsten.
-
It's mostly cheaper to use a ready-built MIDI keyboard, and to add the MIDIbox stuff. Best Regards, Thorsten.
-
no, other changes are not required. Currently I've no idea how this effect could happen, can you try out more? What does "stops working" mean - no sound anymore, or an holded note? What happens, if the slave PIC is controlled directly from the PC/keyboard via MIDI (and not from the master core via Link) Best Regards, Thorsten.
-
yep (it's under the super poly category, which is planned since 2 years now ;-)) Best Regards, Thorsten.
-
yes, there is an option which filters incoming SysEx strings, it has to be disabled within the filter menu Best Regards, Thorsten.
-
Yes, this is possible without much programming effort. Basically it works like this http://www.ucapps.de/mios_c_set_dout.html or this http://www.ucapps.de/mios_c_pic_pin.html example, but it has to be programmed in assembly language due to memory limitations within the MBSID application Best Regards, Thorsten.
-
I'm also using such a board for experiments. I bought it from Conrad ca, 15 years ago, don't know if it is still available there. Best Regards, Thorsten.
-
The X-ray looks familar to me ;-) Seems that the guy doesn't know this site: http://sid.kubarth.com/sid_dies.html Best Regards, Thorsten.
-
Ok - PIC18F4550... Das Einsynchronisieren wuerde nicht weniger CPU Zeit in Anspruch nehmen, als den Clock gleich selbst zu treiben. Somit laeuft es also auf eine Softwareloesung hinaus. Gruss, Thorsten.
-
Aehm - warum kratzt Du die Leiterbahn nicht auf, und fixt die Verbindung mit einem Kabel? Gruss, Thorsten.
-
Hi Robin, pin_value is an "unsigned int" with 10bit resolution, but for a CC an "unsigned char" with 7bit resolution must be sent. The easiest way to get the 7bit value is the use of MIOS_AIN_Pin7bitGet(pin), see also http://www.ucapps.de/mios_c_send_ain.html. It's possible to use this function within SendTremelo() as well (replace "pin" by a constant value) Best Regards, Thorsten.
-
So, let us add some keywords to this article so that the ladies will find us easier: Le Cherche MIDI not Robby Williams Nokia display SID ringtone cookbook Best Regards, Thorsten.
-
Hallo Tino, hm, wenn ich mir Deine obigen Postings durchlese, faellt mir auf, dass Dir evtl. eine wichtige Information fehlt: die MIDI Clock Synchronisierung muss man explizit aktivieren, und zwar fuer WT, LFO und Envelopes separat. Das geht entweder im CFG Menue, oder mit JSynthLib, oder (fuer temporaere Experimente) mit CC#125 (siehe auch http://www.ucapps.de/midibox_sid/sid_cc_implementation_chart.txt) Somit ist auch diese Frage beantwortet :) Gruss, Thorsten.
-
WISP628 is a project of Vouter van Oijen (voti.nl), a very friendly guy. You could ask him, how to program the ID field with his programmer, it shouldn't be so difficult to add this to the software. Or maybe he knows another solution (you can refer to this posting if you want) Best Regards, Thorsten.
-
Hi Rick, why isn't it possible with your programmer? The code just programs the ID fields from the CPU, so long the programmer doesn't overwrite the IDs again (which is very unlikely if they are all-one), then it should work Best Regards, Thorsten.
-
Some of the old guys will remember him - Rasmus is one of the first users of MB64, and he is still not tired of building even more MIDIboxes :) A MIDIbox SEQ V2 with 4 LED rows: A MIDIbox64 based MKS80 Controller: And this sweet little box is under development - a combined MIDImon and Clockbox (with MTC option), which will allow to control an Alesis HD24 remotely.
-
Hallo Tino, das erinnert mich daran, dass ich das WT Sequenzer HowTo immer noch nicht geschrieben habe (obwohl die MP3s bereits seit Tagen auf dem Server liegen ;-)) Fuer WT MIDI Synchronisierung sind folgende Werte geeignet (aus dem Source Code): ; MEMO - when MIDI sync is enabled, following WT clock rates are usefull: ; 126: 8 steps = 1/4 note ; 123: 8 steps = 1/2 note ; 117: 8 steps = 1 note [/code] Ich bin mir nicht sicher, ob es fuer den Arp guenstige Werte gibt. Er macht eigentlich sowieso nur bei hoeheren Geschwindigkeiten Sinn, um C64 typische Sounds zu erzeugen. Fuer einen klassischen Arpeggiator wuerde ich den WT Sequenzer empfehlen - einfach mal ein Muster aus KEY1, KEY2, KEY3, und KEY4 events zusammenbasteln! So kann man recht schnell solche Texturen wie hier: http://www.midibox.org/midibox_sid/mbsid_tutor_arp_notes2.mp3 oder hier: http://www.midibox.org/midibox_sid/mbsid_tutor_poly_arp.mp3 realisieren. Gruss, Thorsten.
-
Hi, it seems that the core is running at the wrong baudrate. One reason could be, that the ID header (which selects the to-COM option) contains all-ones instead of all-zeros. So long you are using ICPROG (-> MBHP_JDM) or P18 (-> MBHP_BURNER), this shouldn't be a problem, but there are also PIC programmers which just ignore the ID information, and left the original content untouched (-> all one) If this is the case, then just follow the instructions within the main.asm header of this package: http://www.ucapps.de/mios/mios_bootstrap_picstart_workaround_v1.zip Best Regards, Thorsten.
-
Hi John, short note: yes, any Note Off message will be converted internally to a Note On event with zero velocity (8n xx vv -> 9n xx 00) Best Regards, Thorsten.
-
Hi Juergen, the purpose of the parameters are described in the MIOS function overview (which unfortunately only comes with assembly examples, this will be changed sooner or later) -> http://www.ucapps.de/mios_fun.html#MIOS_TIMER_Init So, using small values is not recommented, because in this case the timer will propably more oftenly called then it could execute the appr. code. I would say, that periods < 100 uS should be prevented, periods > 500 uS should be prefered if the execution of the main program should not be stalled that much. An example for the timer usage can be found in the "analog box" application, here an excerpt: // initialize the timer - it should be invoked each mS MIOS_TIMER_Init(0, 10000); // 1 mS / 100 nS = 10000 cycles [/code] Yes, the timer should be initialized within Init(), but you are also allowed to change timer period from anywhere else if required (see clockbox -> dynamic adjustment of BPM) Best Regards, Thorsten.
-
Hi Robin, using tables (const arrays) always improve the oversight, I would go this way Best Regards, Thorsten.
-
Fuer MIDI Controller sicherlich geeignet, fuer Synths eher weniger. Ich habe vor ein paar Jahren mal mit ein paar Rabbit Development Boards herumgespielt (Z80 Derivat + NE2k Chip). Dabei habe ich auch MIDI Daten von einem Board zum anderen via Ethernet uebertragen. Das lief zwar stabil, doch das Handshaking von TCP fuehrte zu einem unkontrollierbaren Delay zwischen 1 - 50 mS und mehr. Das lag sicherlich auch an der Library, die ich verwendet habe (Teil von Dynamic C, die Funktion, um MAC Adressen ueber das IIC Interface des NE2k zu modifizieren stammt uebrigens von mir :)), doch damit war fuer mich das Thema erstmal abgeschlossen. UTP ist mir fuer MIDI zu unsicher, und ein propritaeres Protokoll zu aufwendig. Gruss, Thorsten.
-
Then I think that the problem is the ground line. Let it like it is (means: use +5V of the internal PSU), but re-route the ground within your MBSID. The jack of your audio out, the core and the SID module must be grounded starlike from a single point - best: from the C64 PSU ground (if used), or from the ground at J2 of the core module (if core is stuffed with 7805) Another point is, that the interconnections between AOUT_LC and core should be as short as possible (0.5m is already very critical). A shielded cable like used for MIDI could improve the results Best Regards, Thorsten.