Does LXR send CC ?
Hi Julian,
I was expecting the LXR to send CC trough the midi port when I edit a voice parameter using the knobs.
For example: I was assuming that if I change the filter cutoff of the BD, the corresponding CC will be send trough midi, and this not seems the case. The txf global settings seems to indicate that CC are capable of beeing transmited (if txf = PCN for example) but I got nothing on the midi out.
Is this feature implemented or am I misinterpreted the manual ? If not, I've some knowledge in micro controller, and I'm not afraid to try to implement it but if you can point me in the right direction / give me some clue it would be really nice.
Sorry to ask because I know you've stopped the development of the LXR-01 but this is my preferred drum machine and there is only one thing missing and I don't want another drum machine.
Regards,
Dimitri
I think I will have to implement a sendMidiCC() function to send cc in various location of the code. I don't want to resend CC received from the midi input to avoid loop but need to update the cc when parameters are change using the frontPanel or when a pattern is played.
Are frontParser_handleMidiMessage() and seq_nextStep() Good entry points candidates ?
Wow, I haven't looked at this code in many years. I still have the LXR and it's been collecting dust on the shelf for a few years :-) I just took a look at the code and I think you are right that frontParser_handleMidiMessage is a good entry point. IIRC the messages from the front might already be in midi format (or something close to midi format) so you may just get away with sending them on thru to the midi
Hey ! Thx for the confirmation rudeog , really kind and appreciated. I feel amazed that this piece of hardware is still revelant and evolutive more than ten years after his release
I will try that asap and report my advancement in this thread if someone is interested.
Next step is being able to setup a dev environment with the old ubuntu release etc (finger crossed).
Okay, here is my advancement so far:
✅ I've successfully set up a dev env using Vagrant, mutable-dev environment with some customization to allow LXR build. ✅ I can build the original firmware without any modifications and upload it using the FIRMWARE.BIN on SD card and everything is OK.
But I got trouble when I modified a single line of code, even if the modification is an irrelevant edit like changing a string or a value, without adding any extra logic to the source code => The build is successful but when I try to flash it with the SD card, the process is stuck with a “File n” on the LCD (I guess it is the “file not found” from the boot loader process).
I work on Linux/Mac OS but got no windows environment at hand so I started using the Vagrant dev env from Mutable Instruments which has an almost similar version of arm-none-eabi-gcc than LXR ( 4.8.3 20131129 (release) [ARM/embedded-4_8-branch revision 205641])
I compile the FIRMWARE.BIN only using the “make firmware” command at the root of the LXR directory ( I don’t use the FirmwareImageBuilder.exe. )
- Am I right to assume it has to do with the length of the cortex/arm firmware that has changed and is not validated during the boot loader/burn process ?
- Is using the FirmwareImageBuilder.exe mandatory or can I simply use “make firmware” ?
- I could try to flash directly the stm32 using a symlink V2 but I’m afraid of erasing the stm32 boot loader and leave with a bricked LXR. Does someone know the exact command line to do it using html link V2 or the memory adress to start to write the firmware ?
Sorry to ask you @rudeog but do you have any advice ? Does you, @SonicPotions and @patrickdowling all work on a Windows env or someone was able to build and burn a firmware using Linux ?
I know it has been long ago but I really like this project and don't want to see it die... any help would be really welcome 🤞 ;)
Here are the link to the repo of my modified Vagrant env: https://github.com/DoItYourSynth/embedded-dev-environment And the Github repo of my custom LXR firmware (No modification for the moment ): https://github.com/DoItYourSynth/LXR
Various sides notes about building the ARM/Cortex boot loader:
I’ve made some changes on a specific branch to try to compile the boot loaders on the vagrant env without success here: https://github.com/DoItYourSynth/LXR/tree/bootloaderCompileWithVagrant (modifications are here)
I cannot compile the AVR boot loader for the moment because of an issue with dependencies :
avr-gcc -funsigned-char -funsigned-bitfields -DF_CPU=20000000UL -Os -mtiny-stack -fno-unit-at-a-time -fno-inline-small-functions -mcall-prologues -fno-jump-tables -fno-move-loop-invariants -ffunction-sections -fpack-struct -fshort-enums -Wall -pedantic -c -gdwarf-2 -std=gnu99 -MD -MP -MF "elmChan/diskIo.d" -MT "elmChan/diskIo.d" -mmcu=atmega644 -o"elmChan/diskIo.o" "../elmChan/diskIo.c"
../elmChan/diskIo.c:176:1: fatal error: opening dependency file elmChan/diskIo.d: No such file or directory
I cannot compile the cortex boot loader for the moment I think because of missing sources :
- C:\stm32DevTools\ArmGcc\lib\gcc\arm-none-eabi\4.6.2\include-fixed
- C:\stm32DevTools\ArmGcc\arm-none-eabi\include
- E:\gewerbe_sonic_potions\git\Drumsynth\mainboard\firmware\UartBootloader_FPU\src
arm-none-eabi-gcc -DSTM32F4XX -DHSE_VALUE=8000000 -DUSE_STDPERIPH_DRIVER -DUSE_STM32F4_DISCOVERY -I"/usr/local/arm/arm-none-eabi/include" -I"C:\stm32DevTools\ArmGcc\lib\gcc\arm-none-eabi\4.6.2\include-fixed" -I"C:\stm32DevTools\ArmGcc\arm-none-eabi\include" -I"/vagrant/LXR/mainboard/LxrStm32_bootloader/Libraries/CMSIS/Include" -I"/vagrant/LXR/mainboard/LxrStm32_bootloader/Libraries/Device/STM32F4xx/Include" -I"/vagrant/LXR/mainboard/LxrStm32_bootloader/Libraries/STM32F4xx_StdPeriph_Driver/inc" -I"E:\gewerbe_sonic_potions\git\Drumsynth\mainboard\firmware\UartBootloader_FPU\src" -Os -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="src/FIFO.o.lst" -c -fmessage-length=0 -MMD -MP -MF"src/FIFO.d" -MT"src/FIFO.d" -mcpu=cortex-m4 -mthumb -g3 -gdwarf-2 -o "src/FIFO.o" "../src/FIFO.c"
In file included from ../src/globals.h:40:0,
from ../src/FIFO.h:39,
from ../src/FIFO.c:37:
/vagrant/LXR/mainboard/LxrStm32_bootloader/Libraries/Device/STM32F4xx/Include/stm32f4xx.h:6911:30: fatal error: stm32f4xx_conf.h: No such file or directory
#include "stm32f4xx_conf.h"
Wow, blast from the past... Back in the day I built the firmware locally on Mac OS or maybe Linux? Haven't touched Windows in decades...
I kind of recall that the FIRMWARE.BIN is a combo of avr + stm32 which the FirmwareImageBuilder splices together so it is technically required, and make firmware should compile and call it. But I don't remember when I last built or updated the firmware so, uh, dunno 🤷♂
Does someone know the exact command line to do it using html link V2 or the memory adress to start to write the firmware ?
This might help: https://github.com/patrickdowling/LXR/blob/flash_in_makefile/mainboard/LxrStm32/Makefile#L163
Seems I was using st-flash (?) but it uses the address LXRSTM32_FIRMWARE_ADDR?=0x08004000 for the firmware, which is confirmed here
I cannot compile the AVR boot loader for the moment because of an issue with dependencies I cannot compile the cortex boot loader for the moment I think because of missing sources
Those makefiles are leftovers from the AVR Studio/Eclipse build environments, so they won't function on their own without a systematic working over to remove all the hard-coded paths and general weirdness etc.
Guess I never made standalone ones to go with the others because they aren't usually required...