goule Posted April 3, 2008 Report Posted April 3, 2008 Hi all, back in the midibox universe ;) just have to finish my OS ...I have several MIDI sensors and until now every name was saved like this : const char CTL_NAME[17][16] = { "Joystick 1 X ", "Joystick 1 Y ", "Joystick 2 X ", "Joystick 2 Y ", "Joystick 3 X ", "Joystick 3 Y ", "Joystick 4 X ", "Joystick 4 Y ", "Pitch Bend Wheel", "Modulation Wheel", "DBeam Left ", "DBeam Right ", "Basic Knob 1 ", "Basic Knob 2 ", "Ribbon Ctrl V ", "Ribbon Ctrl H ", "Expression Pedal" }; Now I want to be able to edit/store/read those names in the BankStick. The problem is when I want to create the structure that will be receiving the data from the bankstick : if I create that kind of things ... unsigned char CTL_NAME2[17][17]; ... I get the error message "no target memory available", even with this simple command.I can easily manipulate BankStick but do I have to read it every time I want to display the name of the controller that has been touched ?? :-\ :-XThanks for helping !
goule Posted April 3, 2008 Author Report Posted April 3, 2008 Ok, what I'm gonna do is split each controller name into 2 parts, something like this :unsigned char NAME_PART1[17][8];unsigned char NAME_PART2[17][8];Much more simplier than to split into 2 groups of controllers, as the process is mostly the same for each controller.BTW, if anyone gotta better idea ... :P ;DPeace,Goule
TK. Posted April 3, 2008 Report Posted April 3, 2008 Hi Goule,welcome back! Just added you to the programmers group ;)If you reduce the strings to 15 characters + terminator (CTL_NAME[16][8]), it will fit into 256 bytes, and it will also be easier to integrate this into a BankStick structure (2^n bytes should always be prefered)Best Regards, Thorsten.
goule Posted April 4, 2008 Author Report Posted April 4, 2008 Unfortunately, 17 is my number of controllers ... gotta keep this one :-\But I could choose to go with CTL_NAME[17][15] as 17*15=255 ...This would let me 14 characters (+1 term.) for the name.But I already coded the read/write stuff for the splited name structure :Reading : for (ctl=0; ctl<17; ctl++) { for (cpt=0; cpt<16; cpt++) { octet = MIOS_BANKSTICK_Read((ctl << 4)+cpt); if (cpt<8) CTL_NAME_PART1[ctl][cpt] = octet; else CTL_NAME_PART2[ctl][cpt-8] = octet; } CTL_NAME_PART1[ctl][8] = '\0'; // On insère les bons terminateurs CTL_NAME_PART2[ctl][8] = '\0'; // de string sur les fins des 2 tableaux } // 3) CTL_CC[] : for (ctl=0; ctl<17; ctl++) { CTL_CC[ctl] = MIOS_BANKSTICK_Read(272+ctl); } and writing : for (ctl=0; ctl<17; ctl++) { for (cpt=0; cpt<16; cpt++) { if (cpt<8) error |= MIOS_BANKSTICK_Write((ctl << 4)+cpt,CTL_NAME_PART1[ctl][cpt]); // << 4 = *16 else error |= MIOS_BANKSTICK_Write((ctl << 4)+cpt,CTL_NAME_PART2[ctl][cpt-8]); // << 4 = *16 } } // Ecriture des n° de CC for (ctl=0; ctl<17; ctl++) { error |= MIOS_BANKSTICK_Write(272+ctl,CTL_CC[ctl]); } MIOS_LCD_Clear(); if (error) { MIOS_LCD_PrintCString("Erreur BankStick"); MIOS_LCD_PrintBCD3(error); } else MIOS_LCD_PrintCString("BankStick OK "); Any comments appreciated to get things even better ::) ;DBtw I hope it is not too :-X for you ... ;DCheerz
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now