跳转到内容

讨论:LNNBot

来自希顶维基
ColorfulGalaxy留言 | 贡献2025年9月25日 (四) 18:17的版本

Shidinn telegraphic cipher

Raymond's Shidinn telegraphic cipher is celebrating its fifth anniversary this year.

This Python program converts Shidinn alphabet text to LNNBot musicjs sequence.

It may still need to be corrected. ColorfulGalaxy (  ) 2025 9 25  ( ) 18:17 (CST)

import sys
c=' '
rootn=-12
diffn=[]
letters="bpmwjqxynzDsrHNldtgkh45vF7BcfuaoeEAYL62T83V1i"

def printn(n,length=1):
 print("note(",n,",",length,");")

def restn(length=1):
 print("rest(",length,");")

def ejn():
 global diffn,rootn
 while len(diffn)>0:
  printn(rootn+diffn[0],1)
  diffn.pop(0)
  if len(diffn)>0:
   restn(-1)
 rootn=-12
 diffn=[]

def h14():
 print("note(-999,1);") # To be fixed

def b27():
 global diffn,rootn
 rootn=-12
 diffn=[0,2,3,5,7,8,10,12,14,15,17,19,20,22]
 ejn()

def h21():
 global diffn,rootn
 rootn=-12
 diffn=[1,4,6,9,11,13,16,18,21,23,25,28,30]
 ejn()

def t18():
 global diffn,rootn
 rootn=-12
 diffn=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]
 ejn()

rootn=-12
diffn=[0]
ejn()
rootn=-12
diffn=[0]
ejn()
rootn=-12
diffn=[0]
ejn()
h14()


while(c!=''):
 c=sys.stdin.read(1)
 if(c==''):
  ejn();
  b27();
  b27();
  h21();
  h21();
  t18();
  t18();
  h14();
 elif(c in (' ',chr(10),chr(13))): # Space bar
  ejn()
  restn(1)
 elif(c=='b'): # Light
  ejn()
  rootn=2
  diffn=[0,4,7]
 elif(c=='p'): # House
  ejn()
  rootn=1
  diffn=[0,4,7]
 elif(c=='m'): # Door
  diffn=[0,3,7]
  ejn()
 elif(c=='w'): # Mountain
  diffn=[0,4,7,10,15]
  ejn()
 elif(c=='j'): # Hair
  diffn=[0,4,7,10,14,17]
  ejn()
 elif(c=='q'): # Carriage & Boat
  diffn=[0,3,7,10,14,17]
  ejn()
 elif(c=='x'): # Fire & Leather
  diffn=[0,4,7,10,13]
  ejn()
 elif(c=='y'): # Flower
  diffn=[0,4,7,10,14,18]
  ejn()
 elif(c=='n'):
  diffn=[0,3,7,10]
  ejn()
 elif(c=='z'):
  diffn=[0,4,7,10,20]
  ejn()
 elif(c=='D'):
  diffn=[0,4,8,10]
  ejn()
 elif(c=='s'):
  ejn()
  rootn=4
  diffn=[0,4,7]
 elif(c=='r'):
  diffn=[0,3,7,10,14,17,21]
  ejn()
 elif(c=='H'):
  ejn()
  h14() # This function is buggy.
 elif(c=='N'):
  diffn=[0,3,7,10,14]
  ejn()
 elif(c=='l'):
  diffn=[0,2,7]
  ejn()
 elif(c=='d'):
  ejn()
  rootn=5
  diffn=[0,4,7]
 elif(c=='t'):
  ejn()
  t18()
 elif(c=='g'):
  ejn()
  rootn=10
  diffn=[0,4,7]
 elif(c=='k'):
  diffn=[0,4,7,10,14,17,21]
  ejn()
 elif(c=='h'):
  ejn()
  h21()
 elif(c=='4'):
  diffn=[0,5,7]
  ejn()
 elif(c=='5'):
  diffn=[0,7]
  ejn()
 elif(c=='v'):
  diffn=[0,4,6]
  ejn()
 elif(c=='F'):
  ejn()
  rootn=9
  diffn=[0,4,7]
 elif(c=='7'):
  diffn=[0,4,7,10]
  ejn()
 elif(c=='B'):
  ejn()
  b27()
 elif(c=='c'):
  ejn()
  rootn=3
  diffn=[0,4,7]
 elif(c=='f'):
  ejn()
  rootn=8
  diffn=[0,4,7]
 elif(c=='u'):
  diffn=[0,4,8]
  ejn()
 elif(c=='a'):
  ejn()
  rootn=0
  diffn=[0,4,7]
 elif(c=='o'):
  diffn=[0,3,6,9]
  ejn()
 elif(c=='e'):
  ejn()
  rootn=7
  diffn=[0,4,7]
 elif(c=='E'):
  ejn()
  rootn=6
  diffn=[0,4,7]
 elif(c=='A'):
  ejn()
  rootn=11
  diffn=[0,4,7]
 elif(c=='Y'):
  diffn=[0,3,6,11]
  ejn()
 elif(c=='L'):
  diffn=[0,7,10]
  ejn()
 elif(c=='6'):
  diffn=[0,4,7,9]
  ejn()
 elif(c=='2'):
  diffn=[0,4,7,14]
  ejn()
 elif(c=='8'):
  diffn=[0,4,7,12] #C I could not find any reliable source about the C8 chord
  ejn()
 elif(c=='3'):
  diffn=[0,4]
  ejn()
 elif(c=='V'):
  diffn=[0,4,7,11]
  ejn()
 elif(c=='1'):
  diffn=[0]
  ejn()
 elif(c=='i'):
  diffn=[0,4,7,10,14]
  ejn()