Axoloti Entry: Workshop notes Date: Sun Jan 12 15:09:49 CET 2014 http://beta.etherpad.org/axoloti git clone git@github.com:JohannesTaelman/AxoStudio.git cd AxoStudio git checkout newgui apt-get install netbeans # + install Maven plugin inside netbeans Open AxoStudio directory in netbeans Compile + run # firmware install AxoStudio/chibios use dfu-util (not dfutool!) dfu-util -d 0483:df11 Entry: Fixes / ideas / features Date: Sun Jan 12 15:50:49 CET 2014 - README: install - midi learn - qemu - chibios git submodule - return = select object Entry: Installin Maven Date: Sun Jan 12 16:41:57 CET 2014 The main project file is pom.xml, using Apache Maven in Netbeans. need maven to interprete the POM netbeans -> tools -> plugins -> settings: enable all available plugins -> select maven Maven Version: 4.11.1 date: 7/28/11 Source: NetBeans Distribution Homepage: http://www.netbeans.org/ Plugin Description NetBeans IDE support for Apache Maven. Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. To learn more about Apache Maven, visit What is Maven? page. The IDE support includes own project type entirely based on Maven's medatata, code completion for Maven's project files, integration with other tools in the IDE etc. Entry: DfuSe (DFU with ST Microsystems extensions) Date: Sun Jan 12 17:45:17 CET 2014 http://dfu-util.gnumonks.org/dfuse.html dfu-util -d 0483:df11 -a 0 -D ch.bin --dfuse-address 0x08000000 Entry: Notes Date: Tue Jan 14 21:28:41 CET 2014 - maak alle C functies static inline in .h, en #include in patch ipv. link als library. compiler zal dan beslissen of ie gaat inlinen of niet. gebruik een macro voor het "static inline" deel zoals #ifndef AXO_INL #define AXO_INL static inline #endif dan kan je de dspstuff.h later nog omzetten naar een dspstuff.c voor aparte compilatie indien nodig: file dspstuff.c: #define AXO_INL // turn off "static inline" #include "dspstuff.h" - static inline functes ipv macros waar mogelijk: MTOF, SINE2TINTERP, HANNING2TINTERP. seriously, nu is het moment! je verliest hierbij geen efficientie, en de code wordt een hoop meer leesbaar als er geen macros in staan. i.e. ik lees veel liever mtof(a,&b) dan MTOF(a,b) dit lijkt onbelangrijk, maar in de tweede kan ik niet zien wat er gebeurt. in de eerste weet ik dat "a" niet overschreven wordt, en "b" waarschijnlijk wel. als b een locale variable is worden de & en * operaties gewoon weggeoptimaliseerd na inlining. - de "html in C code" is eigenlijk niet zo erg als je had laten uitschijnen. zolang je "functionality" scheidt van "binding". ik bedoel: maak voor elk .xml object een C functie, en gebruik de xml enkel voor connectiviteit tussen (inline) C functies. je doet dit al in grote mate. ik weet dat je een hoop hebt geinvesteerd in de patcher, maar ik denk dat de bulk van signal processing routines uiteindelijk ook stand-alone hun nut gaan hebben. best om die laag in je interface clean te houden. - definieer al je state data als lokale variabelen in je main loop function, niet als globals. dat geeft meer mogelijkheden tot optimalisatie. Entry: ant Date: Tue Jan 21 19:14:15 CET 2014 ant -Dplatforms.JDK_1.6.home=/usr/local/lib/jdk1.7.0_51 ant -Dplatforms.JDK_1.6.home=/usr/lib/jvm/java-7-openjdk-amd64 Entry: classpath Workarounds Date: Sun Feb 9 15:54:53 CET 2014 cd dist unzip ../lib/simple-xml-2.7.1.jar # once unzip ../lib/jssc.jar # once unzip Axoloti.jar ; rm Axoloti.jar ; zip -r Axoloti.jar . # every build Entry: linux install guide Date: Fri Sep 12 22:07:09 CEST 2014 https://www.writelatex.com/1377879nvghvf#/3419846/ Entry: wmname LG3D Date: Fri Sep 12 22:45:53 CEST 2014 To make java ui behave under xmonad, fake the name: wmname LG3D [1] http://thinkingeek.com/2012/01/24/fix-java-gui-applications-xmonad/ Entry: codec Date: Sun Sep 28 18:44:24 CEST 2014 [1] http://www.analog.com/static/imported-files/data_sheets/ADAU1961.pdf Entry: Mining object defs Date: Sun Oct 5 14:14:45 CEST 2014 Lot's of objects. How to quickly get to their code? Welcome to Racket v6.1. racket@> (require xml) racket@> (read-xml (open-input-file "/home/tom/git/AxoStudio/objects/filter/lp1.axo")) racket@> (xml->xexpr (document-element (read-xml (open-input-file "/home/tom/git/AxoStudio/objects/filter/lp1.axo")))) However, this doesn't unpack Cleaner: (require xml) (define f "/home/tom/git/AxoStudio/objects/filter/lp1.axo") (define x (read-xml (open-input-file f))) (define s (xml->xexpr (document-element x))) Using racket path operations (require xml/path) (se-path*/list '(p) some-page) (se-path*/list '(code.srate) s) (define l (se-path*/list '(code.srate) s)) (map cdata-string l) This is silly. No standard way to map CDATA to string? (define (extract-cdata data) (let* ([string (cdata-string data)] [matches (regexp-match #rx"" string)]) (list-ref matches 1))) [1] http://stackoverflow.com/questions/2784183/what-does-cdata-in-xml-mean [2] http://docs.racket-lang.org/xml/index.html Entry: Compiler errors Date: Wed Apr 29 15:02:29 EDT 2020 PATH=/net/10.1.3.2/vol/2/panda/home/tom/pub/git/axoloti/platform_linux/bin:/home/tom/.nix-profile/bin:/home/tom/.nix-profile/bin:/home/tom/bin:/etc/net/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games /net/10.1.3.2/vol/2/panda/home/tom/pub/git/axoloti/env/test-env.mk:35: *** Unexpected compiler version: arm-none-eabi-g++ (GNU Tools for ARM Embedded Processors 6-2017-q2-update) 6.3.1 20170620 (release) [ARM/embedded-6-branch revision 249437] Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE., expected 7-2018-q2. Stop. https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads/7-2018-q2-update https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2 I've unpacked that into axoloti/gcc-arm-none-eabi-7-2018-q2-update and added this to the top of Axoloti.sh: export PATH=$(readlink -f $(dirname $0))/gcc-arm-none-eabi-7-2018-q2-update/bin:$PATH