Jump to content

TK.

Administrators
  • Posts

    15,247
  • Joined

Everything posted by TK.

  1. Yes If you prefer an "Omni" mode (this is also the answer to Chris' request), the source code has to be (slightly) modified - are you able to recompile the source code? Then I could simply tell you the changes. Otherwise I've to create a new release And yes, value 0 has no effect. The MIDI spec doesn't make clear, if this is desired or not. Here again: a simple code change (removing the condition) will help Does your sequencer send CC#123 with value 0? Then I will disable the check in the next release. Best Regards, Thorsten.
  2. http://www.ucapps.de/midibox_seq_options.html Search for "Button/LED matrix" There is also a video which shows how it is working: Open questions? Best Regards, Thorsten.
  3. TK.

    MIDIbox 808 Video

    you can also switch between sections in a pattern with a single finger tip. Together with the pattern switching function, it's much more powerful than using DJ like mutes (I would propose to request this feature from the Ablethon guys, because you will love it ;)) Best Regards, Thorsten.
  4. TK.

    SwinSID Review

    SwinSID works fine with MBSID V1, only difference: V2 allows to access the additional SwinSID registers Best Regards, Thorsten
  5. Yes, it's solved - the whole patch (+wavetables/sequences/etc) is stored in RAM. And not only this: it's stored twice! (for non-destructive modulations/knob assignments) :) Best Regards, Thorsten.
  6. Too bad, that this song never reached international attention
  7. Thank you - these are the bugs I like (because they are easy to fix ;)) Bugfix is already available in the repository (cs_menu_tables.inc) Best Regards, Thorsten.
  8. Ok, you will already find a fixed version of sid_se.inc in the repository I can understand, that this is a nice-to-have feature, but it leads to inconsistencies. The CS functions are not prepared for read-modify-write operations. They always copy CS_MENU_PARAMETER_L (visible value) to the selected value(s), therefore seperate incremental changes are not possible. So, a special handling would be required, this increases the danger for bugs if I don't test this parameter before each release. Additional inconsistency: In all menus, values are changed this way - using a seperate approach for this particular menu item can be confusing. It's also unclear, how the sequence number of the second bassline should be handled, if it is currently deselected ("-") - this could be confusing for the user as well. Therefore I reject this request. But you should be able to add such a special feature easily by yourself into your customized menu page by determining the incremental change and modifying the value directly (and not via P2R/R2P functions) Best Regards, Thorsten.
  9. Yes, use my normal email address (thorsten klose at gmx de), it seems to work more reliable. ok, I noticed this in my spreadsheet, no need for an additional email To confirm: the orders of StrydOne, Madox, Levon, /tilded/, theprotool will be sent via Wilba Best Regards, Thorsten.
  10. All orders to Australia will be sent from Germany via StrydOneWilba. Please contact him to clarify the "local" shipping costs. Best Regards, Thorsten.
  11. I activated the automatic rejection for this "spam class", since it was the typical case were emails got lost in my spamfolder (together with thousands of "penis enlargement" and "get money fast" mails) It's a quite useful information for you, because it means that your emails typically get lost if you are writing to addresses hosted at gmx, or another mailprovider who uses the same filter rules. Workaround: either use a different email address to contact me, or use the web-frontend of your provider Best Regards, Thorsten.
  12. Everbody above the 498 chips mark got a PM, if I don't get a reply within 3 weeks (or no money once the final prices are known), people below this mark will be shifted up. Best Regards, Thorsten.
  13. Should be ok. At the --498-- GM5 chip mark we've currently less than 400 PCBs, so that everybody below this mark has to wait for the next order anyhow Best Regards, Thorsten.
  14. I installed a comfortable SVN browser which allows to follow the progress of the last months, and to track new changes before the official release - for those who are interested ;) http://svnmios.midibox.org/listing.php?repname=svn.mios&path=%2Ftrunk%2Fapps%2Fsynthesizers%2Fmidibox_sid_v2%2F Best Regards, Thorsten.
  15. 500 GM5 chips and 400 PCBs are ordered for this run, next run once we've reached n x 250 chips and m x 100 PCBs again Best Regards, Thorsten.
  16. 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.
  17. 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.
  18. [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.
  19. 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.
  20. TK.

    MIDIbox 808 Video

    You mean a single mouse-click? ;) You can easily mute/unmute multiple tracks at once by using your 10 fingers Best Regards, Thorsten.
  21. This topic has been moved to MIDIbox of the Week. [iurl]http://www.midibox.org/forum/index.php?topic=11707.0[/iurl]
  22. 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.
  23. Great! I especially like the groaning bass sound! Blogged :) Best Regards, Thorsten.
  24. 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.
  25. 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]
×
×
  • Create New...