Jump to content

Phatline

Members
  • Posts

    1,285
  • Joined

  • Last visited

  • Days Won

    72

Everything posted by Phatline

  1. hei. @ table, na a life-changeable log? table? or a table holds all 16bit possibilitys? [65536][65536] while [lfo_value][curve] - that ram i cant see in a µC (dont say i dont should use 16 bit values, the program doing it well, i have other reasons for that...) such table could calculate in a a background task - with the give CURVE-Parameter,, endlessly, and could be used then live... but in the end i have to ask which value should be which tablecell anyway. @ least i want to try do the math, - and i will see timing then. if there is a way for log with this compiler(gcc?) gcc and frtos/mios? what did i wrong. i tryd double floats... -mike
  2. Problems Solution is: were we have to add this to the lokal makefile: ORGINAL PROBLEM POST Hei. I have made now, a LFO (UP/DOWN Ramp & Triangle), now i need to add a logaritmic ammount to get CURVES/SINEs on the LFO Straight Lines, i want to do this with a Encoder. My LFO Values going from 0-65535 (16bit, AOUT-Ready) My Curve CC also goes from 0-65535 (Curve means Logaritmic) I have to execute this code every milli seconds, to change the AOUT, and every 75ms to update the SCOPE-Display I tryd around and this is code is working with stdi0 and math.h, outside of mios: (Working) #include <stdio.h> #include <math.h> double cc = 32000; double curve = 64000; int endresult; int main (void) { printf("exponential_input 0-65535: "); scanf("%lf", &curve); endresult = cc * (log(curve) / log(cc)); printf (" %d \n", endresult ); return 0; } now in mios my code it is also working when i fill in fixed values: (WORKING) //calculate Exponential double lfo = 65000; double curve = 32000; double lfo_result; lfo_result = lfo * (log(curve) / log(lfo)); if(lfo_result > 65535) { lfo_result = 65535;} if(lfo_result < 1) { lfo_result = 0;} but when i use my arrays instead of this fixed values, i become a error (NOT WORKING) //calculate Exponential double lfo = aout[channel_strip].lfo[y]; double curve = aout[channel_strip].v_cc[26+(y*8)]; double lfo_result; lfo_result = lfo * (log(curve) / log(lfo)); i also tryed: (NOT WORKING) double lfo_result = aout[channel_strip].lfo[y] * ( log(aout[channel_strip].v_cc[26+(y*8)]) / log(aout[channel_strip].lfo[y]) ); error is: (errno) dont know how to handle this, i need a cc-controlled logaritmic - any ideas? here a goodie:
  3. got it... this works: (will post video once timing gets better...) // SCOPEs // WAVE FORM DISPLAY static u16 upd_count = 0; upd_count++; if ( upd_count >= Scope_Upd_Rate || flag.update_LCD == 1) { upd_count = 0; // U P D A T E R A T E // Scope Lines static float h = APP_LCD_WIDTH; static float v = APP_LCD_HEIGHT/65536.0; // scale u16 range to 0-64 //u16 range = 0 - 65536 half is: 32768 static int H = 0; // horizontal position static int V = 0; // vertical position static int y = 0; // scope/lfo number static int x = 0; // use "channel_strip" float time = lfo_cycle[x][y]; // calculate H V Positions V = (65536-aout[x].lfo[y]) * v; if(V <= 0) { V=0;} if(V >= 63) { V=63;} //65536-lfo: invert screen v-whise H = h / time * counter[x][y]; if(H <= 0) { H=0;} if(H >= 127) { H=127;} if ( sync_waiting == 1 ) { MUTEX_LCD_TAKE; //////// CLEAR S C O P E //////// MIOS32_LCD_DeviceSet(14); MIOS32_LCD_CursorSet(0, 0); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 1); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 2); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 3); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 4); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 5); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 6); MIOS32_LCD_PrintFormattedString(" "); MIOS32_LCD_CursorSet(0, 7); MIOS32_LCD_PrintFormattedString(" "); MUTEX_LCD_GIVE; } //////// show WAVE-FORM - S C O P E //////// MUTEX_LCD_TAKE; MIOS32_LCD_DeviceSet(14); APP_LCD_GCursorSet(H,V); // (h, v) set insert Position for Bitmap APP_LCD_Data(1 << ( V % 8 )); MUTEX_LCD_GIVE;
  4. and now? whats about VCA shematics or any little bit of doku? i want to know what P1-P4 are doing? is this some CV-Bipolar-Offset, or CV-Gain, or Audio Gain... where to measure and which Value to set? what happens if i have some failure while building, or put some beer over it, how can i debug without sheme? Board files i understand, but shemes? what i found out: (wiki)
  5. thx for the link, interesting stuff! that closes the cycle i think... 2164 - quad, and ssm2044 duo yes come on when thats a know problem no one changed the wiki, or told a admin to change it on ucapps.de - a hell to desolder this double sided boards... really? i make a start, and document at least in the ssm2164 getting started wiki... allthough the ssm2164 is unipolar - which is no problem because we have the full range and for: **All SSM2044 builders:**\\ The module is designed with this (wrong) bipolar range, so you don't need to change anything on your AOUT_NGs. i will at least for test phase need higher voltages - because i make "distortion > pre-vcf-vca(filterdrive) > vcf > pre-vca(drive) - channelstrips - and i noticed when i encrease the cv-input of a vca dramatically (that was a 303 clone) i got hot effects.
  6. na didnot work APP_LCD_GCursorSet(H,(63-V)); // (h, v) set insert Position for Bitmap APP_LCD_Data(0x80 >> ((63-V) % 8)); give me something like this: --------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------. ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** --------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.--------------------------------.
  7. ok cable worked -thx one aout-module is not functional > looks i killed the dac somehow. the other module is working in unipolar mode from 0-11,4V all right but in bipolar mode it is only working from -+3V - but i have connectecd +-12V... is this normal?, in doku is written that moog works with -+5V, (the ssm2164 working with the voltage?), or should i drive the the aout with +-15V or even more? i controlled all Resistors with colorcode, and also the inprint of the trimmpot is correct, changed a tl074n also, i have about -12V @pin 11 and +12 @ pin 4 - also with plugged in tl074n i set the jumpers to bipolar mode like describt in the ucapps.de side notice that the R200-Trimpots are getting worm, i have not connected any modules on the analog output... so it could be a conceptional thing (low resistor values) of the circuit that they get warm (+12V 2.2K >-200OhmTrim-<1,5K- >12V) so maybe not a failure i measured the resistance like below:
  8. so this i solder a new cable, and will report the result. many thx!!! mike
  9. hei, i have 2 of them here, booth not working , they have not been working till the day i first used my code, but since it did not work i uploadet the tutorial_16 svn and edit the code for what I think is to be set for AOUT_NG: // initialize AOUT module AOUT_Init(0); // configure interface // see AOUT module documentation for available interfaces and options aout_config_t config; config = AOUT_ConfigGet(); config.if_type = AOUT_IF_TLV5630; config.if_option = 0; config.num_channels = 8; // INTDAC: only 2 channels supported, 8 channels pre-configured for your own comfort config.chn_inverted = 1; AOUT_ConfigSet(config); AOUT_IF_Init(0); The LED is lighting up, and i followed the connection from the chip 541 till the DAC >>> from the beginning i have done right; to be sure for that, i copyed all info i found about that weired connection: and i think there is something wrong with the documentation, the photo of the ng shows i (i think) a different pinning) also in every shematic or tutorial or wiki you get other names for that pins - its very confusing - can anybody check my multicolor painted connections in graphic above - thanx for that i removed the Discovery board and "biept out" all connections, i finally replaced the 541 on the core.... R33 is also stuffed, and it is a 1K network - all right -but solved nothing. i also tryed a second core, that i have (i have a pair of them), i also measured carefully direct on the DAC GND and +5V all are there. I measured DAC-A output aka "pin 0" and i have 0V to Digital Ground > so nothing. I connected +-12V from a doepfer PSU2 - right from the beginning on... and as far as i can say i have not heated the DAC to much while soldering, i made it quick and clean with a Weller Station where i can change the temperature... i stuck a bit... maybe there is something wrong with the inital code (posted above) thx for any tip
  10. since i make midibox right now.... i have started a wiki, about the configuration (CV-Type Unipolar, Bipolar Power Supply) + Jumper Setting in combination with AOUT_NG ssm2164_getting_started
  11. hei. sure i can tell, i have made a picture: i have this LFO screen 4times, and i have also 4 screens for Envelope too (=8x scope displays - that are showing 4x8=32ENV/LFOs - i have 4 Channelstrips - this CV-Application will drive Distortion, ACs Filters...) The same is for Envelope, except that when a Note-sustains - it will hold Position and it is not growing, until note is released... its pretty much the same., the LCD-Clear is triggered with a incoming note-on i have in booth cases the knowledge about -how long is the duty cycle, so i dont need to shift or sync display to left or right, the lines is growing and thats it. but also look @ the video i already posted - in the video it does what it should too (ok there are bugs, and the V-Axis has to scaled from 0-63 to 63-0, and the clear-screen is a problem...) the video:
  12. ja i of course a deep look in programmer and loopa and others --- but dont find it soo easy, i am still new to this task, and to crystalize the information in a environment like a programmer - had not worked, it worked not out most of the time in my life... i need the root, but the root itself -for me- is sooo boring that i cant learn it... i am a bit in reverse engenieering... i know what have to done to get what i want, but the syntax is my problem..... i already have the problems with the "many cleared" pixel per frame.... i have to clear every lfo,cycle or env.trigger 1to8 displays, and pixelwise - it is not working -of course i saw already the lcd-clear mios_lcd_clear(), but that clears all displays - also the 8 that need no update the whole runtime (UI-describtion) the is just confusing, and for me not working, it always sayst that it is a function, and for that, the parameters are not right, and it have to initalize, and its not a struct and this and that... is there no "blank" command, that let do this work the ssd1306 by itself?
  13. ok i got rid of the 32pixel offset, by removing that cmd(0x5c) //////// show WAVE-FORM - S C O P E //////// MUTEX_LCD_TAKE; MIOS32_LCD_DeviceSet(14); APP_LCD_GCursorSet(H,V); // (h, v) set insert Position for Bitmap APP_LCD_Data(1 << ( V % 8 )); MUTEX_LCD_GIVE; now i have to find out a smart way to clear a display
  14. what i noticed MUTEX_LCD_TAKE; //////// CLEAR S C O P E //////// MIOS32_LCD_DeviceSet(14); MIOS32_LCD_Clear(); MUTEX_LCD_GIVE;} will clear all connected displays! not only the selected device, thats bad, because 8 displays are showing static values (describtion of UI) a Horiz Vertic - Position will make it not better: MUTEX_LCD_TAKE; //////// CLEAR S C O P E //////// MIOS32_LCD_DeviceSet(14); APP_LCD_GCursorSet(H,V); // (h, v) set insert Position for Bitmap MIOS32_LCD_Clear(); MUTEX_LCD_GIVE;} and this is the worst (not usable slow), but @ least it dont kill the other displays: MUTEX_LCD_TAKE; //////// CLEAR S C O P E //////// MIOS32_LCD_DeviceSet(14); int ho; int ve; for(ho=0; ho<128; ho++) { for (ve=0; ve<64; ve++) { APP_LCD_GCursorSet(ho,ve); // (h, v) set insert Position for pixel APP_LCD_Cmd(0x5c); // send command "Write RAM" to GLCD APP_LCD_Data(0); }} MUTEX_LCD_GIVE; this code for printing out Pixel is working, but it will shift all other and itself vertically about 32pixel! - what i dont understand: //////// show WAVE-FORM - S C O P E //////// MUTEX_LCD_TAKE; MIOS32_LCD_DeviceSet(14); APP_LCD_GCursorSet(H,V); // (h, v) set insert Position for Bitmap APP_LCD_Cmd(0x5c); // send command "Write RAM" to GLCD APP_LCD_Data(1 << ( V % 8 )); MUTEX_LCD_GIVE;
  15. thx for the testpin hint ... lcds still not working ... cant test them, have to made new cable, but dont have any connectors anymore... this will have to wait.... but got 16xOLEDs working on the stm32f4 (also with the knowledge with the testpin)
  16. my tryings with Bitmap, also are not working well this code: Filterbox-V1.zip // calculate H V Positions V = v * aout[x].lfo[y]; if(V <= 0) { V=0;} if(V >= 63) { V=63;} H = h / time * counter[x][y]; if(H <= 0) { H=0;} if(H >= 127) { H=127;} MUTEX_LCD_TAKE; //////// show WAVE-FORM - S C O P E //////// MIOS32_LCD_DeviceSet(14); // clear screen if ( sync_waiting == 1 ) { int h; int v; for (h=0; h<128; h++) { for (v=0; v<64; v++) { APP_LCD_BitmapPixelSet(bitmap, h, v, 0); }}} APP_LCD_BitmapPixelSet(bitmap, H, V, 1); MIOS32_LCD_DeviceSet(14); MIOS32_LCD_CursorSet(0, 0); MIOS32_LCD_BitmapPrint(bitmap); MUTEX_LCD_GIVE; gave me 8 lines on the display and i did not know why! --- really no clue (had the same result yesterday...) un words of the night: STRUCTS and TYPES.... may it be easy when you are the architect of it, but for me it is horror! damm i hate that structs... where are the simple arrays, code, bam ready, next task...... after 6 ours of trying to come to an end with that structs - i make a end and go to bed ... i hate structs! and som other highlights: specially i wanted to get the bitmap thing to run, these documentation, did not help, and got no results after 6 ours: also the structs are other written... for me logical is for example: typedef struct storage { u8 SWING_16th; u8 SWING_32th; u8 SWING_Switch; } store_t; store_t beat; store_t beat_cpy; here i know what is going on... when using them i just write beat.swing_16th... o r copy them with memcpy by typing beat or beat_cpy and so on.... maybe its easyier to just understand following code (i tryed by my own, but it seems that it cant work with arrays...), to make things more directly - in sense of outputing matrices without converting them (my matrice data is most of the time x-y-z generated), maybe anyone can explain this part more exactly ( special that pointer and bitshifts things, and how to more simplyfy the code, for simple arrays as input - and not some crypted file "con"structs) & alternativly how to adapt it for realtime operation (output Pixel @ position [x][y]) i can break it down to: int line; for(line=0; line<8; ++line) { // count from 0-7 & do 8x following code: APP_LCD_GCursorSet(0,0); // set insert Position for Bitmap APP_LCD_Cmd(0x5c); // send command "Write RAM" to GLCD // calculate pointer to bitmap line u8 *memory_ptr = bitmap.memory + line * bitmap.line_offset; // transfer bitmap int x; for(x=0; x<128; ++x) APP_LCD_Data(*memory_ptr++); }
  17. hei i tryed this code MUTEX_LCD_TAKE; MIOS32_LCD_DeviceSet(14); APP_LCD_Cmd(0x75); // Row APP_LCD_Data(V); APP_LCD_Cmd(0x15); // Column APP_LCD_Data(H); static int abyte = 0; abyte = 1 << ( V % 8 ); APP_LCD_Cmd(0x5C); // Write Pixel APP_LCD_Data(abyte); //MIOS32_LCD_CursorSet(0, 0); //MIOS32_LCD_BitmapPrint(bitmap); MUTEX_LCD_GIVE; but its not workin... got this:
  18. now trying to make it with bitmaps... but that is not easyer, not working.... also the "APP_LCD_Clear();" isnt working. when looking @ http://svnmios.midibox.org/filedetails.php?repname=svn.mios32&path=%2Ftrunk%2Fmodules%2Fapp_lcd%2Fssd1322%2Fapp_lcd.c then i ask myself for what there is a "for loop" with "i" when no is used anywhere?
  19. like this: but in Pixel-Resolution
  20. using the ssd1306 i am learning at the moment the handle of graphical displays... specially the waveform display now i stuckking, i already have X-Y coordinates, and a timline... in theory it is working, it works with Characters... but i need pixels i stuck by writing a single pixel to the display, i want to write a pixel every millisecond, and after the time of the loop (loop point 0) it should clear the display... (APP_LCD_Clear();)) is there a way to directly draw a single pixel, without the must of " changing a bitmap, and print the whole bitmap again..." i can set the courser with: APP_LCD_Clear(); APP_LCD_Cmd(0x75); // Row APP_LCD_Data(V); APP_LCD_Cmd(0x15); // Column APP_LCD_Data(H); but then i have no command to activate a pixel, has it something to do with the write ram >>> APP_LCD_Cmd(0x5C);
  21. aout ng: lre8x2 diverse modules
      • 1
      • Like
  22. i have made a stop motion video, about the soldering the pcb... i have cut it to 6 minutes, so not all stuffed parts are shown, but most of part-groups the music is drumside made with the BLM: haveing more stop motion videos about lre2x8, core, din, mf-ng, and others... coming in future online (when having time to cut and deciding which music track under it...) (made with a lumix g85)
×
×
  • Create New...