Jump to content

TK.

Administrators
  • Posts

    15,261
  • Joined

Everything posted by TK.

  1. Update: the issue will be fixed in Beta42: ui_selected_group = (u8)encoder / 4; // if no track selected in current group anymore, search another (valid) group if( (ui_selected_tracks >> (4*ui_selected_group)) == 0 ) { u8 group; for(group=0; group<SEQ_CORE_NUM_GROUPS; ++group) { if( ((ui_selected_tracks >> (4*group) & 0xf)) != 0 ) { ui_selected_group = group; break; } } } [/code] Best Regards, Thorsten.
  2. I really like the desktop case! MBFM could have looked like this years before w/o my 19" rack fetish at this time... blogged :) Best Regards, Thorsten.
  3. Hi Jmayes, I guess that the interrupt routine consumes too many CPU cycles, so that there isn't enough time to handle other threads, such as USB. But there is much room for optimisation - could you please attach you project in a .zip file, so that I can have a look? (please type "make cleanall" before to remove the binaries) Best Regards, Thorsten.
  4. I can confirm that SpeakJet sometimes behaves very unstable, this is a big limitation of this chip which makes it useless for a real synthesizer. (see also other opinions in this long thread) Thats also the reason why I proposed that it would be better to run the speak synth internally (to get rid of SpeakJet), because the LPC17 microcontroller has more than enough processing power to handle this, and it would open new options. Best Regards, Thorsten.
  5. :) Yes, this is how the algorithm is working. If I wouldn't handle it this way, Track 1 would stay selected even if you want to select another track exclusively I don't want to change this, as the page is essential for people who want to quickly select between tracks in different groups (single-selections) Thanks for giving me the right order of selections! I was able to reproduce the problem. I guess that it's related to the SEQ_UI_CheckSelections() function: ///////////////////////////////////////////////////////////////////////////// // Should be regulary called to check if the layer/instrument/step selection // is valid for the current track // At least executed before button/encoder and LCD function calls ///////////////////////////////////////////////////////////////////////////// s32 SEQ_UI_CheckSelections(void) { if( ((ui_selected_tracks >> (4*ui_selected_group)) & 0xf) == 0 ) ui_selected_tracks = 1 << (4*ui_selected_group); u8 visible_track = SEQ_UI_VisibleTrackGet(); if( ui_selected_instrument >= SEQ_PAR_NumInstrumentsGet(visible_track) ) ui_selected_instrument = 0; if( ui_selected_par_layer >= SEQ_PAR_NumLayersGet(visible_track) ) ui_selected_par_layer = 0; if( ui_selected_trg_layer >= SEQ_TRG_NumLayersGet(visible_track) ) ui_selected_trg_layer = 0; if( ui_selected_step >= SEQ_TRG_NumStepsGet(visible_track) ) ui_selected_step = 0; if( ui_selected_step_view >= (SEQ_TRG_NumStepsGet(visible_track)/16) ) { ui_selected_step_view = 0; ui_selected_step %= 16; } if( ui_selected_step < (16*ui_selected_step_view) || ui_selected_step >= (16*(ui_selected_step_view+1)) ) ui_selected_step_view = ui_selected_step / 16; return 0; // no error } [/code] The first check ensures, that for the case that no tracks are selected in the current group (anymore), the first track of the group will be automatically selected. In MBSEQ V3 this missing check was leading to confusion (somebody thought his sequencer crashed since no values could be changed in the edit page anymore). I will improve the track selection, so that a valid group is determined for the scenario that you gave me! Best Regards, Thorsten.
  6. Thanks! Btw.: Beta42 will provide some new awesome features which haven't been suggested yet! :ahappy: Best Regards, Thorsten.
  7. Hi, I updated the project setup; try it again Best Regards, Thorsten.
  8. Under MacOS you have to install MMJ because the original Java driver supported by Apple doesn't support SysEx: http://www.humatic.de/htools/mmj.htm Best Regards, Thorsten.
  9. It works at my side. Best Regards, Thorsten.
  10. Welcome back! :) I would propose to use Reed Relays instead (see also this picture: http://www.ucapps.de/mbhp/mbhp_doutx1_reed_relays.jpg - the relays are connected to a shift register here, but could also be directly connected to PIC pins of course) Current consumption is low, and no additional components are required. Available at Reichelt (SIL 7271-D 5V) for 1.40 EUR The demo application can be found under: http://svnmios.midibox.org/listing.php?repname=svn.mios&path=%2Ftrunk%2Fapps%2Fexamples%2Fasm%2Fj5_dout%2F A precompiled binary is available under: http://www.ucapps.de/mios_download.html (search for j5_dout) Note that a J5 driver is available which would allow you to access J5 pins from C code as well: http://svnmios.midibox.org/listing.php?repname=svn.mios&path=%2Ftrunk%2Fmodules%2Fj5_io%2F And here the example which explains how to access any pin from C: http://www.ucapps.de/mios_c_pic_pin.html Best Regards, Thorsten.
  11. Hallo Christian, das ist mit der MBSEQ V4 problemlos machbar. Wenn Du das Gehaeuse baust und an einem Nachmittag vorbeibringst, konfiguriere ich Dir die Firmware und wir probieren die MIDIbox unter realistischen Bedingungen aus... :) Gruss, Thorsten.
  12. Just a short question: did you also check that the encoder pins don't touch the heatsinks of the baseboard? Best Regards, Thorsten.
  13. Yes, just connect the module between the MIDI Out of your computer and the MIDI IN of the core which is running the (MIOS8 based) MBLC application. Enable the "MIDIbox Link Forwarding Point", so that events generated by the faders will be tunneled through the MBLC merger. Important: use the default operation mode of MBHP_MF_V3 (Pitchbender events received/sent on channel 1..8), don't enable the faked LC Emulation as this could confuse your DAW. Since MBHP_MF_V3 is a common MIOS8 application, it has to be programmed together with MIOS via MIDI. So: - you need a PIC18F452 with preburned MIOS8 Bootloader V1.2b - once you built the MBHP_MF_V3 module, upload MIOS V1.9g (see also http://www.ucapps.de/mios_bootstrap_newbies.html) - thereafter upload the MBHP_MF_V3 application - thereafter you can configure and test/calibrate the motorfaders with the MBHP_MF V3 tool which is part of MIOS Studio Code upload and configuration has to be done while MIDI IN/OUT of the MBHP_MF V3 are *directly* connected to your computer (the link via MBLC probably won't work) The configuration tool is already part of MIOS Studio 2.2.1 Link to MBHP_MF V3 application: http://www.ucapps.de/mios/mbhp_mf_v3_0.zip Again: the .hex file which is part of this package can't be burned with a PIC programmer, it can only be uploaded via MIDI. The PIC requires the common MIOS8 bootloader instead! Best Regards, Thorsten.
  14. Beta41 is available: MIDIboxSEQ V4.0beta41 ~~~~~~~~~~~~~~~~~~~~~ o Global/Session bookmarks: the first 8 bookmarks are now stored in the root directory, the remaining 8 bookmarks in the session directory o hwcfg/wilba/MBSEQ_HW.V4: F1 button now assigned to bookmark page o added 16 dedicated bookmark buttons which can be assigned in MBSEQ_HW.V4 o Manual Trigger Request: now synchronized to next step o edit page in drum mode: parameter layer is displayed when parameter select button is pressed o added "RATOPC" (restart all tracks on pattern change) option to UTIL->Opt menu [/code] oshidash: the possibility to assign dedicated bookmark buttons makes the request for dedicated Fx buttons obsolete: now you can configure this as a bookmark by yourself Gridracer: due to various reasons it isn't possible to let parameter layer view enabled in drum mode (e.g. to avoid confusion if somebody changes from a common track to a drum track) - therefore the alternative solution to press&hold a parameter layer button Best Regards, Thorsten. P.S.: just for the case that this isn't obvious to you: you can import/export bookmarks from one to another session in the DISK page! :)
  15. I see two potential misconfigurations: 1) you've selected a different MIDI_REMOTE_KEY in your MBSEQ_HW.V4 file 2) your Transposer/Arp bus settings filter out the remote key. Try: MENU->MIDI, let Transposer&Arp selected, let Bus 1 selected (but you could use any bus), ensure that Port/Chn/Lower/Upper are matching with the Port/Chn to which your keyboard sends data, and that the full Lower/Upper range is enabled Of course, I could provide an additional bus for MIDI Remote, but as you can see, this will make things even more complicated. Maybe I should just cancel this feature to simplify documentation ;-) -> this is the result of your (and others) requests... Best Regards, Thorsten.
  16. Hi Jmayes, the SRIO clock frequency can be increased by configuring the J8/J9 pins for push-pull mode, and by using a 74HCT541 buffer as shown in this schematic: http://www.ucapps.de/mbhp/mbhp_core_lpc17.pdf Although this circuit is intended for the upcoming MBHP_CORE_LPC17 module, it will work for STM32 as well. Important: you have to add #define MIOS32_SRIO_OUTPUTS_OD 0 to your mios32_config.h file MIOS32_SRIO routines are located in mios32_srio.c MIOS32_SPI routines for STM32 are located in mios32_spi.c Best Regards, Thorsten.
  17. This isn't specified in the datasheet, but I think that the clock could also start later. This won't work, as the clock is used to generate the audio frequencies. The OPL3 has no inbuilt oscillator. Btw.: why are you asking? If you are planning to build a MBFM, the 14.318 MHz oscillator is required, otherwise the oscillator pitches won't be correctly tuned. Best Regards, Thorsten.
  18. Adding some distortion would be simple as well ;) Yes, there are multiple possibilities: using one or more PWM outputs to generate the sound exactly on the same way like on SpeakJet (and other speech chips) using the inbuilt DAC - it has only a single channel at 10 bit resolution, available at pin J5A.A3 (P0.26) - the result should be more crunchy than on a SpeakJet ;) using an external I2C stereo DAC Maybe the first option isn't that bad, especially since it would allow to generate different sounds in parallel on multiple outputs to simplify the Fx chain Best Regards, Thorsten.
  19. Share your bookmarks! (this phrase will increase the hits caused by google searches dramatically ;) It should be possible to split the bookmarks into local/global ones w/o much effort. Everybody ok with a 8 / 8 split? (it would work for me) Best Regards, Thorsten.
  20. It works! :) MIDIboxSEQ V4.0beta40 ~~~~~~~~~~~~~~~~~~~~~ o added bookmark function: - Press MENU+SELECT to enter the bookmark page - Alternatively this function can be assigned to a dedicated button/LED - inside this menu, press a GP button (shortly) to recall a bookmark - press&hold a GP button for 3 seconds to store a bookmark o the bookmark function stores following UI settings: - Bookmark name - Current page - Group - Tracks - Mutes - Parameter Layer - Trigger Layer - Instrument - Step View - Step - Edit View - Solo/All/Fast/Metronome/Loop/Follow button mode o Bookmarks are stored into the MBSEQ_BM.V4 file, which can be edited with a common text editor. This is the only way to change a bookmark name (5 characters) o it's possible to prevent, that a certain UI parameter will be overwritten by a bookmark. This can (only) be done by editing the MBSEQ_BM.V4 file: Just replace the '+' sign at the beginning of the parameter name by a '-' sign. [/code] Typical configuration slot: [code] #################### Slot 1 Name Def. #################### +Page 16 +Group 1 +Tracks 1000000000000000 +Mutes 0000000000000000 +ParLayer A +TrgLayer A +Instrument 1 +StepView 1 +Step 1 +EditView 0 +Solo 0 +All 0 +Fast 0 +Metronome 0 +LoopMode 0 +FollowMode 0 For reference: the available Pages numbers for the case that you want to enter it directly: typedef enum { SEQ_UI_PAGE_NONE = 0, SEQ_UI_PAGE_MENU = 1, SEQ_UI_PAGE_FX = 2, SEQ_UI_PAGE_STEPSEL = 3, SEQ_UI_PAGE_TRGSEL = 4, SEQ_UI_PAGE_PARSEL = 5, SEQ_UI_PAGE_TRACKSEL = 6, SEQ_UI_PAGE_BPM_PRESETS = 7, SEQ_UI_PAGE_EDIT = 16, SEQ_UI_PAGE_MUTE = 17, SEQ_UI_PAGE_PMUTE = 18, SEQ_UI_PAGE_PATTERN = 19, SEQ_UI_PAGE_SONG = 20, SEQ_UI_PAGE_MIXER = 21, SEQ_UI_PAGE_TRKEVNT = 22, SEQ_UI_PAGE_TRKMODE = 23, SEQ_UI_PAGE_TRKDIR = 24, SEQ_UI_PAGE_TRKDIV = 25, SEQ_UI_PAGE_TRKLEN = 26, SEQ_UI_PAGE_TRKTRAN = 27, SEQ_UI_PAGE_TRKGRV = 28, SEQ_UI_PAGE_TRGASG = 29, SEQ_UI_PAGE_TRKMORPH = 30, SEQ_UI_PAGE_TRKRND = 31, SEQ_UI_PAGE_TRKREC = 32, SEQ_UI_PAGE_MANUAL = 33, SEQ_UI_PAGE_FX_ECHO = 34, SEQ_UI_PAGE_FX_HUMANIZE = 35, SEQ_UI_PAGE_FX_LIMIT = 36, SEQ_UI_PAGE_FX_LFO = 37, SEQ_UI_PAGE_FX_LOOP = 38, SEQ_UI_PAGE_FX_SCALE = 39, SEQ_UI_PAGE_UTIL = 40, SEQ_UI_PAGE_BPM = 41, SEQ_UI_PAGE_OPT = 42, SEQ_UI_PAGE_SAVE = 43, SEQ_UI_PAGE_METRONOME = 44, SEQ_UI_PAGE_MIDI = 45, SEQ_UI_PAGE_MIDIMON = 46, SEQ_UI_PAGE_SYSEX = 47, SEQ_UI_PAGE_CV = 48, SEQ_UI_PAGE_DISK = 49, SEQ_UI_PAGE_ETH = 50, SEQ_UI_PAGE_BOOKMARKS = 51, SEQ_UI_PAGE_INFO = 52, } seq_ui_page_t; [/code] Now it's time to configure my private bookmark file! (Stuart: your proposal for the feature name came at the right moment!) Open for discussion: should the MBSEQ_BM.V4 file be global, or part of a session? Best Regards, Thorsten.
  21. The LPC17 is running *much* faster than an Arduino (although the LPCXPRESSO is cheaper), so that more complex algorithms can be used which should lead to higher audio quality. :) Best Regards, Thorsten.
  22. A summary, open for discussion before the implementation (because some changes will partly affect the existing behaviour): (Echopraxia) MIDI panic function (TK: can be added to the MIDI menu) (Gridracer) drum mode: after a parameter layer change (e.g. Roll) the display shouldn't automatically go back to the trigger view after 2 seconds anymore. Instead a trigger layer button should be pressed to go back to the common drum trigger view. (Nik) optional shuffle for DIN sync out (Bonusplay) TK Proposal: add an option named "restart all tracks on pattern change" (short: RATOPC ;-), in combination with the "synchronized pattern change" function (e.g. to 24 steps) this will solve your scenario. If "synchronized pattern change" is disabled, this option will result into interesting effects (Nuke) synchronize manual trigger to the next step to simplify live usage (oshidash) adding special button/LED functions for FX pages (oshidash) history function - here an alternative proposal: What I'm sometimes missing is the possibility to quickly change between different edit scenarios. E.g. jumping back and forth between "Echo Fx of Track 10", "Directions of Track 1/2/3/4", "Track 6 with Local Loop Mode enabled", "Recording Track 9 while all other tracks except for the drum track is disabled" Or just simply "Track 1 in 303 Edit View", "Track 2 in normal Edit View" Just to give you some examples So, a backward/forward page button is a nice idea, but instead of this I could add something even more useful. How about 16 memory slots to store the current UI settings, such as: current page selected track(s)/group(s) selected parameter and trigger layer selected step view selected edit view selected loop mode selected metronome mode Solo/All/Fast button mutes Handling: - push MENU+SELECT to get a special page which shows the 16 slots (could be alternatively assigned to a dedicated button of course) - Push a GP button to recall a stored configuration - Push a GP button for 2 seconds to store the current configuration The UI configuration slots could be stored globally into a separate .v4 file Any alternative ideas? Best Regards, Thorsten.
  23. wow, great walkthrough! Best Regards, Thorsten.
  24. Yes, and/or with internal sources. You could even forward the modulation result to an AOUT module to use the MBSID as a nice resampling machine ;) See also this manual page: http://www.ucapps.de/midibox_sid_manual_l.html Keyword "modulation matrix menu" Best Regards, Thorsten.
×
×
  • Create New...