- fixed date range to match candlestick, viewing exactly 24 hrs
- fixed data gap
- yesterday's date gets overwritten when switching from
1d
->1w
- reverting timezone selection, too buggy
- nans are getting into time history
- fixed timezone bugs
- making the candlestick div an output of a callback
- timezone not updating
- using scripts only
- add random walk . start at 100, add or subtract %5
- looking for better source of price data
- pushed 0.4.4
- fetching to current time
- separating today from history
- Relaxshi latin percrussion instruments
- dxy indicator - the dollar?
- removing gap logic for now
- manual sync
- refactoring history
- fixed date fetching
- fetching in batch
- querying in batches
- added link to ariagora
- creating ssl cert
- running docker-compose in background. not sure why april keeps loading
- removing cache sizes from production
- worked with Randy to set up audiolizer.ariagora.com
- hyperlinking localhost
- clarification of mounting options
- mounting pwd into container instead of temporary directories
- adding .env instructions
- updating docker-compose instructions
- fixed logo favicon
- removing src mount from production
- adding gunicorn
gunicorn==20.1.0
- looking at umbrel submission procedure
- How to build cross-platform
docker buildx build --platform linux/arm64,linux/amd64 --tag apembroke/audiolizer:0.4.1 --output "type=registry" .
- added LICENSE file
- activating jupytext
- adding jupytext
- running docker in docker:
docker run -it -v /var/run/docker.sock:/var/run/docker.sock docker
- fixed up environment variables
- slimed down image
- slimming down pip packages Trying to conda install the following
RUN source /venv/bin/activate \
&& pip install \
audiogen-p3 MIDIUtil \
dash-bootstrap-components \
&& pip install git+https://github.com/predsci/psidash.git
- dash-daq has a conda-forge recipe
- building Historic-Crypto from conda skeleton
-
multi stage fixes
-
adding bash init
-
keeping environment active
-
correcting conda init
-
switching to named environment audiolizer
-
correcting environment name
-
formatting
-
multi-stage build
-
using conda-pack to slim down images https://pythonspeed.com/articles/conda-docker-image-size/
- dash react tutorial
- reading up on react-dash https://dash.plotly.com/react-for-python-developers
- pushed apembroke/audiolizer:0.4
- added ticker options
- responsive resizing
app.clientside_callback
?
- alternative price data: bitstamp, crypto.com
- fixed data gap
- found price nans
- shrinking RUN command
- compressing docker image
- switching to bootstrap
- adding to current time to include more data
- added csv compression, price files cache limit, initial start date
- adding hourly promo
- added python install instructions, fixed graph
- adding open-dyslexic font
- disabled draggable select
- higher cadence options
- meeting with Randy
- include version number in interface
- arpeggio?
- got date radio buttons working
- adding date range radio options
- adding jupytext
- mounting source into container
- added toggle for price type
- adding docker-compose
- pushing apembroke/audiolizer:0.2
- fixed bug in import
- sample midi
- adding sample midi
- added favicon
- moving into assets
- icon courtesy of SiLVa
- adding screen shot
- ignoring wav and midi
- added cache setting
- filling data gaps
- irig 2 setup
- fixing data gaps
- meeting with Randy
- add floor function to normalize frequencies - accomplished through pitch conversion
- slider that controls modulus on frequency [1, 100] so melody can cycle
- 3 market displays - monthly, weekly, daily - put into a dial - multiple rows
- umbrel as a distribution mechanism - be a good citizen w.r.t. disk space
- estimate footprint of settings (size of files generated)
- icon and screen shots
- umbrel uses tor - is that a problem for coinbase price api? Consider privacy - Can this expose user's ip address?
- scales - ease of use toggle between cmajor and aminor work well together
- how to achieve harmony and melody is in the relationship between major and minor scales
- market data would be like trebble clef (middle c and above) and another market feed as the bass clef (middle c and below) - lower case c is middle c - automated sheet music will help alot
- weekly candles could be base cleff. hourly could be trebble
- allow open/high/low/close selection - this is the same in music
- audiolizer sounds great on the phone!
- btc ledger as data source? umbrel platform gives access to all kinds of btc data...
required reading On the Sensations of Tone - Helmholtz The Study of Counterpoint: From Johann Joseph Fux's Gradus Ad Parnassum
-
pushing docker version
-
looking at html midi players:
-
https://github.com/cifkao/html-midi-player javascript - but how to embed?
-
https://surikov.github.io/webaudiofont/ this is a really beautiful html-only midi system. we could build a dash component around this. That would open the door to custom instruments, etc.
-
added midi download
- changed src to github raw
- a better sample illustrating duration
- added code highlighting
- sample audio
- fixed site name
- added worklog
- documentation improvements
- adding docs
- removed legend, added docs
- you can calculate the % data loaded by comparing list of missing files to those present
- updating instructions
- running from audiolizer subdir
Running without temp directories:
docker run -p 8051:8051 -it apembroke/audiolizer
Running from temp directories:
docker run -v /tmp/audio_files:/home/audiolizer/audiolizer/assets -v /tmp/price_data:/home/audiolizer/audiolizer/history -p 8051:8051 -it apembroke/audiolizer
- setting environment variable
- moving install paths
- creating cache directories
- building docker image
- building docker image from clean git repo
git archive --format=tar --prefix=audiolizer/ HEAD | (cd /tmp && tar xf -)
docker build -t apembroke/audiolizer -f /tmp/audiolizer/Dockerfile /tmp/audiolizer
- adding midi
- tempo in yaml
- added tempo
- midi example
from midiutil import MIDIFile
degrees = [60, 62, 64, 65, 67, 69, 71, 72] # MIDI note number
track = 0
channel = 0
time = 0 # In beats
duration = 1 # In beats
tempo = 60 # In BPM
volume = 100 # 0-127, as per the MIDI standard
MyMIDI = MIDIFile(1) # One track, defaults to format 1 (tempo track is created
# automatically)
MyMIDI.addTempo(track, time, tempo)
for i, pitch in enumerate(degrees):
MyMIDI.addNote(track, channel, pitch, time + i, duration, volume)
with open("major-scale.mid", "wb") as output_file:
MyMIDI.writeFile(output_file)
- allowing date range to load on the fly Check out ableton, midi
8 measures, 4/4 time, push the tempo.. 1440 beats per minute 3 hour candles? 8 beats
- saving historical data in daily files
- added sub range select
- testing start,end playback
- building in docker
- added rests toggle
- merge toggle
- merging by amplitude
- merged pitches, added rests, tone pitch dropdown
- added pitch range slider
- basic dash layout, test beeping, loading price history
- installing requirements