Have you ever listened to the gentle sound of a cable car rope? These ropes react to wind, thermal forces, earth movements, birds and human activity, acting as resonating bodies that show almost fascinating, often complex and long-lasting progressions.
We have developed a device ('Seilsender', German for "Rope Transmitter") that records these sounds and forwards them to a streaming server. Our goal is to make as many exciting sound sources as possible accessible and publicly available.
Interested? Then join our project. The instructions below describe how you can set up your own 'Seilsender' and contribute to the diverse collection of sounds.
You can find more information at seilsender.ch.
Pictures: Münsterfähre (cable ferry), Basel, CH / Material ropeway, Stutz-Obsaum, CH / Seilsender Prototype with case open
Project team:
- Initiator: Michel Roth, Composer, Lecturer for composition and music theory, FHNW Academy of Music Basel, Switzerland
- Development: Lars Bachmann, student, FHNW School of Engineering Brugg-Windisch, Switzerland
- Consulting: Prof. Dr. Hanspeter Schmid, Lecturer for Microelectronics and Signal Processing, FHNW Institute for Sensors and Electronics Brugg-Windisch, Switzerland
- Web development: Hannes Barfuss, Research & Development Assistant, FHNW Academy of Music Basel, Switzerland
The basic configuration setup guide describes all steps necessary to start streaming audio with your Raspberry Pi.
Further options like LTE connectivity, more sophisticated audio input with audio hat or flexible power supply with PiJuice are described in the Optional Features section.
Required parts:
Quantity | Part | Type & Product Link |
---|---|---|
1 | Structure-Borne noise sensor | Visaton BS 76 8 Ω, product link |
1 | 3.5mm Mini-Jack Stereo | NEUTRIK NYS231, product link |
1 | Screw Clamp | WOKIN G-Clamp 3", 75 mm, product link |
Required tools:
- Soldering iron
- Solder
- Opt. wire cutters
- Opt. helping hand
- Opt. wire stripper
- Opt. hot glue gun
Proceed as follows:
-
Hot Glue as kink protection
Over time, the cables tend to break right where they enter the case, making the structure-borne noise sensor useless as you can’t install new cables. A drop of hot glue can act as a strain relief. Make sure the surface of the structure-borne noise sensor is clean before applying the hot glue. Roughing up the surface with some sandpaper can also increase the adhesion.
-
Use a wire stripper to remove about 5 mm of insulation off the cables. My cables already had the isolation removed but you might need to remove yours.
-
Tin the end of the cable
Turn on the soldering iron, wait for it to heat up, and set it down on the table without letting the tip touch the table. Hold the cable in one hand and the solder in the other. You can also use a helping hand to keep the cable in place while holding the soldering iron and solder with your hands. Apply a little bit of solder to the soldering iron to improve the thermal contact and set the cable down on top of it. Now touch the solder to the cable until it melts and flows between the strands.
-
Unroll the cable and make sure there are no knots. Then thread the cable through the back cover and the plastic insulator.
-
Apply some solder to the solder tags
Hold the plug in place with helping hands or a vice. Then apply some solder to the longest and shortest solder tags (see image). This will make it easier to solder the wires later. Don’t apply the heat for too long or the plastic parts might melt.
-
Solder the cables to the plug
The polarity of the structure-borne noise sensor doesn’t matter, but I’m going with convention and treat the black wire as ground. Use the helping hand to position the wire on the longest soldering tab. Then solder the wire to the tab.
-
Solder the other wire to the shorter, central soldering tab.
-
Use pliers to crimp the parts of the long tab around the black wire.
-
Pull the plastic insulation over the solder tabs and screw the cover on. The Connector is now done!
-
It is important that the structure-borne noise sensor is firmly mounted to the rope way cable. One way to achieve this is to mount the sensor to a screw clamp. Drill a 4.2 mm diameter hole about 12 mm deep in the top of the clamp. Then use a tap to cut an M5 thread in the hole. Lightly oil the tap and clean the hole in between (metal chips fall into the hole and can cause the tap to break):
-
Saw off an approx. 20mm long piece from an M5 threaded rod or an M5 screw. Clean the sawed-off end with a file. Then screw the threaded bolt into the new M5 thread in the clamp and mount the pickup. Fasten the cable with cable ties for strain relief. Use a knot (e.g. a 'Clove hitch') on the lower cable tie.
Required Raspberry PI and accessories:
Quantity | Part | Type & Product Link |
---|---|---|
1 | Raspberry Pi 4 | Min. 1 GB RAM, Starter Kit with Raspberry Pi 4 Model B, Case, USB-C Power supply (5V, 3A) , min. 16 GB MicroSD Card, product link |
1 | USB Sound Card | UGREEN 30724, product link |
Peripherals to setup your Raspberry Pi
- Micro HDMI to Standard HDMI cable (to connect your Raspberry Pi to the monitor), product link
- Monitor
- Keyboard
- Mouse
- Internet connection for your Raspberry Pi (Ethernet or Wi-Fi)
Required additional equipment:
- PC with internet connection
- Micro-SD card adapter
- Insert the Micro-SD card in your Micro-SD card adapter and connect it to your PC.
- Login on Windows with admin Credentials ( 'Raspberry Pi Imager' runs best in an account with admin credentials)
- Download 'Raspberry Pi Imager' from here: https://www.raspberrypi.com/software/
- Install the downloaded 'Raspberry Pi Imager' and run the 'Raspberry Pi imager'
- Select the Raspberry Pi OS (32 Bit).
- Select the connected Micro-SD card
- Click 'Write' button an confirm overwriting the Micro-SD card (Double-check that you selected the right card as all of it’s contents will be deleted). This can take several minutes.
- When finished, close 'Raspberry Pi Imager' and remove SD-Card.
Warning: The Raspberry Pi has an exposed PCB and can be damaged by electrostatic discharge. Always touch one of the connector’s metallic housings before handling the Pi or wear an ESD wristband.
The easiest way to set up the Raspberry Pi is to connect a mouse, keyboard and monitor. If you use a Raspberry Pi 4, you’ll need a micro HDMI to HDMI adapter (cable) to connect the monitor. The Raspberry Pi 2&3 have a full size HDMI connector and don’t require an adapter, just a normal HDMI cable.
- Install the micro-SD card on the slot on the back of your Raspberry Pi
- Connect the mouse and keyboard to any USB port on the Raspberry Pi.
- Connect the monitor with the 'Micro HDMI to Standard HDMI cable' to any HDMI port of your Raspberry Pi.
- For these next steps, the Raspberry Pi needs internet access. If you do not want to use Wi-Fi, connect an ethernet cable to the Raspberry Pi for internet access.
- Plug in the power supply.
-
If everything is connected, switch on the Raspberry Pi. After a few seconds, the Welcome Wizard starts. If nothing happens, try to use the other HDMI port of your Raspberry Pi.
Click 'Next' to start the wizard. The welcome wizard will guide you through the most important settings of your Raspberry Pi. Follow the instructions on the Screen.
-
'Set Country' dialog
Country and language selection should correspond with your keyboard layout. We recommend ticking checkbox 'Use English language'. A wrong keyboard layout can switch out certain characters.
-
- Enter a username
The examples in this manual were all carried out with the user 'seilsender'. It may be easiest for you to use the user 'seilsender' as well. - Untick the “Hide characters” checkbox to see if your password was entered correctly. Enter your new password twice and press Enter.
- Important: Remember your Raspberry Pi username a password, you will need them later! Username and password are case sensitive.
- Enter a username
-
'Select Wi-Fi Network' dialog: The system searches available Wi-Fi Networks.
-
If you want to connect via ethernet cable, press 'Skip', else select the desired Wi-Fi Network, press 'Next and enter your Wi-Fi password.
Note: At this point, the keyboard layout is not yet set, so entering the password may be a little tricky. Untick 'Hide Characters'. -
The next step is to update the software. This may take a few minutes. Please be patient…
-
Click 'Restart' to reboot your Raspberry Pi.
-
Hint: If you want to start the welcome wizard again, open a console window an enter
sudo piwiz
- Open the Menu in the top let corner and navigate to Preferences -> Raspberry Pi Configuration.
- 'Interfaces' tab: Turn on SSH (opt.), VNC and I2C
- 'Localisation' tab / Set Keyboard: Check if your keyboard layout is correct (Example for Swiss German Keyboard)
- 'Display' tab: To configure the display size used later by VNC, select a moderate Headless Resolution (for example 1024 x 768). A higher resolution will later require more bandwidth and computing power. You can also change this value later if you run into any problems.
- After changing Headless Resolution, you will be asked to reboot, confirm to reboot.
VNC is used to remotely manage your Raspberry Pi via internet connection. VNC-Server is already pre-installed on your Raspberry Pi. All you need additionally is a 'Real VNC' account and a 'VNC Viewer' on your PC.
Create a VNC account if you don't already have one:
- Start the web browser on your PC an go to https://manage.realvnc.com/en/ and enter your e-mail address.
- Create a 'VNC connect' account following the instructions (select 'personal use'.)
Important: Remember your 'VNC connect' credentials, you will need them later! - Activate 'HOME' edition of VNC Connect
Setup VNC on your Raspberry Pi
- On your Raspberry Pi Desktop, Click the blue VNC logo in the top right corner and Click 'Sign in':
- Sign in with your 'VNC connect' credentials and follow the instructions.
- Enter an additional VNC password for this device:
- Important: Remember your VNC password, you will need it later to access your Raspberry Pi
- On the summary tab, it is possible to enter an individual name for VNC (makes in easier if you have more than one device within VNC connect)
- Click 'Apply' to finish setup
- Hint: There is no easy way to log off from VNC Connect. If necessary, open a console Window on your Raspberry pi with clicking the black button in the top left and enter
sudo rm /root/.vnc/config.d/vncserver-x11.d/CloudCredentials.bed
.
Afterwards, the 'Sign In' option is available on den VNC main menu.
Install VNC Viewer on your PC:
- Download VNC Viewer using https://www.realvnc.com/en/connect/download/viewer/ and install it.
- Open VNC Viewer sign with your 'VNC connect' credentials.
- Then select your team, you and double-click on the Raspberry Pi on the right side to connect. You’ll need to enter your VNC-Password you defined during VNC Setup.
- After you are connected, you can now control the Raspberry Pi via the Internet and VNC from your PC. You will no longer need a dedicated keyboard, mouse and monitor to access your Raspberry Pi.
We recommend you use VNC from this point on to remotely configure your Raspberry Pi.
To stream your recordings to the Seilsender-Website, you have to apply for an official Streaming-Id (Mountpoint) and a password. Please contact http://seilsender.ch/ to get further information.
Important: Keep your Streaming-Id (Mountpoint) and a password in a safe place
DarkIce records audio from an audio interface (e.g. sound card), encodes it and sends it to the IceCast streaming server.
-
Open a console Window on your Raspberry Pi with clicking the black button in the top left.
-
Install DarkIce with the following command:
sudo apt-get install -y darkice
-
DarkIce needs a configuration file containing all necessary settings. Create a subdirectory and change to the new directory:
mkdir darkice
cd darkice
-
Then we download the two templates of the config files:
wget https://raw.githubusercontent.com/LarsBachmann/Seilsender/main/darkice/darkice.cfg
presse Enter
wget https://raw.githubusercontent.com/LarsBachmann/Seilsender/main/darkice/launch_darkice.sh
press Enter. -
Type
ls
and press enter, you should only see the two filesdarkice.cfg
andlaunch_darkice.sh
.
-
The file launch_darkice.sh is a simple script to launch DarkIce, but it must be made executable first:
sudo chmod 777 launch_darkice.sh
-
If you now type
ls
again, the launch script will now appear in green color, indicating that it is an executable file.
-
Open the DarkIce configuration file with Nano (a command line editor) to set your mountpoint and a password:
nano darkice.cfg
-
Move down with arrow keys (no mouse) to the appropriate section and set your mountpoint and password (red frame). Optionally, you can set the parameters 'name' and 'description' (parameters are shown when life-streaming your recordings with IceCast).
-
Save configuration file with CTRL+O, then press Enter to confirm filename and exit Nano editor with CTRL+X.
-
The configuration of DarkIce is finished. Now test if everything is working:
- Plug in the USB soundcard to the Raspberry Pi and connect the structure-borne noise sensor to the microphone input (red socket) of the soundcard
- Type
darkice -c ./darkice.cfg
into the console. DarkIce will start streaming:
- The warning 'Could not set POSIX real-time scheduling...' can be ignored.
- Open the URL https://streamout.seilsender.ch:8443/ on your PC and check if your stream is listed:
- Click the play-icon below your mount point. You should hear the sound your structure-borne noise sensor is recording. Please note that there can be a few seconds of delay.
- Plug in the USB soundcard to the Raspberry Pi and connect the structure-borne noise sensor to the microphone input (red socket) of the soundcard
-
To stop streaming with DarkIce, press CTRL+C in the console-window.
To start DarkIce automatically on boot, integrate the script 'launch_darkice.sh' into startup procedure:
- Use the command
pwd
to display the path to the launch_darkice.sh script and copy it by marking it with the mouse, right clicking and selecting "Copy".
- Open the system-wide crontab with Nano editor
sudo nano /etc/crontab
- Move down with arrow keys (no mouse) to the end of the crontab file
- Add the following line to the file:
@reboot root /bin/sudo -u <USER> <PATH>/launch_darkice.sh
- Replace
<USER>
with the username you chose and<PATH>
with the path you just copied by moving the cursor to the correct spot, right clicking and selecting "Paste" (Example:@reboot root /bin/sudo -u seilsender /home/seilsender/darkice/launch_darkice.sh
). - Also add the follwing line which will reboot the Raspberry Pi every day at midnight.
0 0 * * * root /sbin/shutdown -r now
- It should look similar to this:
- Save with CTRL+O, then press Enter to confirm filename and exit Nano editor with CTRL+X.
- To test, reboot the Raspberry Pi with typing the command
reboot
or use the Menu (top left corner) > Logout > Reboot. - DarkIce should start automatically after about a minute. Open the website https://streamout.seilsender.ch/ on your PC to see if your stream shows up.
- If you want to stop darkice manually, open a console and enter
sudo killall darkice
Congratulation, your Seilsender is now ready to use.
The rope transmitter can be supplemented with various options. We recommend to realise at least the weatherproof housing.
Required parts:
Quantity | Part | Type & Product Link |
---|---|---|
1 | LTE-Stick | Huawei E3372h-320, product link |
1 | Data SIM card | Region specific, in Switzerland e.g. 'digitec iot Daten Flat, 30 Tage unlimitiert 10 Mbit/s', product link |
If there’s no Wi-Fi or Ethernet available, you can use an LTE USB stick to connect to the cellular network. For this guide I used the Huawei LTE-Stick E3372h-320, but other sticks should work about the same.
- Open your LTE-Stick and make your Data SIM card ready and insert it
- Important: Make sure that the contacts of your Data SIM card are oriented towards the LTE-Stick
- Connect the LTE Stick with an USB-Port on your PC.
- Proceed according to the instructions for your LTE-Stick. Typically, a configuration wizard starts automatically. If not, open http://192.168.8.1 in your browser. Follow the instructions in the wizard. Make sure that SIM PIN entry is disabled.
- Disconnect your PC from the internet (Wi-Fi, Ethernet cable) and check if you have internet access via LTE Stick.
- Test with Raspberry Pi
- Open a console and enter
ip route
.
There should be one route listed beginning with 'default via 192.168... ' with 'dev wlan0' (if your Raspberry Pi is connected to the internet via Wi-Fi) - Insert your LTE-Stick into any free USB-Port of your Raspberry Pi
- Reboot (enter in the console
reboot
) - After reboot, open console again and enter
ip route
. Now, there should be two routes beginning with 'default via 192.168... ', one with 'dev wlan0' and an new one with 'dev eth1'.
- Open a console and enter
Required parts:
Quantity | Part | Type & Product Link |
---|---|---|
1 | Cable Gland | M20x1.5, product link |
1 | Seal Insert | 3D-Print, NinjaFlex TPE, 3D model download link, File 'seal_insert.stl' |
1 | Sealing Washer | 3D-Print, NinjaFlex TPE, 3D model download link, File 'seal_washer.stl' |
1 | Universal Case | Hammond 1554TGY, 180/119/89 mm (L x W x H), product link |
1 | Mounting Frame | 3D-Print, PETG, 3D model download link, File 'Mounting plate.stl' |
1 | RPI Mounting Kit | Raspberry Pi mounting kit, four M2.5 10-mm spacer bolts, screws and nuts, product link |
4 | Screw M3 x 10mm | PAN head screw, M3, 10mm, product link |
All 3D-printing files (STL files) are available for download. If the seal insert needs to be adapted, the Fusion 360 file is also available.
-
Both the cable for the USB-C power-supply and the microphone cable with the 3.5mm Mini-Jack need to pass through the cable gland without removing the plugs. To make this possible, we print a halved sealing with a flexible filament (NinjaFlex TPE). We also print the nut to fix the cable gland in the universal case.
-
Drill a 20 mm hole into the universal case using a peeling drill:
-
Assemble the cable gland with the cables. Guide the cable through the seal and fit the cable gland.
-
To fix the Raspberry Pi in the universal case, we 3D print a mounting frame. Assemble the Raspberry Pi into the case. The following 3D-Model shows you how to:
The microphone input of the USB sound card from the basic configuration is not very sensitive, thus recordings of quiet cable car ropes become weak and partly noisy. The audio HAT 'IQaudio Codec Zero' has an input gain of up to 30 dB and is therefore also suitable for weaker microphone signals.
Quantity | Part | Type & Product Link |
---|---|---|
1 | IQaudio Codec Zero | Audio HAT for Raspberry Pi, DA7212 codec, product link |
- To avoid conflicts, it is recommended to disable the internal sound card of the Raspberry Pi (affects any audio playback).
- Shutdown your Raspberry Pi using the command
poweroff
- Disconnect your Raspberry Pi from any power supply.
- Remove USB-Audio card if connected.
- Mount the HAT 'IQaudio Codec Zero' on the headers of the Raspberry Pi.
- Power on your Raspberry Pi and open a console window.
- List the recording devices to get the correct card-number
arecord -l
- Get the preconfigured Alsa settings (mixer controls)
git clone https://github.com/iqaudio/Pi-Codec.git
- Load the configuration file, replace the number at the end of the command with the card number identified with arecord above
sudo alsactl restore -f Pi-Codec/IQaudIO_Codec_StereoMIC_record_and_HP_playback.state 2
- Start AlsaMixer to configure the audio levels
alsamixer
- Press F6, select 'IQaudIOCODEC' and press Enter
- Press F4 for capture settings, move with the cursor to 'Mic 1' and set the level with Up key to the min, then move to 'Mic 2' and set the level to the max (we unly use mic2).
- The record level can be adjusted anytime with alsamixer.
- If F5 is pressed, almost all codec parameters can be adjusted (see codec data sheet, link).
- Quit AlsaMixer with ESC key and
reboot
- Test: DarkIce runs now with the Audio HAT 'IQaudio Codec Zero' with internal microphone. Open the URL https://streamout.seilsender.ch/ on your PC and check if your stream is listed and playing.
Connect your structure-borne noise sensor with the 3.5mm jack, the mic source will switch automatically. - Important: Depending on the place of use, the input sensitivity of the microphone input must be adjusted. To display the level of the stream, for example, go to the website https://p-node.org/vumeter/ and enter the URL of your stream (e.g. https://streamout.seilsender.ch/Seilsender-005).
- The level display shows 0dB at maximum level (full scale). Ideally, the recording level should be as high as possible, but should never reach 0dB, otherwise strong signal distortions will occur (clipping).
The PiJuice HAT is a very helpful add-on if you want to use your Raspberry Pi in an environment without a reliable power grid available.
The built-in battery can, for example, bridge power failures and, in the event of longer power failures, the Raspberry pi can shut down properly and restart later when the power supply is restored.
Warning: There is an unresolved conflict beteween the PiJuice an the IQAudio HAT.
Required parts:
Quantity | Part | Type & Product Link |
---|---|---|
1 | Power Management Board | PiJuice HAT, includes 4x Mounting posts attached to PiJuice, 8x mounting screws (4 are already assembled to the board), product link |
- Open a terminal window and type:
sudo apt-get install -y pijuice-gui
- Restart your Raspberry Pi using the command
reboot
The most important settings are described below. Detailed information about the configuration of the PiJuice HAT can be found on PiJuice GitHub (Link).
- Open the PiJuice configuration menu with clicking on the PiJuice Icon, then click on 'Configure HAT':
- To configure the buttons on PiJuce, set the options in the button tab as follows:
- The hardware watchdog allows the system to restart automatically if no heart beat is detected. In the tab 'System Task', set time to 5 minutes:
- Note: At shutdown pijuice_sys.py disables the watchdog. Normally the watchdog is only active when the PiJuice service (pijuice_sys.py) is running and the watchdog is enabled. If you want the system to restart automatically after an (accidental) shutdown, you must comment out the deactivation of the watchdog during shutdown in pijuice_sys.py (Link).
- Stop system if charge level is below 'Minimum charge:
- Press 'Apply' and enter
reboot
- PiJuice is now ready to use.
With PiJuice, the Raspberry Pi can be shut down and started up again in a time-controlled manner. If this function is to be used, the real-time clock (RTC) must be set.
- If you have an internet connection, system time will automatically be synched after boot and this will also sync with the RTC time.
- Check whether the system time has been set correctly:
- After a restart, the system time must be automatically fetched from the RTC. Configuration:
- Open the auto-start scrip rc.local with the Nano editor:
sudo nano /etc/rc.local
- Move down with arrow keys (no mouse) to the end of the file.
- Add the following line to the file:
sudo hwclock -s
It should look like this:
- Save with CTRL+O, then press Enter to confirm filename and exit Nano editor with CTRL+X.
- Open the auto-start scrip rc.local with the Nano editor:
This work is licensed under a Creative Commons Attribution 4.0 International License.