-
Posts
15,261 -
Joined
Content Type
Profiles
Forums
Blogs
Gallery
Everything posted by TK.
-
Hi Christan, it would be interesting, which CC value is sent. CC#123 0 should be ignored, values > 0 should turn off the LEDs. Can you confirm this? In order to doublecheck, if the configuration of the channel setting was successful: use the debug window if MIOS studio to read out address "0x8c" - it should contain 0x01 You can also write to this address. 0x00 will disable the feature, 0x01 will set it to channel 1, 0x02 to channel 2, etc... Best Regards, Thorsten.
-
This spaghetti code is mainly a "proof of concept" - it searches for a specific file (here: MBSID_P.V2) in the root directory, and returns the starting sector. It has a lot of room for improvements (e.g. I splitted the 512 byte sector into two pages, so that array accesses are faster in C) - but the code will be thrown away anyhow, since the final version will be in assembler. So, next step is to write the algorithm in assembler, and the last step is a "file seek" function, which goes through the FAT to search for a specific file offset (easy!) unsigned long partition_sector0; unsigned char partition_cluster_size; unsigned int partition_res_sectors; unsigned int partition_fat_sectors; unsigned int partition_root_entries; unsigned long partition_sector_fat; unsigned long partition_sector_root; unsigned char partition_root_sectors; unsigned long partition_sector_cl2; unsigned long partition_sector_file; unsigned int partition_file_cluster; const unsigned char filename[8+3+1] = "MBSID_P V2 "; #define EXPECTED_FILESIZE_B0 0x00 #define EXPECTED_FILESIZE_B1 0x00 #define EXPECTED_FILESIZE_B2 0x08 #define EXPECTED_FILESIZE_B3 0x00 #define SDCARD_ERROR_NONE 0x00 #define SDCARD_ERROR_MBR_MISSING_MARKER 0x01 #define SDCARD_ERROR_MBR_WRONG_PARTI_TYPE 0x02 #define SDCARD_ERROR_BR_MISSING_MARKER 0x08 #define SDCARD_ERROR_BR_UNSUPP_SEC_SIZE 0x09 #define SDCARD_ERROR_FILE_NOT_FOUND 0x10 #define SDCARD_ERROR_FILE_WRONG_SIZE 0x11 // returns != 0 on errors unsigned char ReadFile(void) { unsigned char entry, dir_sec, offset, i; // read MBR SDCARD_SectorRead(0x00000000); // references for MBR structure: // http://mirror.href.com/thestarman/asm/mbr/PartTables.htm // http://home.teleport.com/~brainy/fat16.htm // check for boot marker if( sdcard_buffer_p1[0xfe] != 0x55 || sdcard_buffer_p1[0xff] != 0xaa ) return SDCARD_ERROR_MBR_MISSING_MARKER; // check for type of partition (expecting FAT16 larger than 32MB) if( sdcard_buffer_p1[0xbe + 0x04] != 0x06 ) return SDCARD_ERROR_MBR_WRONG_PARTI_TYPE; // get first sector of partition partition_sector0 = (sdcard_buffer_p1[0xbe + 0x09] << 8) | sdcard_buffer_p1[0xbe + 0x08]; // read FAT16 boot record at sector 0 of partition SDCARD_SectorRead(partition_sector0); // check for boot marker if( sdcard_buffer_p1[0xfe] != 0x55 || sdcard_buffer_p1[0xff] != 0xaa ) return SDCARD_ERROR_BR_MISSING_MARKER; // check that bytes per sectors is 512 if( sdcard_buffer_p0[0x0b] != 0x00 || sdcard_buffer_p0[0x0c] != 0x02 ) return SDCARD_ERROR_BR_UNSUPP_SEC_SIZE; // bytes per clusters partition_cluster_size = sdcard_buffer_p0[0x0d]; // number of reserved sectors partition_res_sectors = (sdcard_buffer_p0[0x0f] << 8) | sdcard_buffer_p0[0x0e]; // number of FAT sectors partition_fat_sectors = (sdcard_buffer_p0[0x17] << 8) | sdcard_buffer_p0[0x16]; // calculate address to FAT partition_sector_fat = partition_sector0 + partition_res_sectors; // calculate address to root directory partition_sector_root = partition_sector_fat + 2*partition_fat_sectors; // max. number of root entries partition_root_entries = (sdcard_buffer_p0[0x12] << 8) | sdcard_buffer_p0[0x11]; // number of directory sectors partition_root_sectors = (partition_root_entries >> 4); // calculate address to cluster 2 (start of data) partition_sector_cl2 = partition_sector_root + partition_root_sectors; // read root directory and search for filename // reference: http://home.teleport.com/~brainy/lfn.htm partition_file_cluster=0; for(dir_sec=0; (dir_sec<partition_root_sectors) && !partition_file_cluster; ++dir_sec) { SDCARD_SectorRead(partition_sector_root + dir_sec); // searching for file in lower and upper page for(entry=0, offset=0x00; (entry<8) && !partition_file_cluster; ++entry) { // lower page for(offset=entry<<5, i=0; i<8+3; ++i, ++offset) { MIOS_MIDI_TxBufferPut(0xc0); MIOS_MIDI_TxBufferPut(offset & 0x7f); if( sdcard_buffer_p0[offset] != filename[i] ) break; } if( i == 8+3 ) { if( sdcard_buffer_p0[offset-8-3+28] != EXPECTED_FILESIZE_B0 || sdcard_buffer_p0[offset-8-3+29] != EXPECTED_FILESIZE_B1 || sdcard_buffer_p0[offset-8-3+30] != EXPECTED_FILESIZE_B2 || sdcard_buffer_p0[offset-8-3+31] != EXPECTED_FILESIZE_B3 ) { return SDCARD_ERROR_FILE_WRONG_SIZE; } partition_file_cluster = (sdcard_buffer_p0[offset+-8-3+27] << 8) | sdcard_buffer_p0[offset+-8-3+26]; } else { // upper page for(offset=entry<<5, i=0; i<8+3; ++i, ++offset) { if( sdcard_buffer_p1[offset] != filename[i] ) break; } if( i == 8+3 ) { if( sdcard_buffer_p1[offset-8-3+28] != EXPECTED_FILESIZE_B0 || sdcard_buffer_p1[offset-8-3+29] != EXPECTED_FILESIZE_B1 || sdcard_buffer_p1[offset-8-3+30] != EXPECTED_FILESIZE_B2 || sdcard_buffer_p1[offset-8-3+31] != EXPECTED_FILESIZE_B3 ) { return SDCARD_ERROR_FILE_WRONG_SIZE; } partition_file_cluster = (sdcard_buffer_p1[offset+-8-3+27] << 8) | sdcard_buffer_p1[offset+-8-3+26]; } } } } // exit if file hasn't been found in root directory if( !partition_file_cluster ) return SDCARD_ERROR_FILE_NOT_FOUND; // read first sector of file partition_sector_file = partition_sector_cl2 + (partition_file_cluster-2) * partition_cluster_size; SDCARD_SectorRead(partition_sector_file); return SDCARD_ERROR_NONE; } [/code] Best Regards, Thorsten.
-
[tt] RC22: o "menu labels" (activated if DEFAULT_LCD_LINES >= 3) now completely implemented o added keyboard transpose function for bassline sequencer. MIDI channels and keyboard zones have to be configured for L/R bassline seperately with ensemble instrument 3 and 4. The transposer uses C-3 as base note. Example configuration: Ins1 Chn 1 SpL C-3 SpU B-3 Trn 0 L Bassline sequence selected with key C-3..B-3 Ins2 Chn 1 SpL C-4 SpU G-8 Trn 0 R Bassline sequence selected with key C-4.. Ins3 Chn 1 SpL c-2 SpU B-2 Trn +12 L Bassline sequence transposed with lower keys until B-2 Ins4 Chn 1 SpL c-2 SpU B-2 Trn +12 R same as for L "Trn +12" is required in this setup to compensate the octave range of the transposer (base note C-3 is outside the selected keyboard zone c-2..B-2) o bassline and drum sequences not stopped anymore on patch changes o random generator for bassline O23 settings [/tt] Have fun! :) Best Regards, Thorsten.
-
MB SID very low output, hanging notes, PSU problems
TK. replied to synthesizerbauen's topic in MIDIbox SID
Hi, Note Off issue: MBSID can handle both, Note Off and Note On with velocity 0 - so, it would be interesting if the core really receives all Note Events. I would propose to upload the midimon application, it displays the received events - results? 2 and 3: seem to be related, it sounds like a short on your PCB. The +9V trace is routed around the output amp area - did you already visually check for small soldering clumps, solder bridges, etc.? C3 (1 nF cap) would be one of the candidates which could lower the volume if shortened (or bridged to +9V) Best Regards, Thorsten. -
You mean a single mouse-click? ;) You can easily mute/unmute multiple tracks at once by using your 10 fingers Best Regards, Thorsten.
-
This topic has been moved to MIDIbox of the Week. [iurl]http://www.midibox.org/forum/index.php?topic=11707.0[/iurl]
-
She's a beauty! Blogged :) Special thanks for the demo! LED functions: it isn't so easy like described by StrydOne, because PWM with such a high resolution cannot be handled while all the other SID engine and CS functions are running in parallel. Only possibility I see is the usage of a dedicated PWM chip, but this requires some programming knowledge (see also this forum article) Best Regards, Thorsten.
-
Great! I especially like the groaning bass sound! Blogged :) Best Regards, Thorsten.
-
The "All Notes Off" function is available now in version v2.2: http://www.ucapps.de/midio128_changelog.html Note that it's disabled by default to ensure compatibility - please let me know if you're having issues with the configuration Best Regards, Thorsten.
-
Would it be sufficient to provide CCs which allow to set the step of a single track, of a group or of all groups? In loopback mode you could achieve the desribed effects, but in difference to your idea, you could also control the steps from an external controller (or sequencer) this way Best Regards, Thorsten. P.S.: [tt] +---------+---------+---------+---------+---------+---------+........ New User ----> | Request | Request | Request | Request | Request | Request | Requ... request +---------+---------+---------+---------+---------+---------+........ <-------------- will be implemented --------------> <--------- --> somewhere burried in the forum [/tt]
-
No, it has been temporary disabled to check, if the subversion web-frontend caused the server lags in the last weeks. The repository is still accessible with a SVN client (see Wiki) Best Regards, Thorsten.
-
Blogged :)
-
Nice explanation, Seppoman! :) Actually I knew what you mean, but failed to find a video which shows this exactly. I think, that desoldering wick is the last chance for the case, that you are trying this method the first time, and you are not able to remove the solder between the IC legs by heating them up again. But applying more flux before heading up sounds like a good idea - I will try this while soldering the next boards ;) Best Regards, Thorsten.
-
It was the first time I used flux and desoldering wick after I got an hint from Seppoman - this made SMD soldering really fast (and secure) :) This is an helpful video which shows the approach: http://www.ulrichradig.de/gfx/video/SMD_einloeten.wmv Best Regards, Thorsten.
-
Yes, except for the In/Out swap it worked immediately! :) It takes ca. 30 minutes to stuff the module. Best Regards, Thorsten.
-
Thats strange, I haven't noticed this while testing/using different MBSEQ hardwares in the past. From the SW point of view, there is no reason why the LCDs shouldn't be refreshed completely (both screens are refreshed periodically). Therefore more input to replicate this issue would be really helpful. Best Regards, Thorsten.
-
Do you think that this was an issue in rc19, or could it be related to your private code changes? A typical error is to direct access RAM locations >= 0x60 w/o using BANKED access type (and ensuring, that BSR is set correctly). On such a programming error, you could easily overwrite variables of the CS. thank you! Finally it's possible to give a bassline the real SID touch :) Best Regards, Thorsten.
-
Unfortunately I swapped the MIDI In/Out labels, accordingly MIDI In and Out jack traces are connected to the wrong pins. It's easy to fix, but very annoying anyhow. Good that we ordered a prototype ;) Best Regards, Thorsten.
-
It's the free assignable parameter as described in the User Manual (search for "parameter") You can already select the sequences with the 8 row (R channel) and 8 column (L channel) buttons of the LED matrix. Just add them to your CS (w/o LEDs), it's the best solution, it's especially nice if you want to select&play a certain sequence in the edit page (you don't need to change the menu to select a different sequence) Best Regards, Thorsten.
-
Read Wilba's posting again. Best Regards, Thorsten (loves his new toy :))
-
There is neither enough RAM, nor free memory in the Patch structure to store sequences of patterns. It's a minor feature anyhow, there are enough alternative possibilities (e.g. sequencing from an external MIDI sequencer) Best Regards, Thorsten.
-
:) Nice idea, I'm missing this possibility as well! How about following solution: controlling the base note of L and R bassline via MIDI channel and keyboard zones defined for Ensemble Instrument #3 and #4 This would cover following use cases: - pattern selection via INS #1 and #2 settings as today - no transpose so long no MIDI channels are assigned to these instruments - if same channels are assigned to INS #1..4, and seperate zones for #1, #2 and #3/#4, you can control transpose from the same keyboard that you are using for pattern selection - but it would also be possible to play the basslines with different base notes from different zones or channels (-> from a different keyboard, or MIDI sequencer track) - assigning INS #3 and #4 of all SID cores to the same channel/zones would allow to control the base note of 8 basslines from the same keyboard. This could also be perfectly combined with MBSEQ (as it provides a split point for the transpose function as well) Best Regards, Thorsten.
-
Status Update: - GM5 chips will be available end of July. - I will get the PCB Prototype this or next week. I already got 5 new GM5 samples with most recent firmware for testing - money will be collected once I know the exact delivery dates for GM5 and PCBs Best Regards, Thorsten.
-
There is a new release candidate RC21 with some new features, especially useful for MB-6582 users and bassline fetishists :) [tt] o added "Log" flag to ENS->FIL menu: cutoff frequency converted through log function to achieve better linearisation of 8580 filter o Filter Keytracking parameter now also available for Lead Engine, the scaling has been slightly changed, so that the maximum value 255 leads to 1:1 tracking (e.g. if 8580 Log function activated, or an external filter is connected) o added "DOR" flag to the ENS->SID menu: Disable automatic Oscillator Reset during patch change could also be called DAORDPC flag ;-) o MB-6582 setup: swapped page up/down button, added Inc/Dec button function o support for 4x20 LCD has used for MB-6582: DEFAULT_LCD_LINES and DEFAULT_LCD_LINE_Y* can be configured in the setup_*.asm file o MB-6582 screen now centered at 2nd and 3rd line o if DEFAULT_LCD_LINES >= 3, the name of the menu will be print at the upper line TODO: add more informative messages, e.g. selected oscillators, audio channel, LFO, etc... o if DEFAULT_LCD_LINES >= 4: the value of the currently edited parameter will be displayed as horizontal meter bar at the lower LCD line TODO: display bidirectional parameters like "depth" with a left/right splitted meter TODO: update when a new OSC/Channel/SID is selected o the "blinking LCD cursor" which was set to the selected parameter position is disabled by default now (DEFAULT_LCD_PRINT_CURSOR set to 0), since it clashes with the horizontal meter output routine o added experimental features to bassline engine: - new menu page O23 which allows to use OSC2 and OSC3 as slave oscillators - waveforms of slave oscillators can be selected seperately - individual sync and ringmod flags - individual octavewise transpose - individual pulsewidth - optional static note (decoupled from master osc) for nice sync/ringmod effects or chords - phase offset - detune - TODO: Knob assignments and maybe more functions [/tt] Some of the new features are work in progress (missing planned functions are marked with TODO) Best Regards, Thorsten.
-
It seems, that the EEPROM content (which stores the default ensemble, drum and patch) is corrupted. This can lead to such effects. Other problems could be related to an incomplete application upload as well. Therefore I propose to upload the application via MIOS Studio again. Error messages during the upload will indicate, that something is going wrong (again)... Best Regards, Thorsten.
