I play several instruments, and know a lot of tunes by heart. But for some instruments i’d like to have a music sheet in front of me. When playing new tunes or from my old stash, i need it on paper also. And when i do, I’d like my music nicely printed and in the same style.
So i’ve been using multiple programs and tools to get a result i can live with. I’ve got a huge collection of pipe and folk tunes, but whenever i decide that i’m going to play it more often then i’m going to re-create the music sheet. The musicsheet will be printed and put in a folder. But also as PDF wil be placed in my calibre server, with i use to provide my tablets and phones with a digital version. For automatically generating a PDF musicbook i’ve written some scripts. These PDF’s i can use with my DIY bluetooth page turner.
For my bagpipe tunes i started a long time ago with a dos version of Bagpipe Music Writer. Getting a decent result from your printer was a b*tch. But it was do-able.
Several other programs i’ve tried but few stuck. CelticPipes, Ceol Mor, Bagpipe (French), MusicTex, Lilypond for example. I don’t like to click a symbol and place it on the bars, i like typing .. so i’m a little biased. For midi and printing multi bar/staff music i also used Cakewalk Pro.
I use this mainly for Whistle and skeletal melody lines for Uilleann pipes (no ornaments)
Bagpipe IS possible but hard and ugly.
Multiple voices (harmony) is possible.
Chord names can be places above bars, as well as vocals.
I’ve made scripts with headers and footers to get the same output result.
Creating the music is typing the notes and ornaments in a text file.
Little chords for guitar mandoline are also possible.
# Edit/createing a abc music file
vi musicpiece.abc ; edit with plain editor
abcm2ps musicpiece.abc ; convert to ps
ps2pdf14 Out.ps musicpiece.pdf ; ps convert to pdf
Also EasyABC i use occasionally
Bagpipe music:
I still use Bagpipe Music Writer, but the free Player, which is a full version also. (Long story) Using wine on linux it is usable.
In the past i made a virtual machine which could be controlled by a web form and some CGI scripts. I could paste a “bmw” score in a webform which would be send to the virtual machine, a BMW program would be started, printed the tune as a PDF that was send to the website again.
For a long time i also had a abc music to PDF convertor on my website.
I like the way of writing the tunes .. just type abbreviations of ornaments to print. When you know these you are faster than using a mouse!
There is no way to write harmonies. In the past i’ve been using a pdf editor to merge music bars and align those by hand. I’ve stopped doing that. I just print 2 versions. Sometimes i use MuseScore for harmonies and multiinstrumental sheets
Mhairi Bhan Og with multiple other midi instruments (a test composition I did in 2024)
Way back in 2018 i was playing around with i2c and touch.
CAP1188 Multi touch sensor
I remembered that VGA was using i2c to get information from monitors like brand/type and connection information.
I managed to access the cap1188 up to my Laptop via VGA.
2018 Schematic i used to abuse vga …
The final python code i used to play with the variables and playing sound i can’t find. But below is the test code
#!/usr/bin/python
# NOTE: i did a address scan, now i have 3v3 connected to AD, so probably the address is 0x28 !!
import smbus
bus = smbus.SMBus(1) # 0 = /dev/i2c-0 (port I2C0), 1 = /dev/i2c-1 (port I2C1)
DEVICE_ADDRESS = 0x29
DEVICEx = 0x10
DEVICE_REG_MODE1 = 0x00
DEVICE_REG_LEDOUT0 = 0x1d
#Write a single register
bus.write_byte_data(DEVICE_ADDRESS, 0x1f, 0x3F)
#Write an array of registers
#ledout_values = [0xff, 0xff, 0xff, 0xff, 0xff, 0xff]
#bus.write_i2c_block_data(DEVICE_ADDRESS, DEVICE_REG_LEDOUT0, ledout_values)
while True:
print bus.read_byte_data(DEVICE_ADDRESS,0x10), bus.read_byte_data(DEVICE_ADDRESS,0x11) , bus.read_byte_data(DEVICE_ADDRESS,0x12), bus.read_byte_data(DEVICE_ADDRESS,0x13), bus.read_byte_data(DEVICE_ADDRESS,0x14), bus.read_byte_dat
a(DEVICE_ADDRESS,0x15), bus.read_byte_data(DEVICE_ADDRESS,0x16), bus.read_byte_data(DEVICE_ADDRESS,0x17)
Today i connected the cap1188 to a ESP32 and a piezo buzzer.
ESP FuzzahBuzzerCAP1188CAP1188
/*** Based on below library ***/
/*** Changed pins and added sound ***/
/***************************************************
This is a library for the CAP1188 I2C/SPI 8-chan Capacitive Sensor
Designed specifically to work with the CAP1188 sensor from Adafruit
----> https://www.adafruit.com/products/1602
These sensors use I2C/SPI to communicate, 2+ pins are required to
interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_CAP1188.h>
const int TONE_OUTPUT_PIN = 26;
const int TONE_PWM_CHANNEL = 0;
int freq = 0;
// Reset Pin is used for I2C or SPI
#define CAP1188_RESET 9
// CS pin is used for software or hardware SPI
#define CAP1188_CS 10
// These are defined for software SPI, for hardware SPI, check your
// board's SPI pins in the Arduino documentation
#define CAP1188_MOSI 11
#define CAP1188_MISO 12
#define CAP1188_CLK 13
// For I2C, connect SDA to your Arduino's SDA pin, SCL to SCL pin
// On UNO/Duemilanove/etc, SDA == Analog 4, SCL == Analog 5
// On Leonardo/Micro, SDA == Digital 2, SCL == Digital 3
// On Mega/ADK/Due, SDA == Digital 20, SCL == Digital 21
// Use I2C, no reset pin!
Adafruit_CAP1188 cap = Adafruit_CAP1188();
// Or...Use I2C, with reset pin
//Adafruit_CAP1188 cap = Adafruit_CAP1188(CAP1188_RESET);
// Or... Hardware SPI, CS pin & reset pin
// Adafruit_CAP1188 cap = Adafruit_CAP1188(CAP1188_CS, CAP1188_RESET);
// Or.. Software SPI: clock, miso, mosi, cs, reset
//Adafruit_CAP1188 cap = Adafruit_CAP1188(CAP1188_CLK, CAP1188_MISO, CAP1188_MOSI, CAP1188_CS, CAP1188_RESET);
void setup() {
Serial.begin(9600);
Serial.println("CAP1188 test!");
ledcAttachPin(TONE_OUTPUT_PIN, TONE_PWM_CHANNEL);
// Initialize the sensor, if using i2c you can pass in the i2c address
if (!cap.begin(0x28)){
//if (!cap.begin()) {
Serial.println("CAP1188 not found");
while (1);
}
Serial.println("CAP1188 found!");
}
void loop() {
uint8_t touched = cap.touched();
if (touched == 0) {
// No touch detected
return;
}
for (uint8_t i=0; i<8; i++) {
if (touched & (1 << i)) {
Serial.print(touched); Serial.print("\t");
freq = (i * 100);
ledcWriteTone(TONE_PWM_CHANNEL, freq);
delay(100);
}
}
Serial.println();
delay(50);
}
Finding the right pins or above pinout was the hardest part. The sketch reads the pins binary so value 129 is first and last bit.
Now i have to get the sound sounding a little better and add frequencies and fingersettings to the sketch to get a minimal electronic bagpipe. (V3 it is .. )
While visiting the Ardbeg dristiller on Isle of Islay, i notished a tunebook with CD in the whiskyshop. Tunes for multiple instruments and pipe settings .. interesting! Fraser Shaw, didn’t know who he was. The tunes in the book looked interesting. I bought both .. we will see.
While reading more about him, i learned he was a driving force on the islands when it comes to folk music. Sadly he died by a illness .. far to soon. While on holiday we drove by some places he was know to play. Tunes for whistle with guitar chords and pipe settings. Some tunes are in a complex time measure. I lost the CD but it is on spotify .. favourites: £50 Cashback and Air Chall
While visiting the Kildonan Museum in South Uist, i found a tunebook which was compiled of tunes from a piper named: Calum Campbell.
This oldskool piper wrote some amazing tunes. The book was made after he, his daughter and her two children lost their lives in a heavy storm in 2005. 2005 Was a bad year .. we lost John D Burgess, Martyn Bennett and Gordon Duncan the same year.
On our way home we visited the Morpeth Chantry Bagpipe Museum.
Most of the pipes here where Northumbrian bagpipes and some borderpipes ( even a shuttlepipe )
Our Northumbrian pipes
In the touristy shop i found these books, amoung others.
Last two are Duets/Trios also for different instruments .. nice!
In the past i’ve used a home build Logitech Squeezebox server (as it was called then), Picore player and tried volumio. Picore player has been sitting in my livingroom for ages, but was converted to a Node-Red Dashboard and recently Home Assistant Dashboard. (Has been a dasticz daskboard also)
Today i build another version, smaller and with a screen. Why? .. because of being ‘offline’ or ‘offgrid’ on our holidays. The car we are driving only has a Aux input.
Most of the installation is as mentioned on: https://docs.picoreplayer.org/projects/add-a-display/
I edited /opt/bootsync.sh to get /dev/sda1 mounted persistent use pcp br after editing.
Default user/pass : tc piCore
Controlling the thing is via touch or a app on my phone using wifi hotspot.
Shutting down piCore is done by cutting the power, due to everything being mounted readonly. EXEPT When you are using LMS server installation, which uses a database. But there is a tweak for a shutdown button.
I’m using GPIO 16 because i’ve got a screen connected. Active LOW, means you have to connect a pushbutton/switch between GND and GPIO pin. (nearest Vcc OR Gnd)
I made a sound mixer controller for my applications, a while ago.
Some arduino project laying around on my desk. (OBS controller, Mqtt-sound-and-display-with-mute-acknowledge-button and Octoprint monitor, below that my dusty mixer)
I’m probably make a V2 with new functionality:
Switching applications which are using sound from speakers to headset and vice versa.
I’ve create my own bww/bwm to parsons code convertor. Rest of the website is php, mysql … first one started in 2001 using php3, until php7.
Wow i found a screenshot from one if the first mobile versions!
PARSONS CODE: OMG, you don’t know how long I have been waiting for a search engine to find tunes in my head. I thought about creating some kind of dictionary based on theme notes, or searching through bww files for sequences. What a thrill to find your site. I just hum a tune, use the up, down, repeat letters and… like magic the title is found. You are a genius. I will never be stumped for a title again. Thanks so much, John
Other successes i’ve heard of are: 2 Youtube movies being identified, a nameless bww file and mp3’s
Mail from Dave:
Hiya
My name is Dave Mason. I put a few tunes together a few years ago called "Tummle Yer Wilkies" which, I see, gets mention on your website. However, I see that you're not sure where people can access the tunes.
Well, the book is free to download from https://sites.google.com/site/tummleyerwilkies/home and I hope to have volume 2, "Tummle Yer Wilkies Too!" uploaded in the near future.
Cheers
Dave Mason
Geneva, Switzerland.
NEW - Palm version by Andreas Joebges (updated)
Added stuff changed software
Added parts in booklist and search.
Additions to www.drumscoresearch.org
Many additions by: Chris MacKnight
Palm version by Andreas Joebges
Added index send by : Henning
sat 14 feb: Installed DB on macbumm's site
sun 15 feb: Made some changes, limit search and layout
Removed own collections from DB
Expanded statspage with jig/hornp/march/etc.
mon 16 feb: Imported College of Piping index i got from Ralf .. (thanks!)
Imported Irish Tunes for Warpipe
Added Log, Fixed Members Login for edit purposes
tue 17 feb: Layout, testing new functions
wed 18 feb: Imported Bagpipe Music - John MacFadyen
thu 19 feb: Uploaded some Book Covers,
programmed a export-to-xls function, so you can use the
DB data yourself (bottom of booklist pages)
Imported Gordon Highlanders Vol 1
sat 21 feb: Fixed m?c and l*ken search
Imported Gordon Highlanders Vol 2
Added AKA search
Old search request stays in search field
Added some covers
code cleanup
mon 23 feb: Fixed bookcover popup
Imported Mark Saul Vol I
Uploaded Mark Saul Cover II and changed faulty cover other Vol
Bookinfo added ISBN, Price, etc. Suggestion i got by Email
Uploaded Queens Own Highlanders The Pipers Day
Imported Seaforth Highlanders - Standard Settings
thu 26 feb: DB cleanup
Added Code
Imported Donald MacLeod vol 1 2 and 4
fri 27 feb: 1st editor assigned - Henny Barnhoorn
sat 28 feb: Imported Vol 5 and 6 Donald MacLeod
sun 29 feb: CD Information added
2nd editor - Coline Gerritsen
mon 01 feb: Added CDs .. Thanks Coline
Gordon Highlanders Book 1 checked/added/etc. by Henny .. thanks
CD displaying code changed
Imported Robert Mathieson Book 4 (now over 4000 tunes in DB!)
fri 05 mar: Added CDs
Altered ShowCD Code
sun 07 mar: Imported some books (NOW 50!)
Henny Completed reediting Gordon Highlanders Vol2
Add MP3 clip code in cdinfo
mon 08 mar: Imported book
Fixed image caching for faulty browsers
Search finds composers also
Fixed Menu structure
Added Templates
tue 09 mar: Added link under advanced search - find ALL harmonies. :)
wed 10 mar: Added book with cover + MP3 sample
thu 11 mar: Imported Piob. CD
Added edit icon help
fri 12 mar: Find tunes on CD in beta test .. :)
(click search -> advanced .. enter a keyword, mark the media
checkbox and click search .. CDs found at bottom of page .. :)
sat 13 mar: Imported another filled-in cd-template :)
Added some covers
wed 17 mar: Added 15 Piobaireachd Society Volumes
sat 20 mar: Added 3 CD's
tue 23 mar: Added several books (5166 tunes now!) Thanks John
thu 25 mar: Changed code, checked book, imported book
tue 30 mar: Uploaded covers, edited book (Murray Blairs) and added books
till
tue 06 apr: Uploaded Covers, Added books, Changed code
till
sat 17 apr: Imported some books, added parts to export-excell
(will be in search later)
Henny checked/edited some books
tue 20 apr: Imported books, testing query caching for speed improvement.
(yes getting kindda large .. this thingy)
thu 22 apr: 100! BOOKs!
--missing log--
Added book, covers e.t.c.
sun 11 jul: Added Battlefield Book (thanx Markus)
mon 11 jan: Added 2 books (thanx again Markus)